본문 바로가기
클라우드/AWS

[AWS] EKS Network (이론) - 2주차

by Cloud_Park 2023. 5. 2.

실습 환경을 구성 후 따라하는 것을 권장합니다.

2023.05.02 - [클라우드/AWS] - [AWS] EKS 실습 ( 원클릭으로 생성하기 )

 

[AWS] EKS 실습 ( 원클릭으로 생성하기 )

EKS 설치 사용 2023.04.26 - [클라우드/AWS] - [AWS] EKS 설치 / 사용 [AWS] EKS 설치 / 사용 기술향상을 위해 EKS 스터디를 참여하게 되었습니다. 좋은 기회를 얻은 것 같습니다. ------ kubernetes 명령어 / 베어메

blog.base-on.co.kr

 

스터디 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

 

pkos 스터디 2주차 2편 - AWS VPC CNI

이 글은 쿠버네티스에서 AWS VPC CNI 동작과정을 설명합니다. 몇 가지 선수지식이 필요합니다. 네트워크 인터페이스 iptables route table arp 프로토콜 AWS VPC 쿠버네티스 AWS VPC CNI란? AWS에서 쿠버네티스

malwareanalysis.tistory.com

K8S Calico CNI 와 AWS VPC CNI 차이

사진 1 . 생성되는 아이피 대역의 차이

* 주된 차이점 생성되는 아이피 대역 *

사진 2 . 직접통신 / 오버레이 통신 (캡슐화)

* 워커노드에 생성가능한 최대 파드 수 

더보기

https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html

 

Increase the amount of available IP addresses for your Amazon EC2 nodes - Amazon EKS

Increase the amount of available IP addresses for your Amazon EC2 nodes By default, the number of IP addresses available to assign to pods is based on the number of IP addresses assigned to Elastic network interfaces, and the number of network interfaces a

docs.aws.amazon.com

 

  1. Secondary IPv4 addresses : 인스턴스 유형에 최대 ENI 갯수와 할당 가능 IP 수를 조합하여 선정
  2. IPv4 Prefix Delegation : IPv4 28bit 서브넷(prefix)를 위임하여 할당 가능 IP 수와 인스턴스 유형에 권장하는 최대 갯수로 선정 ///// 스펙마다 생성되는 파드 수 (아이피 수)가 다르다  
3. AWS VPC CNI Custom Networking
: 노드와 파드 대역 분리, 파드에 별도 서브넷 부여 후 사용

 

 

 

 

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