Kubernetes kube-proxy 추가 기능으로 작업하기 - Amazon EKS

Kubernetes kube-proxy 추가 기능으로 작업하기

중요

자체 관리형 추가 기능 유형을 사용하는 대신 클러스터에 Amazon EKS 유형의 추가 기능을 추가하는 것이 좋습니다. 유형 간의 차이를 잘 모르는 경우 Amazon EKS 추가 기능 부분을 참조하세요. Amazon EKS 추가 기능을 클러스터에 추가하는 방법에 대한 자세한 내용은 추가 기능 생성 섹션을 참조하세요. Amazon EKS 추가 기능을 사용할 수 없는 경우, 사용할 수 없는 이유에 대한 문제를 컨테이너 로드맵 GitHub 리포지토리에 제출하는 것이 좋습니다.

kube-proxy 추가 기능은 Amazon EKS 클러스터의 각 Amazon EC2 노드에 배포됩니다. 노드에 대한 네트워크 규칙을 유지하고 Pods와(과)의 네트워크 통신을 가능하게 합니다. 이 추가 기능은 클러스터의 Fargate 노드에 배포되지 않습니다. 자세한 내용은 Kubernetes 설명서의 kube-proxy을(를) 참조하세요.

다음 표에는 각 Kubernetes 버전에 사용할 수 있는 Amazon EKS 추가 기능 유형의 최신 버전이 나열되어 있습니다.

Kubernetes 버전 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.29.1-eksbuild.2 v1.28.6-eksbuild.2 v1.27.10-eksbuild.2 v1.26.13-eksbuild.2 v1.25.16-eksbuild.3 v1.24.17-eksbuild.8 v1.23.17-eksbuild.9
중요

이전 버전의 설명서가 올바르지 않았습니다. kube-proxy 버전 v1.28.5, v1.27.9, v1.26.12는 사용할 수 없습니다.

이 추가 기능을 자체 관리하는 경우 표의 버전이 사용 가능한 자체 관리 버전과 다를 수 있습니다.

각 Amazon EKS 클러스터 버전에서 사용할 수 있는 2가지 유형의 kube-proxy 컨테이너 이미지가 있습니다.

  • Default(기본) - 이 이미지 유형은 Kubernetes 업스트림 커뮤니티에서 유지 관리하는 Debian 기반 도커 이미지를 기반으로 합니다.

  • Minimal(최소) - 이 이미지 유형은 Amazon EKS Distro에서 유지 관리하는 최소 기본 이미지를 기반으로 하며, 최소한의 패키지가 포함되고 쉘이 없습니다. 자세한 내용은 Amazon EKS Distro를 참조하세요.

각 Amazon EKS 클러스터 버전에 사용할 수 있는 최신 자체 관리형 kube-proxy 컨테이너 이미지 버전
Image type(이미지 유형) 1.29 1.28 1.27 1.26 1.25 1.24 1.23
kube-proxy(기본 유형) 최소 유형만 사용할 수 있습니다. 최소 유형만 사용할 수 있습니다. 최소 유형만 사용할 수 있습니다. 최소 유형만 사용할 수 있습니다. 최소 유형만 사용할 수 있습니다. v1.24.10-eksbuild.2 v1.23.16-eksbuild.2
kube-proxy(최소 유형) v1.29.1-minimal-eksbuild.2 v1.28.6-minimal-eksbuild.2 v1.27.10-minimal-eksbuild.2 v1.26.13-minimal-eksbuild.2 v1.25.16-minimal-eksbuild.3 v1.24.17-minimal-eksbuild.4 v1.23.17-minimal-eksbuild.5
중요
  • Kubernetes 버전 1.25 이상에서는 기본 이미지 유형을 사용할 수 없습니다. 최소 이미지 유형을 사용해야 합니다.

  • Amazon EKS 추가 기능 유형을 업데이트할 때 유효한 Amazon EKS 추가 기능 버전을 지정합니다. 이 버전은 이 표에 나와 있는 버전이 아닐 수도 있습니다. Amazon EKS 추가 기능 버전이 이 추가 기능의 자체 관리형 유형을 업데이트할 때 지정한 컨테이너 이미지 버전과 항상 일치하지는 않기 때문입니다. 이 추가 기능의 자체 관리형 유형을 업데이트할 때는 이 표에 나열된 유효한 컨테이너 이미지 버전을 지정합니다.

필수 조건

고려 사항
  • Amazon EKS 클러스터의 Kube-proxy에는 Kubernetes와(과) 동일한 호환성 및 스큐 정책이 있습니다.

  • Kube-proxy은(는) Amazon EC2 노드의 kubelet와(과) 동일한 마이너 버전이어야 합니다.

  • Kube-proxy은(는) 클러스터 컨트롤 플레인의 마이너 버전보다 이후일 수 없습니다.

  • Amazon EC2 노드의 kube-proxy 버전은 컨트롤 플레인보다 이전의 마이너 버전이 2개를 초과할 수 없습니다. 예를 들어, 컨트롤 플레인에서 Kubernetes 1.29를 실행하고 있는 경우 kube-proxy 마이너 버전은 1.27보다 이전 버전일 수 없습니다.

  • 최근에 클러스터를 새 Kubernetes 마이너 버전으로 업데이트한 경우에는 노드와 동일한 마이너 버전으로 Amazon EC2 노드를 업데이트하기 전에 kube-proxy을(를) 노드와 동일한 마이너 버전으로 업데이트합니다.

kube-proxy 자체 관리형 추가 기능 업데이트
  1. 클러스터에 자체 관리형 추가 기능 유형이 설치되어 있는지 확인하세요. my-cluster를 해당 클러스터의 이름으로 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name kube-proxy --query addon.addonVersion --output text

    오류 메시지가 반환되면 자체 관리형 추가 기능 유형이 클러스터에 설치됩니다. 이 주제의 나머지 단계는 추가 기능의 자체 관리형 유형을 업데이트하는 단계입니다. 버전 번호가 반환되는 경우 Amazon EKS 유형의 추가 기능이 클러스터에 설치됩니다. 업데이트하려면 이 주제의 절차를 수행하는 대신 추가 기능 업데이트의 절차를 수행하세요. 추가 기능 유형 간의 차이를 잘 모르는 경우 Amazon EKS 추가 기능 섹션을 참조하세요.

  2. 클러스터에 현재 설치된 컨테이너 이미지의 버전을 확인하세요.

    kubectl describe daemonset kube-proxy -n kube-system | grep Image

    예제 출력은 다음과 같습니다.

    Image:    602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.25.6-minimal-eksbuild.2

    예제 출력에서 v1.25.6-minimal-eksbuild.2가 클러스터에 설치된 버전입니다.

  3. 출력의 값으로 602401143452region-code을(를) 대체하여 kube-proxy 추가 기능을 업데이트합니다. 이전 단계에서 각 Amazon EKS 클러스터에 사용 가능한 최신 자체 관리형 kube-proxy 컨테이너 이미지 버전 표에 나열된 kube-proxy 버전으로 v1.26.2-minimal-eksbuild.2을(를) 대체합니다. 기본 또는 최소 이미지 유형에 대한 버전 번호를 지정할 수 있습니다.

    kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.26.2-minimal-eksbuild.2

    예제 출력은 다음과 같습니다.

    daemonset.apps/kube-proxy image updated
  4. 이제 클러스터에 새 버전이 설치되어 있는지 확인합니다.

    kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3

    예제 출력은 다음과 같습니다.

    v1.26.2-minimal-eksbuild.2
  5. 동일한 클러스터에서 x86Arm 노드를 사용하고 있고 클러스터가 2020년 8월 17일 이전에 배포된 경우 다음 명령을 사용하여 여러 하드웨어 아키텍처에 대한 노드 셀렉터를 포함하도록 kube-proxy 매니페스트를 편집합니다. 이는 일회성 작업입니다. 매니페스트에 셀렉터를 추가한 후에는 추가 기능을 업데이트할 때마다 이 옵션을 추가할 필요가 없습니다. 클러스터가 2020년 8월 17일 또는 이후에 배포된 경우 kube-proxy은(는) 이미 멀티 아키텍처를 지원합니다.

    kubectl edit -n kube-system daemonset/kube-proxy

    다음 노드 셀렉터를 편집기에서 파일에 추가한 후 파일을 저장합니다. 편집기에서 이 텍스트를 포함할 위치에 대한 예는 GitHub에서 CNI 매니페스트 파일을 참조하세요. 이를 통해 Kubernetes은(는) 노드의 하드웨어 아키텍처를 기반으로 올바른 하드웨어 이미지를 가져올 수 있습니다.

    - key: "kubernetes.io/arch" operator: In values: - amd64 - arm64
  6. 원래 클러스터가 Kubernetes 버전 1.14 이상으로 생성된 경우 kube-proxy이(가) 이미 Affinity Rule에 포함되어 있으므로 이 단계를 건너뛸 수 있습니다. 원래 1.13 또는 이전 버전의 Kubernetes을(를) 사용하여 Amazon EKS 클러스터를 생성했으며 클러스터에서 Fargate 노드를 사용하려는 경우에는 Fargate 노드에서 kube-proxy Pods이(가) 예약되지 않도록 kube-proxy 매니페스트를 편집하여 NodeAffinity 규칙을 포함합니다. 이는 일회성 편집입니다. Affinity Rule을(를) 매니페스트에 추가하면 추가 기능을 업데이트할 때마다 추가할 필요가 없습니다. kube-proxy DaemonSet을(를) 편집합니다.

    kubectl edit -n kube-system daemonset/kube-proxy

    편집기에서 파일의 DaemonSet spec에 다음 Affinity Rule을(를) 추가한 후 파일을 저장합니다. 편집기에서 이 텍스트를 포함할 위치에 대한 예는 GitHub에서 CNI 매니페스트 파일을 참조하세요.

    - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate