본문 바로가기
K8s

AKS-eks

by 식사법 2024. 11. 2.

9주차 - AWS EKS

1. AWS VPC CNI

  • VPC CNI는 AWS 에서 제공하는 기능으로 파드에 vpc의 ip를 할당해서 사용할 수 있게 해준다.

image.png

  • 실무적으로 사용해본적은 없지만 만약 이 기능을 사용한다면 OS 딴이 아닌 AWS Security Group을 통해서 pod의 특정 서비스 (RDS 등) 접근 여부를 좀더 명확히 나눌 수 있지 않을까 생각한다.
  • 테스트를 한번 해볼 수 있도록 하겠다.

2. EKS 환경 확인

**#노드 확인
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 tabl**

image.png

→ 이것저것 배포된게 많아서 지워뒀다 ㅎㅎ…

#pod Ip 확인
kubectl get pod -n kube-system -o=custom-columns=NAME:.metadata.name,IP:.status.podIP,STATUS:.status.phase
kubectl get pod -n kube-system -l k8s-app=kube-dns -owide

image.png

→ pod 정보들이 node 대역대를 따라가는것을 확인할 수 있다

3. 노드간 파드 통신 - SG로 제어가 되는가?

  • pod간 통신 과정을 확인

image.png

#작업 ec2에서
PODNAME1=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[0].metadata.name})
PODNAME2=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[1].metadata.name})
PODNAME3=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[2].metadata.name})

PODIP1=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[0].status.podIP})
PODIP2=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[1].status.podIP})
PODIP3=$(kubectl get pod -l app=netshoot-pod -o jsonpath={.items[2].status.podIP})

kubectl exec -it $PODNAME1 -- ping -c 2 $PODIP2

#워커노드 1 에서
sudo tcpdump -i **any** -nn icmp

image.png

→ pod ip로 통신되고 있음을 확인 할 수 있다.

  • SG로 pod2 ip인 192.168.2.61를 outbound 통제 해보자 ( pod2만 통신할 수 있게)

image.png

image.png

→ pod1에서 2로는 나가지만 3로는 나가지 않는 모습을 볼 수 있다

→ sg로 pod간 통신을 어느정도 제어할 수 있을 것으로 보인다( 그런데 어차피 같은 Node에 있다면 통신이 되지 않을까…?)

4. 파드에서 외부 통신

#작업 ec2에서
kubectl exec -it $PODNAME1 -- ping -c 1 www.google.com

#워코 노드1에서
sudo tcpdump -i any -nn icmp

image.png

→ 정상적으로 통신이 되고있다

'K8s' 카테고리의 다른 글

Cilium CNL  (1) 2024.10.26
Istio - Mode : Sidecar, Ambient  (0) 2024.10.19
LoadBalancer(MetalLB)  (3) 2024.10.04