Ssoon

[2주차] EKS Networking - Prefix Mode 본문

AWS EKS Workshop Study

[2주차] EKS Networking - Prefix Mode

구구달스 2023. 5. 4. 08:48
CloudNet@ 팀의 AWS EKS Workshop Study 2주차 정리입니다.

 Prefix Mode

  • 네트워크 인터페이스의 개별 IP 주소를 할당하는 대신 /28(16개의 IP 주소) IP 주소 prefix를 할당합니다.
  • ENABLE_PREFIX_DELEGATION이 "true"로 설정된 경우 VPC CNI는 ENI에 할당된 prefix에서 포드에 IP 주소를 할당합니다.
  • Nitro 기반 Node 에서 동작하며 Nitro 기반이 아닌 Node 는 secondary IP 주소를 할당합니다.
  • Amazon VPC CNI 추가 기능 버전 1.9.0 이상

 

[ Node Group 배포 ]

  • Nitro 인스턴스 유형의 인스턴스로 maxPods을 100으로 노드그룹을 생성합니다.
vCPU가 30개 미만인 인스턴스의 경우 최대 수는 110이고 다른 모든 인스턴스의 경우 최대 수는 250입니다. 
이 최대 수는 PREFIX_DELEGATION 의 활성화 여부에 관계없이 적용됩니다.

 

[ VPC CNI 구성 ]

  • VPC CNI가 설치되어 실행 중인지 확인
kubectl get pods --selector=k8s-app=aws-node -n kube-system

  • CNI 버전을 확인
kubectl describe daemonset aws-node --namespace kube-system | Select-String "Image" | %{ $_.ToString().Split('/')[1] }

  • VPC CNI가 prefix mode에서 실행되도록 구성되었는지 확인합니다.
  • ENABLE_PREFIX_DELEGATION값이 "false"로 설정되어 있습니다.

  • ENABLE_PREFIX_DELEGATION값이 "true"로 설정합니다.
  • 파라미터를 활성화하여 Amazon VPC CNI DaemonSet의 네트워크 인터페이스에 prefixes를 할당합니다.
kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true

  • prefix delegation 이 활성화되었으므로 worker nodes 의 네트워크 인터페이스에 할당된 prefix 를 볼 수 있습니다.
aws ec2 describe-instances --query 'Reservations[*].Instances[].{InstanceId: InstanceId, Prefixes: NetworkInterfaces[].Ipv4Prefixes[]}'

[ Pod 배포 ]

  • Pod를 배포하기 위해 "other" 네임스페이스를 생성합니다.

  • 150개의 Pod를 배포합니다
@"
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pause-pods-prefix
  namespace: other
spec:
  replicas: 150
  selector:
    matchLabels:
      run: pause-pods-prefix
  template:
    metadata:
      labels:
        run: pause-pods-prefix
    spec:
      containers:
      - name: reserve-resources
        image: registry.k8s.io/pause
"@ | Set-Content -Path deployment-pause.yaml

  • worker nodes 의 네트워크 인터페이스에 할당된 prefix 가 확장된 것을 확인할 수 있습니다.

 

[ 각 Amazon EC2 인스턴스 유형의 Amazon EKS 권장 최대 pods 수 ]

각 pod에 고유한 IP 주소가 할당되므로 인스턴스 유형에서 지원하는 IP 주소 수는 인스턴스에서 실행할 수 있는 pods 수를 결정하는 요소

 

  • 각 인스턴스 유형에 대한 최대 pods 수를 계산하는 데 사용할 수 있는 스크립트를 다운로드합니다.
curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/files/max-pods-calculator.sh

chmod +x max-pods-calculator.sh
  • 스크립트를 실행합니다.
./max-pods-calculator.sh --instance-type t3.medium --cni-version 1.12.6-eksbuild.1

 

[ Node 에 배포할 수 있는 최대 Pod 수 ]

 

Instances built on the Nitro System

Comments