[EKS] EKS: Public-Public EKS 클러스터 - 5. 워커 노드 내부 확인
서종호(가시다)님의 AWS EKS Workshop Study(AEWS) 1주차 학습 내용을 기반으로 합니다.
TL;DR
이전 글에서는 kubectl과 AWS CLI로 바깥에서 클러스터 구성 요소를 확인했다. 이번 글에서는 SSH로 워커 노드에 접속하여 안에서 확인한다.
- OS: AL2023 (Amazon Linux 2023) 확인
- CRI: containerd 버전,
crictl컨테이너 목록 - kubelet: 서비스 상태, 설정 파일, kubeconfig
- 인증서: CA 인증서 경로,
describe-cluster의certificateAuthority와 비교 - 네트워크: VPC CNI가 만든 ENI, iptables 규칙
- 온프레미스 비교: 경로·설정 방식이 어떻게 다른지
들어가며
온프레미스에서는 배포 후 마스터/워커 노드에 SSH로 접속해서 kubelet, etcd, 인증서, CNI 설정 등을 직접 확인했다. EKS에서 컨트롤 플레인은 AWS 관리 영역이라 접근할 수 없지만, 워커 노드는 일반 EC2 인스턴스이므로 SSH로 접속할 수 있다.
SSH 접속
노드 IP 확인
먼저 워커 노드의 공인 IP를 확인한다. AWS CLI로 조회하거나 EC2 콘솔에서 직접 확인할 수 있다.
aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,PrivateIPAdd:PrivateIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output table
------------------------------------------------------------------
| DescribeInstances |
+-------------------+---------------+-----------------+----------+
| InstanceName | PrivateIPAdd | PublicIPAdd | Status |
+-------------------+---------------+-----------------+----------+
| myeks-node-group | 192.168.2.21 | 16.184.33.124 | running |
| myeks-node-group | 192.168.3.96 | 13.209.87.139 | running |
+-------------------+---------------+-----------------+----------+
NODE1=16.184.33.124
NODE2=13.209.87.139
접속 확인
ping으로 네트워크 도달 여부를 먼저 확인한다. 배포 단계에서 확인한 myeks-node-group-sg 보안그룹이 현재 공인 IP에서 오는 모든 트래픽을 허용하고 있으므로 ping이 통과해야 한다.
ping -c 1 $NODE1
PING 16.184.33.124 (16.184.33.124): 56 data bytes
64 bytes from 16.184.33.124: icmp_seq=0 ttl=116 time=7.085 ms
--- 16.184.33.124 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.085/7.085/7.085/nan ms
ping이 실패한다면 실습 환경의 공인 IP가 변경된 것일 수 있다. 트러블슈팅: 공인 IP 변경을 참고한다.
SSH 접속
ssh -o StrictHostKeyChecking=no -i ~/.ssh/my-eks-keypair.pem ec2-user@$NODE1 hostname
ip-192-168-2-21.ap-northeast-2.compute.internal
AL2023 기반 EKS 노드의 기본 사용자는 ec2-user다.
참고:
StrictHostKeyChecking=noSSH 클라이언트는 처음 접속하는 서버의 호스트 키를
~/.ssh/known_hosts에 기록하고, 이후 접속 시 키가 일치하는지 확인한다.StrictHostKeyChecking=no로 설정하면 호스트 키 확인 없이 바로 접속한다. 실습 환경에서는 편리하지만, 프로덕션에서는 MITM(중간자 공격) 위험이 있으므로 사용하지 않는다.
댓글남기기