릴리스 노트
제품 릴리스 기록
immutable: true)으로 설정된 후, kubelet은 더 이상 이러한 객체의 변경 사항을 watch하지 않고 이를 컨테이너에 다시 마운트하여 apiserver의 부하를 줄입니다. 이 기능은 1.21에서 GA에 들어갑니다.SeccompDefault alpha 기능을 도입했습니다. --seccomp-default 매개변수 및 구성에 따라 kubelet은 Unconfined 대신 RuntimeDefault seccomp 구성을 사용하여 워크로드의 보안성을 개선합니다.NodeResourcesLeastAllocated, NodeResourcesMostAllocated 및 RequestedToCapacityRatio의 세 가지 플러그인을 대체하는 데 사용되는 새로운 스케쥴러 스코어링 플러그인 NodeResourcesFit을 도입했습니다.APIServerTracing이 활성화되면 apiserver는 분산 추적을 지원하고 사용자가 --service-account-issuer 매개변수를 사용하여 여러 issuer를 설정할 수 있도록 합니다. 또한 apiserver는 issuer가 변경되더라도 중단 없이 서비스를 제공할 수 있습니다.net.ipv4.conf.all.route_localnet=1이 ipvs 모드에서 자동으로 설정되지 않습니다. 업그레이드된 노드의 경우 net.ipv4.conf.all.route_localnet=1이 유지됩니다. 그러나 새 노드의 경우 기본 시스템 값(일반적으로 0)이 상속됩니다.--cleanup-ipvs 매개변수가 삭제되고 --cleanup 매개변수로 대체됩니다.--horizontal-pod-autoscaler-use-rest-clients 매개변수가 삭제됩니다.--port 및 --address 매개변수는 유효하지 않게 되며 1.24에서 삭제됩니다.--hard-pod-affinity-symmetric-weight 및 --scheduler-name 매개변수는 1.22부터 삭제되며 대신 이러한 정보를 config 파일에서 구성할 수 있습니다.DynamicKubeletConfig 기능은 더 이상 사용되지 않으며 기본적으로 비활성화되어 있습니다. kubelet이 시작될 때 --dynamic-config-dir 매개변수가 구성되면 알람이 보고됩니다.kube-controller-manager에서 --feature-gates="CronJobControllerV2=true"를 지정하여 새 버전을 활성화할 수 있습니다. 이후 버전에서는 새 컨트롤러가 기본적으로 활성화됩니다.InfoS , ErrorS라는 두 가지 방법이 klog에 추가되었습니다.
--logging-format 매개변수는 모든 컴포넌트에 추가되며 기본값은 이전 형식의 text입니다. 구조화된 로그를 지원하기 위해 json으로 설정할 수 있으며 다음 매개변수는 유효하지 않게 됩니다. --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequencyExecProbeTimeout이라는 기능 게이트가 이 수정 사항과 함께 추가되어 이전 동작으로 되돌릴 수 있지만 후속 릴리스에서는 잠겨 있고 삭제됩니다. 이전 동작으로 되돌리려면 ExecProbeTimeout 기능 게이트를 false로 설정해야 합니다.
자세한 내용은 Configure Liveness, Readiness and Startup Probes - Configure Probes를 참고하십시오.kubectl alpha debug 명령은 beta로 전환되고 kubectl debug로 교체됩니다. 다음과 같이 kubectl에서 직접 일반적인 디버깅 워크플로를 지원합니다.EphemeralContainers는 기본적으로 활성화되지 않는 Alpha 기능입니다)kubectl alpha debug는 이제 더 이상 사용되지 않으며 후속 릴리스에서 삭제됩니다. kubectl debug로 교제해야 합니다. 자세한 내용은 Debug Running Pods를 참고하십시오.kube-apiserver는 들어오는 요청을 우선 순위별로 분류할 수 있습니다.SupportNodePidsLimit (노드-Pod PID 격리) 및 SupportPodPidsLimit (Pod당 PID 제한 기능)이 GA로 이동합니다.GracefulNodeShutdown 기능이 추가되었습니다. 이는 kubelet이 노드 시스템 종료를 인식하도록 하여 시스템 종료 중에 Pod를 정상적으로 종료할 수 있습니다.fsGroupPolicy 필드를 사용하여 mount 중에 소유권 및 권한(ReadWriteOnceWithFSType, File 및 None)을 수정 가능 여부를 제어할 수 있습니다.PodFSGroupChangePolicy = OnRootMismatchnode.k8s.io/v1beta1은 더 이상 사용되지 않으며 node.k8s.io/v1로 대체됩니다.networking.k8s.io/v1beta1은 더 이상 사용되지 않으며(Kubernetes 1.22에서 삭제됨) networking.k8s.io/v1로 대체됩니다.seccomp.security.alpha.kubernetes.io/pod 및 container.seccomp.security.alpha.kubernetes.io/...는 더 이상 사용되지 않습니다(Kubernetes 1.22에서 삭제될 예정). Pod 및 container spec에 대해 다음 필드를 직접 지정할 수 있습니다.securityContext:seccompProfile:type: RuntimeDefault|Localhost|Unconfined ## choose one of the threelocalhostProfile: my-profiles/profile-allow.json ## only necessary if type == Localhost
certificates.k8s.io/v1beta1 외에도 certificates.k8s.io/v1 버전이 CertificateSigningRequest에 추가되었습니다. certificates.k8s.io/v1을 사용하는 경우,spec.signerName을 지정하고 kubernetes.io/legacy-unknown 사용을 중지해야 합니다.spec.usages를 지정해야 합니다.status.conditions[*].status를 지정해야 합니다.status.certificate는 PEM으로 인코딩되어야 하며 CERTIFICATE 블록만 포함할 수 있습니다.지원 중단된 버전 | 신규 버전 |
apiextensions.k8s.io/v1beta1 | apiextensions.k8s.io/v1 |
apiregistration.k8s.io/v1beta1 | apiregistration.k8s.io/v1 |
authentication.k8s.io/v1beta1 | authentication.k8s.io/v1 |
authorization.k8s.io/v1beta1 | authorization.k8s.io/v1 |
autoscaling/v2beta1 | autoscaling/v2beta2 |
coordination.k8s.io/v1beta1 | oordination.k8s.io/v1 |
storage.k8s.io/v1beta1 | storage.k8s.io/v1 |
componentstatus API는 더 이상 사용되지 않습니다. 이 API는 etcd, kube-scheduler 및 kube-controller-manager 컴포넌트의 상태 제공에 사용되었지만 해당 컴포넌트가 apiserver에 로컬인 경우와 kube-scheduler 및 kube-controller-manager가 보안되지 않은 상태 엔드포인트를 노출한 경우에만 작동했습니다.
이 API가 삭제되면 etcd 상태 확인이 kube-apiserver 상태 확인에 포함되고, kube-scheduler/kube-controller-manager가 해당 컴포넌트의 상태 확인 엔드포인트에 대해 직접 상태 확인을 수행할 수 있습니다.--address 및 --insecure-bind-address 매개변수를 설정할 수 있지만 유효하지 않습니다. --port 및 --insecure-port 매개변수는 0으로만 설정할 수 있습니다. 이러한 매개변수는 Kubernetes 1.24에서 삭제됩니다.TokenRequest 및 TokenRequestProjection 이 GA로 전환됩니다. kube-apiserver에 대해 다음 매개변수를 설정해야 합니다.--service-account-issuer : 클러스터 API Server의 고정 URL입니다.--service-account-key-file : token 인증을 위한 하나 이상의 공개 키입니다.--service-account-signing-key-file : service account 발급을 위한 개인 키입니다. kube-controller-manager 의 --service-account-private-key-file 매개변수와 동일한 파일을 사용할 수 있습니다.--seccomp-profile-root--cloud-provider , --cloud-config는 config로 대체됩니다--really-crash-for-testing , --chaos-chancemetrics/resource/v1alpha1 endpoint는 삭제되고 metrics/resource로 대체됩니다failure-domain.beta.kubernetes.io/zone 및 failure-domain.beta.kubernetes.io/region 레이블은 삭제되며 각각 topology.kubernetes.io/zone 및 topology.kubernetes.io/region 으로 대체됩니다. failure-domain.beta... 로 시작하는 레이블은 topology... 로 시작되는 레이블로 대체되어야 합니다.삭제 레이블 | 새 레이블 |
beta.kubernetes.io/instance-type | node.kubernetes.io/instance-type |
failure-domain.beta.kubernetes.io/region | topology.kubernetes.io/region |
failure-domain.beta.kubernetes.io/zone | topology.kubernetes.io/zone |
IngressClass 리소스는 Kubernetes 클러스터 내의 Ingress 유형을 설명하는 데 사용됩니다. Ingress는 Ingress에서 새 ingressClassName 필드를 사용하여 연결된 IngressClass를 지정할 수 있습니다. 이 새로운 리소스 및 필드는 더 이상 사용되지 않는 kubernetes.io/ingress.class 주석을 대체합니다.kubectl debug, Alpha 기능입니다.Windows CSI support, Alpha 기능입니다.ImmutableEphemeralVolumes, Alpha 기능입니다(변경할 수 없는 ConfigMap 및 Secret 지원, 해당 volume을 새로고침하지 않음).ScheduleDaemonSetPodsTaintNodesByConditionWatchBookmarkNodeLeaseCSINodeInfoVolumeSubpathEnvExpansionAttachVolumeLimitResourceQuotaScopeSelectorsVolumePVCDataSourceTaintBasedEvictionsBlockVolume, CSIBlockVolumeWindows RunAsUserNameEndpointSlices: 기본적으로 비활성화CSIMigrationAWS: 기본적으로 비활성화StartupProbeEvenPodsSpreadGCERegionalPersistentDiskEnableAggregatedDiscoveryTimeoutPersistentLocalVolumesCustomResourceValidationCustomResourceSubresourcesCustomResourceWebhookConversionCustomResourcePublishOpenAPICustomResourceDefaultingsystem:csi-external-provisionersystem:csi-external-attacher10.0.0.0/24)은 더 이상 사용되지 않습니다. kube-apiserver의 --service-cluster-ip-range 매개변수를 통해 설정해야 합니다.rbac.authorization.k8s.io/v1alpha1 및 rbac.authorization.k8s.io/v1beta1 API 그룹은 더 이상 사용되지 않으며 Kubernetes 1.20에서 삭제됩니다. 따라서 리소스를 rbac.authorization.k8s.io/v1로 마이그레이션하십시오.CSINodeInfo 기능 게이트는 더 이상 사용되지 않습니다. 이 기능은 GA로 전환되었으며 기본적으로 활성화되어 있습니다.--encryption-provider-config: cacheSize: 0이 구성 파일에 지정된 경우 1.18 이전 버전은 1000개의 key를 캐시하도록 자동으로 구성되지만, 버전 1.18은 구성 확인 오류를 보고합니다. cacheSize를 음수 값으로 설정하여 캐시를 비활성화할 수 있습니다.--feature-gates: 다음 기능은 기본적으로 활성화되어 있으며 더 이상 명령 라인을 통해 구성할 수 없습니다.PodPriorityTaintNodesByConditionResourceQuotaScopeSelectorsScheduleDaemonSetPodsapps/v1beta1 및 apps/v1beta2는 apps/v1로 대체됩니다.extensions/v1beta1에서:daemonsets, deployments 및 replicasets는 apps/v1로 대체됩니다.networkpolicies는 networking.k8s.io/v1로 대체됩니다.podsecuritypolicies는 policy/v1beta1로 대체됩니다.--enable-cadvisor-endpoints: 이 매개변수는 기본적으로 비활성화되어 있습니다. cAdvisor v1 Json API에 액세스하려면 활성화해야 합니다.--redirect-container-streaming 매개변수는 더 이상 사용되지 않으며 이후 버전에서 삭제될 예정입니다. Kubernetes 1.18은 기본 동작(streaming 요청을 위한 kubelet 프록시)만 지원합니다. --redirect-container-streaming=true가 설정된 경우 삭제해야 합니다./metrics/resource/v1alpha1 엔드포인트는 더 이상 사용되지 않으며 /metrics/resource로 대체됩니다.--healthz-port는 더 이상 사용되지 않으며 --healthz-bind-address로 대체됩니다.--metrics-port는 더 이상 사용되지 않으며 --metrics-bind-address로 대체됩니다.EndpointSliceProxying 기능 게이트(기본적으로 비활성화됨)가 추가되어 kube-proxy에서 EndpointSlices 활성화 여부를 제어합니다. EndpointSlice 기능 게이트는 더 이상 kube-proxy의 동작에 영향을 주지 않습니다.--ipvs-tcp-timeout--ipvs-tcpfin-timeout--ipvs-udp-timeoutscheduling_duration_seconds 메트릭은 더 이상 사용되지 않습니다.scheduling_algorithm_predicate_evaluation_seconds는 더 이상 사용되지 않으며 framework_extension_point_duration_seconds[extension_point="Filter"]로 대체됩니다.scheduling_algorithm_priority_evaluation_seconds는 더 이상 사용되지 않으며 framework_extension_point_duration_seconds[extension_point="Score"]로 대체됩니다.AlwaysCheckAllPredicates는 스케쥴링 Policy API에서 더 이상 사용되지 않습니다.kube-apiserver, kube-controller-manager 및 kube-scheduler를 정렬하려면 profiling 기본 활성화합니다. profiling을 비활성화하려면 --enable-profiling=false 매개변수를 지정합니다.--include-uninitialized 매개변수가 삭제되었습니다.kubectl 및 k8s.io/client-go는 더 이상 http://localhost:8080을 기본 apiserver 주소로 사용하지 않습니다.kubectl run은 Pod 생성을 지원하며 더 이상 사용되지 않는 generator를 사용하여 다른 유형의 리소스를 생성하는 것을 지원하지 않습니다.kubectl rolling-update 명령이 삭제되고 rollout 명령으로 대체됩니다.–dry-run은 client, server 및 none의 세 가지 매개변수 값을 지원합니다.–dry-run=server는 다음 명령을 지원합니다: apply, patch, create, run, annotate, label, set, autoscale, drain, rollout undo 및 expose.kubectl alpha debug 명령이 추가되었습니다(버전 1.16에 도입된 EphemeralContainers 기능을 활성화해야 함).kubeadm init 및 kubeadm join 명령을 사용하여 HA 컨트롤 플레인을 구성 및 배포할 수 있습니다. kubeadm이 클러스터 update 시 인증서 만료 이전에 모든 인증서를 원활하게 업데이트할 수 있습니다. 자세한 내용은 pr357 및 pr970을 참고하십시오.CRDAdmission WebhookGCERegionalPersistentDiskCustomResourcePublishOpenAPICustomResourceSubresourcesCustomResourceValidationCustomResourceWebhookConversion--log-file 매개변수를 사용하면 동일한 파일에 여러 번 기록되는 문제가 발생하는 것으로 알려져 있습니다. 자세한 내용은 pr78734를 참고하십시오.beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready 및 beta.kubernetes.io/kube-proxy-ds-ready.ip-mask-agent는 node.kubernetes.io/masq-agent-ds-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/masq-agent-ds-ready를 사용하지 않습니다.kube-proxy는 node.kubernetes.io/kube-proxy-ds-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/kube-proxy-ds-ready를 사용하지 않습니다.metadata-proxy는 cloud.google.com/metadata-proxy-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/metadata-proxy-ready를 사용하지 않습니다.v1alpha3 구성에 대한 지원이 완전히 삭제되었습니다.Node.Status.Volumes.Attached.DevicePath 필드는 더 이상 CSI 볼륨에 대해 설정되지 않습니다. 이 필드에 의존하는 모든 외부 컨트롤러를 업데이트해야 합니다.StorageObjectInUseProtection admission 플러그 인은 기본적으로 활성화되어 있습니다. 이전에 활성화하지 않은 경우 클러스터 동작이 변경될 수 있습니다.csi.storage.k8s.io/ephemeral 매개변수를 통해 driver의 NodePublishVolume 구현이 볼륨이 임시 볼륨인지 일반 영구 볼륨인지 사례별로 판단할 수 있습니다. 자세한 내용은 pr79983을 참고하십시오.--enable-logs-handler 매개변수는 더 이상 사용되지 않으며 Kubernetes 1.19에서 삭제됩니다.--basic-auth-file 플래그 및 인증 모드는 더 이상 사용되지 않으며 향후 릴리스에서 삭제될 예정입니다.--service-cluster-ip-range 매개변수가 필요합니다.v1beta1 Events API가 사용됩니다. scheudler 이벤트를 대상으로 하는 모든 툴은 v1beta1 Event API를 사용해야 합니다.--conntrack-max 매개변수가 삭제되고 --conntrack-min 및 --conntrack-max-per-core로 대체됩니다.--cleanup-iptables 매개변수가 삭제되었습니다.--resource-container가 삭제됩니다.--allow-privileged, --host-ipc-sources, --host-pid-sources 및 --host-network-sources 매개변수가 삭제되고 PodSecurityPolicy의 허용 컨트롤러로 대체됩니다.--containerized가 삭제됩니다.--node-labels 매개변수는 더 이상 kubernetes.io- 또는 k8s.io- 접두사가 붙은 금지 레이블을 구성하는 데 사용할 수 없습니다.kubectl scale job이 삭제되었습니다.kubectl exec 명령의 --pod/-p 매개변수가 삭제되었습니다.kubectl convert 명령이 삭제되었습니다.--include-uninitialized가 삭제되었습니다.kubectl cp는 더 이상 컨테이너에서 심볼릭 링크 복사를 지원하지 않습니다. 대신 다음 명령을 사용할 수 있습니다.local to pod: tar cf - /tmp/foo | kubectl exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/barpod to local: kubectl exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/barkubeadm upgrade node config 및 kubeadm upgrade node experimental-control-plane 명령은 더 이상 사용되지 않으며 kubeadm upgrade node로 대체됩니다.--experimental-control-plane 매개변수는 더 이상 사용되지 않으며 --control-plane으로 대체됩니다.--experimental-upload-certs 매개변수는 더 이상 사용되지 않으며 --upload-certs로 대체됩니다.kubeadm config upload 명령은 더 이상 사용되지 않으며 kubeadm init phase upload-confi로 대체됩니다.proxy 플러그인은 더 이상 사용되지 않으며 forward 플러그인으로 대체됩니다.kubernetes 플러그인에서 resyncperiod 옵션이 삭제됩니다.upstream 옵션은 더 이상 사용되지 않습니다. 지정하면 무시됩니다.etcd2는 더 이상 지원되지 않습니다. --storage-backend=etcd3이 기본적으로 사용됩니다.--etcd-quorum-read 매개변수는 더 이상 사용되지 않습니다.--storage-versions 매개변수는 더 이상 사용되지 않습니다.--repair-malformed-updates 매개변수는 더 이상 사용되지 않습니다.--insecure-experimental-approve-all-kubelet-csrs-for-group 매개변수는 더 이상 사용되지 않습니다.--google-json-key 매개변수는 더 이상 사용되지 않습니다.--experimental-fail-swap-on 매개변수는 더 이상 사용되지 않습니다.componentconfig/v1alpha1은 더 이상 지원되지 않습니다.run-container 명령은 더 이상 지원되지 않습니다.node.alpha.kubernetes.io/notReady 및 node.alpha.kubernetes.io/unreachable은 더 이상 지원되지 않으며 각각 node.kubernetes.io/not-ready 및 node.kubernetes.io/unreachable로 대체됩니다./status 서브 리소스에 대한 업데이트는 .status 이외의 모든 필드(이전에는 .spec 및 .metadata 업데이트만 허용)에 대한 업데이트를 허용하지 않습니다. 또한 /status 서브 리소스가 활성화된 경우 CRD OpenAPI 유효성 검사 schema의 루트에서 required 및 description을 사용할 수 있습니다. 또한 이제 여러 버전의 CustomResourceDefinitions를 생성할 수 있지만 자동 변환 없이 CustomResourceDefinitions는 이제 spec.additionalPrinterColumns 필드를 통해 kubectl get 출력에 대한 추가 열을 지정할 수 있습니다.dry run 기능이 지원됩니다. 관련 수정 사항을 제출하지 않고도 일부 명령의 실행 결과를 볼 수 있습니다.authorization.k8s.io/decision(allow 또는 forbid authorization 결정) 및 authorization.k8s.io/reason(이 결정에 대한 이유)을 설정합니다.podsecuritypolicy.admission.k8s.io/admit-policy 및 podsecuritypolicy.admission.k8s.io/validate-policy 주석을 설정합니다. Pod 승인 허용 정책의 이름을 포함합니다(PodSecurityPolicy는 동시에 hostPath 볼륨 마운트를 읽기 전용으로 제한 가능).--storage-version 매개변수가 삭제되고 --storage-versions로 대체됩니다. --storage-versions 매개변수도 더 이상 사용되지 않습니다.--endpoint-reconciler-type의 기본값이 lease로 변경됩니다.--enable-admission-plugins가 사용되면 기본적으로 포함됩니다. --admission-control 매개변수를 사용하는 경우 명시적으로 지정해야 합니다.--rotate-certificates 매개변수는 더 이상 사용되지 않으며 구성 파일의 .RotateCertificates 필드로 대체됩니다.run-pod/v1을 제외한 모든 kubectl run generator는 더 이상 사용되지 않습니다.kubectl logs에서 --interactive 매개변수는 삭제됩니다.--use-openapi-print-columns는 더 이상 사용되지 않으며 --server-print로 대체됩니다.피드백