확장 지원의 Kubernetes 버전에 대한 릴리스 노트 검토 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

확장 지원의 Kubernetes 버전에 대한 릴리스 노트 검토

Amazon EKS는 Amazon EKS에서 릴리스된 시점으로부터 14개월 동안 Kubernetes 마이너 버전에 대한 표준 지원과 추가 12개월 동안 Kubernetes 마이너 버전에 대한 추가 지원(버전당 총 26개월)을 통해 업스트림에서 지원되는 것보다 긴 Kubernetes 버전을 지원합니다.

이 주제에서는 추가 지원의 각 Kubernetes 버전에 대해 알아야 할 중요한 변경 사항을 제공합니다. 업그레이드할 때는 클러스터의 이전 버전과 새 버전 간에 발생한 변경 사항을 주의 깊게 검토하세요.

Kubernetes 1.29

Kubernetes 1.29는 이제 Amazon EKS에서 사용할 수 있습니다. Kubernetes 1.29에 대한 자세한 내용은 공식 릴리스 발표를 참조하세요.

중요
  • FlowSchemaPriorityLevelConfiguration의 사용 중단된 flowcontrol.apiserver.k8s.io/v1beta2 API 버전은 Kubernetes 버전 1.29에서 더 이상 제공되지 않습니다. 사용 중단된 베타 API 그룹을 사용하는 매니페스트 또는 클라이언트 소프트웨어가 있는 경우 버전 1.29로 업그레이드하기 전에 이를 변경해야 합니다.

  • Node 객체의 .status.kubeProxyVersion 필드는 이제 사용 중단되었으며 Kubernetes 프로젝트는 향후 릴리스에서 해당 필드를 제거할 것을 제안하고 있습니다. 사용 중단된 필드는 정확하지 않으며 kube-proxy 버전을 실제로 알지 못하거나 kube-proxy가 실행 중인지 여부조차 모르는 kubelet에 의해 관리되었습니다. 클라이언트 소프트웨어에서 이 필드를 사용했다면 중지하세요. 정보를 신뢰할 수 없으며 해당 필드는 이제 사용 중단되었습니다.

  • 잠재적인 공격 표면을 줄이기 위해 Kubernetes 1.29에서 LegacyServiceAccountTokenCleanUp 기능은 레거시 자동 생성 비밀 기반 토큰이 오랫동안(기본값으로 1년) 사용되지 않으면 유효하지 않은 것으로 레이블을 지정하고, 유효하지 않은 것으로 표시된 후 오랫동안(기본값으로 추가 1년) 사용을 시도하지 않으면 자동으로 제거합니다. 이러한 토큰을 식별하려면 다음을 실행합니다.

    kubectl get cm kube-apiserver-legacy-service-account-token-tracking -n kube-system

전체 Kubernetes 1.29 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1280을 참조하세요.

Kubernetes 1.28

Kubernetes 1.28은 이제 Amazon EKS에서 사용할 수 있습니다. Kubernetes 1.28에 대한 자세한 내용은 공식 릴리스 발표를 참조하세요.

  • Kubernetes v1.28은 코어 노드와 컨트롤 플레인 구성 요소 간에 지원되는 스큐를 n-2에서 n-3으로 하나의 마이너 버전으로 확장하여 지원되는 가장 오래된 마이너 버전의 노드 구성 요소(kubeletkube-proxy)가 지원되는 최신 마이너 버전의 컨트롤 플레인 구성 요소(kube-apiserver, kube-scheduler, kube-controller-manager, cloud-controller-manager)와 함께 작동할 수 있도록 했습니다.

  • Pod GC Controller의 지표 force_delete_pods_totalforce_delete_pod_errors_total은 모든 강제 포드 삭제를 처리하도록 향상되었습니다. 포드가 종료됐거나, 끊겼거나, 서비스 중단 테인트로 종료되었거나, 종료 및 예정되지 않았기 때문에 포드가 강제 삭제됐는지 여부를 나타내기 위해 지표에 이유가 추가됩니다.

  • storageClassName이 설정되지 않은 바인딩되지 않은 PersistentVolumeClaim에 기본 StorageClass를 자동으로 할당하도록 PersistentVolume (PV) 컨트롤러가 수정되었습니다. 또한 API 서버 내의 PersistentVolumeClaim 승인 검증 메커니즘이 설정되지 않은 상태에서 실제 StorageClass 이름으로 값을 변경할 수 있도록 조정되었습니다.

전체 Kubernetes 1.28 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1270을 참조하세요.

Kubernetes 1.27

Kubernetes 1.27은 이제 Amazon EKS에서 사용할 수 있습니다. Kubernetes 1.27에 대한 자세한 내용은 공식 릴리스 발표를 참조하세요.

중요
  • 알파 seccomp 주석 seccomp.security.alpha.kubernetes.io/pod 및 container.seccomp.security.alpha.kubernetes.io 주석에 대한 지원이 제거되었습니다. 알파 seccomp 주석은 1.19에서 더 이상 사용되지 않으며 1.27에서 제거됨에 따라 seccomp 주석이 있는 Pods에 대해 seccomp 필드가 더 이상 자동으로 채워지지 않습니다. 대신 Pods 또는 컨테이너에 securityContext.seccompProfile 필드를 사용하여 seccomp 프로필을 구성합니다. 클러스터에서 더 이상 사용되지 않는 알파 seccomp 주석을 사용하고 있는지 확인하려면 다음 명령을 실행합니다.

    kubectl get pods --all-namespaces -o json | grep -E 'seccomp.security.alpha.kubernetes.io/pod|container.seccomp.security.alpha.kubernetes.io'
  • kubelet에 대한 --container-runtime 명령줄 인수가 제거되었습니다. Amazon EKS의 기본 컨테이너 런타임은 1.24부터 containerd가 되어 컨테이너 런타임을 지정할 필요가 없습니다. 1.27부터 Amazon EKS는 부트스트랩 스크립트에 전달된 --container-runtime 인수를 무시합니다. 노드 부트스트랩 프로세스 중 오류를 방지하기 위해 이 인수를 --kubelet-extra-args에 전달하지 않는 것이 중요합니다. 모든 노드 생성 워크플로 및 빌드 스크립트에서 --container-runtime 인수를 제거해야 합니다.

  • Kubernetes 1.27kubelet은 기본 kubeAPIQPS50으로, kubeAPIBurst100으로 늘렸습니다. 이러한 향상된 기능을 통해 kubelet은 더 많은 양의 API 쿼리를 처리하여 응답 시간과 성능을 개선할 수 있습니다. 조정 요구 사항으로 인해 Pods에 대한 수요가 증가하면 수정된 기본값을 통해 kubelet이 증가한 워크로드를 효율적으로 관리할 수 있습니다. 결과적으로 Pod 실행이 더 빨라지고 클러스터 작업이 더 효과적입니다.

  • 보다 세분화된 Pod 토폴로지를 사용하여 minDomain과 같은 정책을 분산할 수 있습니다. 이 파라미터는 Pods가 분산되어야 하는 최소 도메인 수를 지정할 수 있는 기능을 제공합니다. nodeAffinityPolicy 및 nodeTaintPolicy를 사용하면 더 세부적으로 Pod 배포를 관리할 수 있습니다. 이는 노드 친화도, 테인트 및 Pod’s 사양의 topologySpreadConstraints에 있는 matchLabelKeys 필드에 따른 것입니다. 이를 통해 롤링 업그레이드 후 계산을 분산하기 위해 Pods를 선택할 수 있습니다.

  • Kubernetes 1.27PersistentVolumeClaims(PVCs)의 수명을 제어하는 StatefulSets에 대한 새로운 정책 메커니즘을 베타 버전으로 승격했습니다. 새로운 PVC 보존 정책을 사용하면 StatefulSet가 삭제되거나 StatefulSet의 복제본이 스케일 다운될 때 StatefulSet 사양 템플릿에서 생성된 PVCs를 자동으로 삭제할지 아니면 유지할지 지정할 수 있습니다.

  • Kubernetes API 서버의 goaway-chance 옵션은 연결을 무작위로 종료하여 HTTP/2 클라이언트 연결이 단일 API 서버 인스턴스에서 중단되는 것을 방지합니다. 연결이 닫히면 클라이언트가 다시 연결을 시도하고 로드 밸런싱의 결과로 다른 API 서버에 도달할 가능성이 높습니다. Amazon EKS 버전 1.27은 goaway-chance 플래그를 활성화했습니다. Amazon EKS 클러스터에서 실행 중인 워크로드가 HTTP GOAWAY와 호환되지 않는 클라이언트를 사용하는 경우, 연결 종료 시 다시 연결하여 GOAWAY를 처리하도록 클라이언트를 업데이트하는 것이 좋습니다.

전체 Kubernetes 1.27 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1260을 참조하세요.

Kubernetes 1.26

Kubernetes 1.26은 이제 Amazon EKS에서 사용할 수 있습니다. Kubernetes 1.26에 대한 자세한 내용은 공식 릴리스 발표를 참조하세요.

중요

Kubernetes 1.26은 더 이상 CRI v1alpha2를 지원하지 않습니다. 이로 인해 컨테이너 런타임이 CRI v1을 지원하지 않는 경우 kubelet이 더 이상 노드를 등록하지 않습니다. 또한 이는 Kubernetes 1.26이 containerd 마이너 버전 1.5 이하를 지원하지 않음을 의미합니다. containerd를 사용하는 경우 노드를 Kubernetes 1.26으로 업그레이드하기 전에 containerd 버전 1.6.0 이상으로 업그레이드해야 합니다. v1alpha2만 지원하는 다른 컨테이너 런타임도 업그레이드해야 합니다. 자세한 내용은 컨테이너 런타임 공급업체에 문의하세요. 기본적으로 Amazon Linux와 Bottlerocket AMI에는 containerd 버전 1.6.6이 포함되어 있습니다.

  • Kubernetes 1.26으로 업그레이드하기 전에 Kubernetes용 Amazon VPC CNI 플러그인을 버전 1.12 이상으로 업그레이드합니다. Kubernetes용 Amazon VPC CNI 플러그인 1.12 이상으로 업그레이드하지 않으면 Kubernetes용 Amazon VPC CNI 플러그인이 충돌합니다. 자세한 내용은 Amazon VPC CNI를 통해 포드에 IP 할당 섹션을 참조하세요.

  • Kubernetes API 서버의 goaway-chance 옵션은 연결을 무작위로 종료하여 HTTP/2 클라이언트 연결이 단일 API 서버 인스턴스에서 중단되는 것을 방지합니다. 연결이 닫히면 클라이언트가 다시 연결을 시도하고 로드 밸런싱의 결과로 다른 API 서버에 도달할 가능성이 높습니다. Amazon EKS 버전 1.26은 goaway-chance 플래그를 활성화했습니다. Amazon EKS 클러스터에서 실행 중인 워크로드가 HTTP GOAWAY와 호환되지 않는 클라이언트를 사용하는 경우, 연결 종료 시 다시 연결하여 GOAWAY를 처리하도록 클라이언트를 업데이트하는 것이 좋습니다.

전체 Kubernetes 1.26 변경 로그는 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1250을 참조하세요.