apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
kubelet:
config:
maxPods: 110 # 노드당 최대 Pod 수
clusterDNS: # 클러스터 DNS 서버
- 10.100.0.10
clusterDomain: cluster.local
evictionHard: # 리소스 부족 시 Pod 퇴거 임계값
memory.available: "100Mi"
nodefs.available: "10%"
flags:
- "--node-labels=location=onprem"
- "--register-with-taints=dedicated=hybrid:NoSchedule"
# 1. SSM 하이브리드 활성화 생성 (AWS 콘솔 또는 CLI)
aws ssm create-activation \
--default-instance-name "hybrid-node" \
--iam-role service-role/AmazonEC2RunCommandRoleForManagedInstances \
--registration-limit 10
# 출력: ActivationId, ActivationCode
# 2. 온프레미스 서버에서 SSM Agent 설치 및 등록
sudo amazon-ssm-agent -register \
-code "activation-code" \
-id "activation-id" \
-region "ap-northeast-2"
# 3. SSM Agent 시작
sudo systemctl start amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent
# nodeadm에서 SSM 모드 사용
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
hybrid:
ssm: true
ssmActivationId: "activation-id"
ssmActivationCode: "activation-code"
kubelet ----TLS 연결----> EKS API Server
| |
|-- CA로 서버 인증서 검증 --|
| |
|<-- 클라이언트 인증서 발급 -|
# EKS 클러스터에서 CA 인증서 가져오기
aws eks describe-cluster --name my-cluster \
--query "cluster.certificateAuthority.data" \
--output text | base64 -d > ca.crt
# CA 인증서 내용 확인
openssl x509 -in ca.crt -text -noout
# 1. kubelet 서비스 상태 확인
sudo systemctl status kubelet
# 2. kubelet 로그 확인
sudo journalctl -u kubelet -f
# 3. 네트워크 연결 테스트
curl -vk https://<eks-api-endpoint>:443
# 4. DNS 해결 확인
nslookup <eks-api-endpoint>
# 5. 방화벽 규칙 확인
sudo iptables -L -n | grep 443
# 6. nodeadm 상태 확인
sudo nodeadm status