마구잡

KUBERNETES 1.30 변경이력 [ 번역본 ] 본문

Kubernetes/Kubernetes 버전별 변경 이력

KUBERNETES 1.30 변경이력 [ 번역본 ]

MAGUJOB 2024. 8. 7. 15:02
반응형

v1.29.0 이후 변경 사항

사용 중단

  • kubectl: prune-whitelist 플래그가 제거되었습니다. 이제 prune-allowlist 플래그를 사용해야 합니다. (#120246, @pacoxu)

API 변경

  • IP 주소와 CIDR을 위한 CEL 라이브러리가 추가되었습니다. 이는 1.31 버전부터 사용할 수 있습니다. (#121912, @JoelSpeed)
  • MutableFeatureGate에 기능 게이트의 기본 설정을 재정의할 수 있는 기능이 추가되었습니다. 이를 통해 모든 관련 구성 요소를 동시에 활성화하는 대신 구성 요소별로 기능을 개별적으로 활성화할 수 있습니다. (#122647, @benluddy)
  • 코드 생성 시 벤더 폴더를 무시하는 규칙이 kube_codegen 도구에 추가되었습니다. (#122729, @jparrill)
  • 사용자들이 CSIDriver.Spec에서 FSGroupPolicy와 PodInfoOnMount를 변경할 수 있도록 허용했습니다. (#116209, @haoruan)
  • Client-go 이벤트: 컨텍스트 로깅을 지원하려면 NewEventBroadcasterAdapterWithContext를 사용해야 합니다. (#122142, @pohly)
  • CustomResourceDefinition 검증 규칙에서 새 알파 optionalOldSelf API 필드가 실수로 활성화되는 문제를 수정했습니다. 이 필드는 CRDValidationRatcheting 기능 게이트가 활성화된 경우에만 설정할 수 있어야 합니다. (#122329, @jpbetz)
  • volumeBinding 플러그인을 위한 prescore 확장 포인트를 구현했습니다. Score에서 아무 작업도 하지 않을 경우 건너뜁니다. (#115768, @AxeZhan)
  • Resource.k8s.io/ResourceClaim (알파 API): status.reservedFor 배열에 대한 전략적 병합 패치 전략이 변경되어 개별 항목을 추가할 수 있게 되었습니다. 이는 이전에 상태를 업데이트하는 클라이언트에 영향을 줄 수 있습니다. (#122276, @pohly)
  • ResourceClaims를 사용하는 Pod와 그렇지 않은 Pod의 혼합 스케줄링 시, ResourceClaims를 사용하는 Pod가 스케줄링 지연에 미치는 영향을 줄였습니다. (#121876, @pohly)

기능

  • kubectl get cronjob 명령어 출력에 Timezone 열이 추가되었습니다. (#122231, @ardaguclu)
  • client-goWatchListClient 기능 게이트가 추가되었습니다. 활성화되면 서버에서 청크 대신 개별 항목의 스트림을 가져올 수 있습니다. (#122571, @p0lyn0mial)
  • 모든 구성 요소의 /metrics/slis 엔드포인트에 process_start_time_seconds를 추가했습니다. (#122750, @Richabanker)
  • kubectl config set-credentials 명령어에 exec-interactive-modeexec-provide-cluster-info 플래그가 추가되었습니다. (#122023, @ardaguclu)
  • io.Closer를 구현하는 스케줄링 프레임워크 플러그인이 우아하게 종료되도록 허용했습니다. (#122498, @Gekko0114)
  • --nodeport-addresses 동작이 "모든 노드 IP" 대신 "기본 노드 IP"만 기본으로 사용하도록 변경되었습니다. (#122724, @nayihz)
  • etcd 이미지가 v3.5.11로 빌드되었습니다. (#122233, @mzaian)
  • 인포머가 시작된 후에도 인덱서를 추가할 수 있도록 지원합니다. (#117046, @howardjohn)
  • client-go에 기능 게이트 메커니즘을 도입했습니다. 구현에 따라 환경 변수나 명령줄 옵션을 통해 기능을 제어할 수 있습니다. (#122555, @p0lyn0mial)
  • Kube-scheduler는 NodeAffinity 플러그인에 대한 스케줄링 힌트를 구현합니다. 이 스케줄링 힌트는 새로운 노드 또는 노드 업데이트가 Pod의 노드 선호도와 일치하는 경우에만 Pod의 스케줄링을 재시도하도록 허용합니다. (#122309, @carlory)
  • Kube-scheduler는 NodeResourceFit 플러그인에 대한 스케줄링 힌트를 구현합니다. 이는 새로운 노드 또는 노드 업데이트가 Pod의 리소스 요구사항과 일치하거나 이전의 Pod 업데이트나 삭제가 Pod의 리소스 요구사항과 일치하는 경우에만 Pod의 스케줄링을 재시도하도록 허용합니다. (#119177, @carlory)
  • Kube-scheduler는 NodeUnschedulable 플러그인에 대한 스케줄링 힌트를 구현합니다. 이는 새로운 노드 또는 노드 업데이트가 .spec.unschedulable을 false로 설정하는 경우에만 Pod의 스케줄링을 재시도하도록 허용합니다. (#122334, @carlory)
  • Kube-scheduler는 PodTopologySpread 플러그인에 대한 스케줄링 힌트를 구현합니다. 이는 관련 Pod 또는 토폴로지 키와 일치하는 노드를 생성/삭제/업데이트하는 경우에만 Pod의 스케줄링을 재시도하도록 허용합니다. (#122195, @nayihz)
  • kubeadm: kubeadm reset 호출 시 언마운트 중 오류 처리 개선. /var/run/kubelet 하위 디렉터리를 언마운트하지 못하면 이제 경고 대신 오류를 표시하고 디렉터리 정리를 계속합니다. (#122530, @neolit123)
  • kubectl debug: sysadmin 프로파일 추가. (#119200, @eiffel-fl)
  • Kubernetes는 이제 Go 1.21.6으로 빌드됩니다. (#122705, @cpanato)
  • Kubernetes는 이제 Go 1.22rc2로 빌드됩니다. (#122889, @cpanato)
  • kubectl describe 명령어가 VolumeAttributesClass를 설명할 때 더 많은 정보를 출력합니다. (#122640, @carlory)
  • KubeProxyDrainingTerminatingNodes 기능 게이트가 베타로 승격되었습니다. (#122914, @alexanderConstantinescu)
  • StableLoadBalancerNodeSet 기능 게이트가 GA로 승격되었습니다. (#122961, @alexanderConstantinescu)
  • NodeAffinity Score 플러그인이 Pod와 관련이 없는 경우 스케줄러가 NodeAffinity Score 플러그인을 건너뜁니다. (#117024, @sanposhiho)
  • 스케줄러 익스텐더의 ignorable 옵션이 필터 및 바인드에서 오류를 건너뛸 수 있습니다. (#122503, @sunbinnnnn)
  • kubedns 및 nodelocaldns가 버전 1.22.28로 업데이트되었습니다. (#121908, @mzaian)
  • 스케줄러 인터페이스의 서명 업데이트:
    1. PluginsRunner: RunPreScorePluginsRunScorePlugins에서 NodeInfo 사용.
    2. PreScorePlugin: PreScore에서 NodeInfo 사용.
    3. Extender: FilterPrioritize에서 NodeInfo 사용. (#121954, @AxeZhan)
  • PreFilterResult가 일부 노드를 필터링할 때 스케줄링 프레임워크는 이를 UnschedulableAndUnresolvable로 간주하여 프리엠션 과정의 후보에서 제외합니다. (#119779, @sanposhiho)
  • kubectl describe 명령어에 Suspend to job 및 Node-Selectors와 Tolerations를 pod 템플릿 출력에 추가했습니다. (#122618, @ivanvc)

문서

  • --pod-max-in-unschedulable-pods-duration 플래그는 v1.26에서 제거될 예정이었으나, 이 계획이 변경되었습니다. (#122013, @sanposhiho)
  • 삭제할 포드가 컨트롤러를 선언하지 않는다는 노트를 수정했습니다. (#120159, @Ithrael)

버그 또는 회귀

  • 기본 EvictionHard 설정에 imagefs.inodesfree를 추가했습니다. (#121834, @vaibhav2107)
  • kubectl get hpa 실행 시 메트릭 이름과 함께 활용 정보를 추가했습니다. (#122804, @sreeram-venkitesh)
  • 노드 재부팅 시 raw 블록 볼륨을 사용하는 포드의 삭제를 허용합니다. (#122211, @gnufied)
  • 로컬호스트나 루프백 IP 주소와 일치하는 URL을 가진 어드미션 웹훅의 경우 연결이 HTTP/2를 지원하도록 API 서버를 변경했습니다. (#122558, @linxiulei)
  • etcd: v3.5.11로 업데이트했습니다. (#122393, @mzaian)
  • Windows 자격 증명 제공자가 바이너리를 찾을 수 없는 문제를 수정했습니다. Windows 자격 증명 제공자 바이너리 경로에 ".exe" 접미사가 있을 수 있으므로 LookPath()를 사용하여 유연하게 지원하는 것이 좋습니다. (#120291, @lzhecheng)
  • 라이브러리로서 가져올 때 kubectl apply가 패닉에 빠질 수 있는 문제를 수정했습니다. (#122346, @Jefftree)
  • kubelet 시작 시 Evented PLEG의 패닉 문제를 수정했습니다. (#122475, @pacoxu)
  • InPlacePodVerticalScaling이 활성화된 경우 쿼터 계산 오류로 인해 리소스 삭제 실패 문제를 수정했습니다. (#122701, @carlory)
  • kubelet이 재시작된 후 특정 볼륨 플러그인이 사용자 가시 파일을 생성하지 못하는 문제를 수정했습니다. (#122807, @carlory)
  • 불필요한 노드 이벤트를 무시하고 daemonset 컨트롤러 성능을 개선했습니다. (#121669, @xigang)
  • 노드 재부팅 후 NodePublishVolume을 호출하지 않고 마운트 포인트가 로컬이 되는 문제를 수정했습니다. (#119923, @cvvz)
  • API 호출 시 오류가 발생하면 pod가 삭제된 것으로 간주하는 kubectl drain의 버그를 수정했습니다. (#122574, @brianpursley)
  • 스케줄링 프레임워크에서 MultiPoint 플러그인 (예: 기본 플러그인)을 재정의할 때 1.24 이후 발생한 회귀 문제를 수정했습니다. (#122068, @caohe)
  • 인트리 vSphere 볼륨의 CSI 드라이버로의 마이그레이션을 수정했습니다. (#122341, @jsafrane)
  • kube-proxy의 iptables 모드에서 경합 조건을 수정하여 일부 업데이트가 손실되는 문제를 해결했습니다. (#122204, @danwinship)
  • ValidatingAdmissionPolicy에서 CRD 매개변수를 사용하는 정책이 성공적으로 동기화되지 않는 버그를 수정했습니다. (#123003, @alexzielenski)
  • 정적으로 프로비저닝된 PV의 경우 CSI 유형의 볼륨 소스가 있거나 마이그레이션 주석이 있는 경우 삭제 시 PersisentVolume 컨트롤러가 해당 단계를 Failed 상태로 변경하지 않습니다. (#122030, @carlory)
  • pvc에 비어 있는 storageClassName이 있는 경우 persistentvolume 컨트롤러가 기본 StorageClass를 할당하려고 하지 않습니다. (#122704, @carlory)
  • 점수 매기기 플러그인이 정의되지 않은 경우 스케줄러 성능이 향상되었습니다. (#122058, @aleksandra-malinowska)
  • 점수 매기기 플러그인이 정의되지 않은 경우 스케줄러 성능이 향상되었습니다. (#122435, @aleksandra-malinowska)
  • kube-proxy: nftables 모드에서 LoadBalancerSourceRanges가 작동하지 않는 문제를 수정했습니다. (#122614, @tnqn)
  • kubeadm: "kubeadm init"에서 사용자가 지정한 --kubeconfig 파일을 무시하는 회귀 문제를 수정했습니다. (#122735, @avorima)
  • etcd 응답 디코딩 시 타임아웃 컨텍스트를 존중하도록 수정했습니다. (#121815, @HirazawaUi)
  • NodeAffinity에 대한 QueueingHint 구현이 되돌려졌습니다. (#122285, @sanposhiho)
  • NodeUnschedulable에 대한 QueueingHint 구현이 되돌려졌습니다. (#122288, @sanposhiho)
  • Pod 생성 시 잘못된 경고 이벤트(FileSystemResizeFailed)를 제거했습니다. (#122508, @carlory)
  • EventedPLEG 기능(베타, 기본적으로 비활성화)이 알파로 되돌려졌습니다. (#122697, @pacoxu)
  • 스케줄링 큐가 익스텐더의 실패를 인식하지 못하는 문제를 수정했습니다. (#122022, @sanposhiho)
  • LookPath()에서 반환된 오류를 처리하기 위해 errors.Is()를 사용합니다. (#122600, @lzhecheng)
  • ValidateVolumeAttributesClassUpdate가 새로운 vac 객체도 유효성 검사하도록 했습니다. (#122449, @carlory)
  • 즉시 할당되는 클레임을 사용할 때 해당 클레임을 참조하는 포드가 스케줄링되지 못한 경우 스케줄러가 해당 클레임을 잘못 해제하려고 할 수 있는 문제를 수정했습니다. (#122415, @pohly)

그 외 (Cleanup or Flake)

  • PV의 reclaim 정책이 Recycle로 설정된 경우 경고 메시지를 추가했습니다. (#122339, @carlory)
  • getStorageAccountName 경고 메시지가 제거되었습니다. (#121983, @andyzhangx)
  • 클라이언트-go: 리더 잠금을 최적화하여 처음에 API 서버에서 레코드를 가져오지 않고 리더 잠금을 갱신합니다. 또한 새로운 메트릭 leader_election_slowpath_total을 추가하여 비관적 리더 선출이 얼마나 발생하는지 모니터링할 수 있도록 했습니다. (#122069, @linxiulei)
  • kube-proxy nftables 모드가 커널 5.4와 호환됩니다. (#122296, @tnqn)
  • kubeadm: kubelet과 API 서버 /healthz 엔드포인트가 'ok'를 반환할 때까지 기다리는 동안 전체 로직, 오류 처리 및 출력 메시지를 개선했습니다. (#121958, @neolit123)
  • kubeadm: 유효하지 않은 셸이 지정되었을 때 'kubeadm completion'의 지원되는 셸 유형을 오류 메시지에 표시합니다. (#122477, @SataQiu)
  • kubeadm: 업그레이드 사전 검사 중 실행되는 upgrade-health-check Job을 자동으로 정리하기 위해 ttlSecondsAfterFinished를 사용합니다. (#122079, @carlory)
  • GA 기능 게이트 ConsistentHTTPGetHandlers를 기본으로 잠급니다. (#122578, @carlory)
  • client-go/metadata를 컨텍스트 로깅으로 마이그레이션했습니다. (#122225, @ricardoapl)
  • 컨텍스트 로깅을 사용하도록 cmd/kube-proxy를 마이그레이션했습니다. (#122197, @fatsheep9146)
  • GA 기능 게이트 RemoveSelfLink를 제거했습니다. (#122468, @carlory)
  • 1.30에서 GA 기능 게이트 ExperimentalHostUserNamespaceDefaultingGate를 제거했습니다. (#122088, @bzsuni)
  • 1.30에서 IPTablesOwnershipCleanup에 대한 GA 기능 게이트를 제거했습니다. (#122137, @bzsuni)
  • GA 기능 게이트 ExpandedDNSConfig를 제거했습니다. (#122086, @bzsuni)
  • GA 기능 게이트 KubeletPodResourcesGetAllocatable를 제거했습니다. (#122138, @ii2day)
  • GA 기능 게이트 KubeletPodResources를 제거했습니다. (#122139, @bzsuni)
  • GA 기능 게이트 MinimizeIPTablesRestore를 제거했습니다. (#122136, @ty-dc)
  • GA 기능 게이트 ProxyTerminatingEndpoints를 제거했습니다. (#122134, @ty-dc)
  • 사용 중단된 azureFile 인트리 스토리지 플러그인을 제거했습니다. (#122576, @carlory)
  • kube-controller-manager--cidr-allocator-typeCloudAllocator로 설정하는 옵션이 향후 릴리스에서 제거될 예정입니다. (#123011, @dims)
  • GA 기능 게이트 APISelfSubjectReview가 제거되었으며, 기능이 무조건 활성화됩니다. (#122032, @carlory)
  • 기능 게이트 LegacyServiceAccountTokenTracking이 제거되었습니다. (#122409, @Rei1010)
  • Azure의 인트리 클라우드 제공자가 제거되었습니다. (#122857, @nilo19)
  • vSphere의 인트리 클라우드 제공자가 제거되었습니다. (#122937, @dims)
  • kube-dnsv1.22.27로 업데이트되었습니다. (#121736, @ty-dc)
  • cni-pluginsv1.4.0으로 업데이트되었습니다. (#122178, @saschagrunert)
  • cri-toolsv1.29.0으로 업데이트되었습니다. (#122271, @saschagrunert)

종속성

추가

  • sigs.k8s.io/knftables: v0.0.14

변경

  • github.com/go-logr/logr: v1.3.0 → v1.4.1
  • github.com/go-logr/zapr: v1.2.3 → v1.3.0
  • github.com/onsi/ginkgo/v2: v2.13.0 → v2.15.0
  • github.com/onsi/gomega: v1.29.0 → v1.31.0
  • github.com/opencontainers/runc: v1.1.10 → v1.1.11
  • go.uber.org/atomic: v1.10.0 → v1.7.0
  • go.uber.org/goleak: v1.2.1 → v1.3.0
  • go.uber.org/zap: v1.19.0 → v1.26.0
  • golang.org/x/crypto: v0.14.0 → v0.16.0
  • golang.org/x/mod: v0.12.0 → v0.14.0
  • golang.org/x/net: v0.17.0 → v0.19.0
  • golang.org/x/sync: v0.3.0 → v0.5.0
  • golang.org/x/sys: v0.13.0 → v0.15.0
  • golang.org/x/term: v0.13.0 → v0.15.0
  • golang.org/x/text: v0.13.0 → v0.14.0
  • golang.org/x/tools: v0.12.0 → v0.16.1
  • k8s.io/klog/v2: v2.110.1 → v2.120.1
  • k8s.io/kube-openapi: 2dd684a → 778a556

제거

  • github.com/Azure/azure-sdk-for-go: v68.0.0+incompatible
  • github.com/Azure/go-autorest/autorest/adal: v0.9.23
  • github.com/Azure/go-autorest/autorest/date: v0.3.0
  • github.com/Azure/go-autorest/autorest/mocks: v0.4.2
  • github.com/Azure/go-autorest/autorest/to: v0.4.0
  • github.com/Azure/go-autorest/autorest/validation: v0.3.1
  • github.com/Azure/go-autorest/autorest: v0.11.29
  • github.com/Azure/go-autorest/logger: v0.2.1
  • github.com/Azure/go-autorest/tracing: v0.6.0
  • github.com/Azure/go-autorest: v14.2.0+incompatible
  • github.com/a8m/tree: 10a5fd5
  • github.com/benbjohnson/clock: v1.1.0
  • github.com/danwinship/knftables: v0.0.13
  • github.com/dnaeon/go-vcr: v1.2.0
  • github.com/dougm/pretty: 2ee9d74
  • github.com/gofrs/uuid: v4.4.0+incompatible
  • github.com/rasky/go-xdr: 4930550
  • github.com/rubiojr/go-vhd: 02e2102
  • github.com/vmware/govmomi: v0.30.6
  • github.com/vmware/vmw-guestinfo: 25eff15
반응형