9주차 - AWS EKS
1. AWS VPC CNI
- VPC CNI는 AWS 에서 제공하는 기능으로 파드에 vpc의 ip를 할당해서 사용할 수 있게 해준다.
- 실무적으로 사용해본적은 없지만 만약 이 기능을 사용한다면 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**
→ 이것저것 배포된게 많아서 지워뒀다 ㅎㅎ…
#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
→ pod 정보들이 node 대역대를 따라가는것을 확인할 수 있다
3. 노드간 파드 통신 - SG로 제어가 되는가?
- pod간 통신 과정을 확인
#작업 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
→ pod ip로 통신되고 있음을 확인 할 수 있다.
- SG로 pod2 ip인 192.168.2.61를 outbound 통제 해보자 ( pod2만 통신할 수 있게)
→ 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
→ 정상적으로 통신이 되고있다
'K8s' 카테고리의 다른 글
Cilium CNL (1) | 2024.10.26 |
---|---|
Istio - Mode : Sidecar, Ambient (0) | 2024.10.19 |
LoadBalancer(MetalLB) (3) | 2024.10.04 |