실습 환경을 구성 후 따라하는 것을 권장합니다.
2023.05.02 - [클라우드/AWS] - [AWS] EKS 실습 ( 원클릭으로 생성하기 )
스터디 2주차 시작하겠습니다.
- supports native VPC networking with the Amazon VPC Container Network Interface (CNI) plugin for Kubernetes.
- VPC 와 통합 : VPC Flow logs , VPC 라우팅 정책, 보안 그룹(Security group) 을 사용 가능함
- This plugin assigns an IP address from your VPC to each pod.
- VPC ENI 에 미리 할당된 IP(=Local-IPAM Warm IP Pool)를 파드에서 사용할 수 있음
https://aws.github.io/aws-eks-best-practices/networking/vpc-cni/
2주차에 EKS의 장점 VPC CNI 을 배웠는데요. Kubernetes를 사용하면 대부분이 Calico CNI를 사용하게 되는데 AWS의 VPC CNI는 (캡슐/디캡슐)하지 않는다는 장점과 AWS 네트워크 자원을 eks 환경에서 가져다 쓸 수 있다는 것을 알게되었습니다.
참고자료 ) https://malwareanalysis.tistory.com/555
K8S Calico CNI 와 AWS VPC CNI 차이
사진 1 . 생성되는 아이피 대역의 차이
사진 2 . 직접통신 / 오버레이 통신 (캡슐화)
* 워커노드에 생성가능한 최대 파드 수
https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html
- Secondary IPv4 addresses : 인스턴스 유형에 최대 ENI 갯수와 할당 가능 IP 수를 조합하여 선정
- IPv4 Prefix Delegation : IPv4 28bit 서브넷(prefix)를 위임하여 할당 가능 IP 수와 인스턴스 유형에 권장하는 최대 갯수로 선정 ///// 스펙마다 생성되는 파드 수 (아이피 수)가 다르다
VPC CNI 설치 방법 : Networking 인자로 넣어서 사용
kops create cluster \
--zones $ZONES \
--networking amazonvpc \
* CNI는 기본 데몬셋으로 생성
* POD IP가 VPC - Subnet 대역과 동일 (AWS에 네트워크 CIDR범위를 넓게 잡아야함)
* IP 할당을 요청 관련 이력은 tail -f /var/log/aws-routed-eni/ipamd.log 에서 확인 가능
네트워크 인터페이스 관련 명령어
하나의 프로세스는 namespace 종류 당 하나의 namespace에 속하게 됩니다. 프로세스를 어떤 namespace에 넣으면, 프로세스는 해당 namespace이 허용하는 것들만 볼 수 있게 됩니다.
lsns: 현존하는 namespace를 확인하기 위해 사용하는 명령어
sudo lsns -o PID,COMMAND -t net
nsenter라는 명령어는 namespace enter의 약어이다. 말그대로 격리된 namespace에 enter하는 명령어이다.
option -t는 target option이다. 특정 타겟 process id를 넘기면 그 뒤의 명령어를 실행할 수 있다.
sudo nsenter -t {PID} -n ip -c addr
인터페이스 목록 확인
ip -c -br addr show
추가적인 통신
쿠버네티스 통신 제어하는 routing table
pod default gateway는 root 네임스페이스에 있는 가상 네터워크 인터페이스를 통해서 나감
pod 에서 $ arp
노드에서 $ ifconfig
Root 네임스페이스로 지나가면 Root 네임스페이스의 정책에 따라 외부로 갈지 내부로 갈지 정해지게 됩니다.
같은 노드에서 통신하는 경우
root 네임스페이스에 있으므로 node 라우팅 테이블 참조
다른 node의 파드간 통신 디버깅
. route table에 의해 다른 node로 트래픽이 전달됩니다. 다른 node로 트래픽이 흘러갈 때, aws route table이 관여
외부 통신인 경우
pod가 외부와 통신하면 SNAT(출발지 IP가 node IP로 변경됨). SNAT은 iptables을 기반으로 동작
ping 테스트
sudo iptables -t nat -S | grep 'A AWS-SNAT-CHAIN' 을 통하는데 체인 0이 1에서 점프하는 구조
AWS VPC CNI의 LoadBalancer타입의 서비스
loadbalancer타입 서비스 생성/수정/삭제는 aws-load-balancer pod가 제어합니다. aws-load-balancer는 api-server와 aws API를 사용하여 aws에 NLB(default)를 생성합니다.
실습은 하기의 링크에서 하나씩 진행합니다.
1. 네트워크 기본 정보 확인
https://base-on.tistory.com/517
2. 노드에서 기본 네트워크 정보확인
https://base-on.tistory.com/518
3. 파드간 통신
https://base-on.tistory.com/519
4. 파드에서 외부 통신
https://base-on.tistory.com/520
5. 노드에서 파트 생성 갯수제한
https://base-on.tistory.com/521
6. 서비스 & 로드벨런서 컨트롤러
https://base-on.tistory.com/522
7. External DNS
https://base-on.tistory.com/524
'클라우드 > AWS' 카테고리의 다른 글
[AWS] EKS Network (실습- 노드에서 기본 네트워크 정보확인) - 2주차 (0) | 2023.05.02 |
---|---|
[AWS] EKS Network (실습- 네트워크 기본 정보 확인) - 2주차 (0) | 2023.05.02 |
[AWS] EKS 실습 ( 원클릭으로 생성하기 ) - 2 주차 (0) | 2023.05.02 |
[AWS] EKS 설치 / 사용 - 1 주차 (0) | 2023.04.26 |
[AWS] Access key 발급 (0) | 2023.04.26 |