tencent cloud

Tencent Kubernetes Engine

소식 및 공지 사항
릴리스 노트
제품 릴리스 기록
제품 소개
제품 장점
제품 아키텍처
시나리오
제품 기능
리전 및 가용존
빠른 시작
신규 사용자 가이드
표준 클러스터를 빠르게 생성
Demo
클라우드에서 컨테이너화된 애플리케이션 배포 Check List
TKE 표준 클러스터 가이드
Tencent Kubernetes Engine(TKE)
클러스터 관리
네트워크 관리
스토리지 관리
Worker 노드 소개
Kubernetes Object Management
워크로드
클라우드 네이티브 서비스 가이드
Tencent Managed Service for Prometheus
TKE Serverless 클러스터 가이드
TKE 클러스터 등록 가이드
실습 튜토리얼
Serverless 클러스터
네트워크
로그
모니터링
유지보수
DevOps
탄력적 스케일링
자주 묻는 질문
클러스터
TKE Serverless 클러스터
유지보수
서비스
이미지 레지스트리
원격 터미널

TKE Kubernetes 주요 버전 업데이트 노트

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2023-04-27 18:15:01

1.22 changes since 1.20

주요 업데이트

PodSecurityPolicy 지원 중단

PodSecurityPolicy는 1.21에서 더 이상 사용되지 않으며 1.25에서 삭제됩니다. 이를 평가하고 Pod Security Admission 또는 타사 승인 플러그인으로 마이그레이션할 수 있습니다.

변경할 수 없는 Secrets 및 ConfigMaps GA

Secret 및 ConfigMap이 변경 불가능(immutable: true)으로 설정된 후, kubelet은 더 이상 이러한 객체의 변경 사항을 watch하지 않고 이를 컨테이너에 다시 마운트하여 apiserver의 부하를 줄입니다. 이 기능은 1.21에서 GA에 들어갑니다.

CronJobs GA

CronJobs는 1.21에서 GA(batch/v1)에 들어가며, 더 높은 성능의 새 버전 컨트롤러 CronJobControllerV2가 기본적으로 활성화됩니다.

이중 스택 네트워크의 IPv4/IPv6 주소 Beta

이중 스택 네트워크를 사용하면 Pod, 서비스 및 노드가 IPv4 및 IPv6 주소를 가져올 수 있습니다. 1.21에서는 듀얼 스택 네트워크 기능이 alpha에서 beta로 업그레이드되었으며 이 기능은 기본적으로 활성화됩니다.

노드 정상 종료

이 기능은 1.21에서 beta에 들어갑니다. 이를 통해 kubelet은 노드 종료 이벤트를 수신하고 노드에서 Pod를 정상적으로 종료할 수 있습니다.

영구 볼륨 상태 모니터링

이 alpha 기능은 1.21에서 도입되었습니다. 영구 볼륨(PV)의 실행 상태를 모니터링하고 비정상이 되면 PV를 표시하여, 비정상 PV에서 데이터 쓰기 또는 읽기를 방지하도록 워크로드를 적절하게 조정할 수 있습니다.

Server-side Apply GA

Server-side Apply는 객체를 선언적으로 생성하거나 수정하는 것과 같은 선언적 구성을 통해 사용자와 컨트롤러가 리소스를 관리하는 데 도움이 됩니다. Server-side Apply는 1.22에서 GA에 들어갔습니다.

외부 자격 증명 GA

외부 자격 증명은 1.22에서 GA에 진입하여 인터랙티브 로그인 프로세스 플러그인에 대한 더 나은 지원을 제공합니다. 자세한 내용은 sample-exec-plugin을 참고하십시오.

ETCD가 3.5.0으로 업데이트됨

ETCD 3.5.0은 1.22에서 기본적으로 사용됩니다. ETCD 3.5.0은 보안, 성능, 모니터링 및 개발자 경험을 개선하고, 여러 bug를 수정했으며, 구조화된 로그 레코드 및 기본 제공 로그 회전과 같은 중요한 새 기능을 추가했습니다.

MemoryQoS

alpha MemoryQoS 기능은 1.22부터 지원됩니다. 이 기능이 활성화되면 Cgroups v2 API가 사용되어 메모리 할당과 격리를 관리하고 제어하므로, 메모리 리소스 경합 시 워크로드의 메모리 사용량을 보장하고 워크로드 및 노드의 가용성을 개선합니다. 이 기능은 Tencent Cloud에서 제안되어 Kubernetes 커뮤니티에 기여되었습니다.

클러스터의 seccomp 기본 구성

kubelet은 1.22에서 SeccompDefault alpha 기능을 도입했습니다. --seccomp-default 매개변수 및 구성에 따라 kubelet은 Unconfined 대신 RuntimeDefault seccomp 구성을 사용하여 워크로드의 보안성을 개선합니다.

기타 업데이트

GA 기능:
1.21: EndpointSlice,Sysctls,PodDisruptionBudget
1.22: CSIServiceAccountToken
Beta 전환 기능:
1.21: TTLAfterFinished
1.22: SuspendJob,PodDeletionCost,NetworkPolicyEndPort
1.22: NodeResourcesLeastAllocated, NodeResourcesMostAllocatedRequestedToCapacityRatio의 세 가지 플러그인을 대체하는 데 사용되는 새로운 스케쥴러 스코어링 플러그인 NodeResourcesFit을 도입했습니다.
1.22: alpha 기능 APIServerTracing이 활성화되면 apiserver는 분산 추적을 지원하고 사용자가 --service-account-issuer 매개변수를 사용하여 여러 issuer를 설정할 수 있도록 합니다. 또한 apiserver는 issuer가 변경되더라도 중단 없이 서비스를 제공할 수 있습니다.

지원 중단 및 삭제

삭제된 매개변수 및 기능

1. Service TopologyKeys는 더 이상 사용되지 않으며 Topology Aware Hints로 대체됩니다.
2. kube-proxy
1.21부터 net.ipv4.conf.all.route_localnet=1이 ipvs 모드에서 자동으로 설정되지 않습니다. 업그레이드된 노드의 경우 net.ipv4.conf.all.route_localnet=1이 유지됩니다. 그러나 새 노드의 경우 기본 시스템 값(일반적으로 0)이 상속됩니다.
--cleanup-ipvs 매개변수가 삭제되고 --cleanup 매개변수로 대체됩니다.
3. kube-controller-manager
1.22부터 --horizontal-pod-autoscaler-use-rest-clients 매개변수가 삭제됩니다.
--port--address 매개변수는 유효하지 않게 되며 1.24에서 삭제됩니다.
4. kube-scheduler: --hard-pod-affinity-symmetric-weight--scheduler-name 매개변수는 1.22부터 삭제되며 대신 이러한 정보를 config 파일에서 구성할 수 있습니다.
5. kubelet: DynamicKubeletConfig 기능은 더 이상 사용되지 않으며 기본적으로 비활성화되어 있습니다. kubelet이 시작될 때 --dynamic-config-dir 매개변수가 구성되면 알람이 보고됩니다.

삭제되거나 사용되지 않는 버전

1. 1.21부터 CronJob batch/v2alpha1이 삭제됩니다
2. 1.22부터 다음 Beta API가 삭제됩니다. 자세한 내용은 Kubernetes 공식 문서에서 확인하십시오.
rbac.authorization.k8s.io/v1beta1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
extensions/v1beta1 및 networking.k8s.io/v1beta1 ingress API

Changelogs

1.20 changes since 1.18

주요 업데이트

CronJob 컨트롤러의 새 버전

Kubernetes 1.20은 새로운 버전의 CronJob 컨트롤러를 도입하고 informer 메커니즘을 사용하여 폴링을 대체하여 성능을 최적화합니다. kube-controller-manager에서 --feature-gates="CronJobControllerV2=true"를 지정하여 새 버전을 활성화할 수 있습니다. 이후 버전에서는 새 컨트롤러가 기본적으로 활성화됩니다.

dockershim 지원 중단

Dockershim은 더 이상 사용되지 않습니다. Docker은 더 이상 지원되지 않으며 향후 릴리스에서 삭제될 예정입니다. Docker 이미지는 OCI(Open Container Initiative) 이미지 사양을 따르므로 Docker에서 생성된 이미지는 모든 CRI 호환 런타임과 함께 클러스터에서 계속 작동합니다. 자세한 내용은 Don't Panic: Kubernetes and Docker, Dockershim Deprecation FAQ를 참고하십시오.

구조화된 로그

로그 메시지 및 k8s 객체 참조 구조는 표준화되어 로그 파싱, 처리, 저장, 쿼리 및 분석이 더 쉬워집니다. 구조화된 로그를 지원하기 위해 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-frequency

Exec 프로브 타임 아웃 처리

기존 Pod 정의에 영향을 줄 수 있는 Exec 프로브 타임 아웃과 관련된 오랜 bug가 수정되었습니다. 이 수정 전에는 Exec 프로브에 대해 timeoutSeconds 필드가 고려되지 않았습니다. 대신 프로브는 결과가 반환될 때까지 구성된 기한이 지난 경우에도 무기한 실행되었습니다. 이번 변경으로 인해 값이 지정되지 않은 경우 기본값인 1초가 적용되고, 프로브가 1초보다 오래 걸리는 경우 기존 Pod 정의가 더 이상 충분하지 않을 수 있습니다. ExecProbeTimeout이라는 기능 게이트가 이 수정 사항과 함께 추가되어 이전 동작으로 되돌릴 수 있지만 후속 릴리스에서는 잠겨 있고 삭제됩니다. 이전 동작으로 되돌리려면 ExecProbeTimeout 기능 게이트를 false로 설정해야 합니다. 자세한 내용은 Configure Liveness, Readiness and Startup Probes - Configure Probes를 참고하십시오.

볼륨 스냅샷 작업 기능 GA

이 기능은 볼륨 스냅샷 작업을 트리거하는 표준 방법을 제공하며 모든 Kubernetes 환경 및 지원되는 스토리지 provider에서 이식 가능한 방식으로 스냅샷 작업을 통합할 수 있습니다. 또한, 이러한 Kubernetes 스냅샷 기본 요소들은 고급 및 엔터프라이즈급 스토리지 관리 기능을 개발할 수 있는 기본 블록으로 작용하며, 애플리케이션 또는 클러스터 수준의 백업 솔루션을 포함합니다. 스냅샷 지원을 사용하려면 Kubernetes 배포자가 스냅샷 컨트롤러, 스냅샷 CRD 및 검증 Webhook을 번들로 제공하고 배포해야 합니다. 스냅샷 기능을 지원하는 CSI 드라이버도 클러스터에 배포되어야 합니다.

kubectl debug에서 beta로 전환

kubectl alpha debug 명령은 beta로 전환되고 kubectl debug로 교체됩니다. 다음과 같이 kubectl에서 직접 일반적인 디버깅 워크플로를 지원합니다.
다른 컨테이너 이미지 또는 명령으로 Pod 사본을 생성하여 시작 시 충돌하는 워크로드 문제를 해결합니다.
Pod의 새 복사본에서 또는 임시 컨테이너를 사용하여 디버깅 도구가 포함된 새 컨테이너를 추가하여 distroless 등 컨테이너 문제를 해결합니다. (임시 컨테이너 EphemeralContainers는 기본적으로 활성화되지 않는 Alpha 기능입니다)
호스트 네임스페이스에서 실행되고 호스트의 파일 시스템에 액세스할 수 있는 컨테이너를 생성하여 노드에서 문제를 해결합니다. 새로운 기본 제공 명령인 kubectl debug는 "debug"라는 이름의 kubectl 플러그인보다 우선 순위가 높습니다. 영향을 받는 플러그인의 이름을 변경해야 합니다. kubectl alpha debug는 이제 더 이상 사용되지 않으며 후속 릴리스에서 삭제됩니다. kubectl debug로 교제해야 합니다. 자세한 내용은 Debug Running Pods를 참고하십시오.

API 우선순위 및 공정성(API Priority and Fairness) 기능 beta로 전환

Kubernetes 1.18에 도입된 API Priority and Fairness 기능은 이제 Kubernetes 1.20에서 기본적으로 활성화됩니다. 이를 통해 kube-apiserver는 들어오는 요청을 우선 순위별로 분류할 수 있습니다.

PID 리소스 제한 기능 GA

SupportNodePidsLimit (노드-Pod PID 격리) 및 SupportPodPidsLimit (Pod당 PID 제한 기능)이 GA로 이동합니다.

alpha 기능: 노드 정상 종료

사용자와 클러스터 관리자는 Pod가 Pod 종료를 포함한 예상 Pod 라이프사이클을 준수할 것으로 기대합니다. 현재 노드가 종료되면 Pod가 예상 Pod 종료 라이프사이클을 따르지 않고 정상적으로 종료되지 않아 일부 워크로드에 문제가 발생할 수 있습니다. 이제 Kubernetes 1.20에 alpha GracefulNodeShutdown 기능이 추가되었습니다. 이는 kubelet이 노드 시스템 종료를 인식하도록 하여 시스템 종료 중에 Pod를 정상적으로 종료할 수 있습니다.

CSIVolumeFSGroupPolicy를 beta로 전환

CSIDrivers는 fsGroupPolicy 필드를 사용하여 mount 중에 소유권 및 권한(ReadWriteOnceWithFSType, File 및 None)을 수정 가능 여부를 제어할 수 있습니다.

ConfigurableFSGroupPolicy를 beta로 전환

다음은 비재귀적 방식으로 설정할 수 있습니다. fsgroup - PodFSGroupChangePolicy = OnRootMismatch

기타 업데이트

cloud controller manager 컴포넌트가 추가되었습니다.
GA로 전환되는 기능:
RuntimeClass node.k8s.io/v1beta1은 더 이상 사용되지 않으며 node.k8s.io/v1로 대체됩니다.
SCTPSupport
Windows containerd 지원
Ingress networking.k8s.io/v1beta1은 더 이상 사용되지 않으며(Kubernetes 1.22에서 삭제됨) networking.k8s.io/v1로 대체됩니다.
seccomp seccomp 주석 seccomp.security.alpha.kubernetes.io/podcontainer.seccomp.security.alpha.kubernetes.io/...는 더 이상 사용되지 않습니다(Kubernetes 1.22에서 삭제될 예정). Pod 및 container spec에 대해 다음 필드를 직접 지정할 수 있습니다.
securityContext:
seccompProfile:
type: RuntimeDefault|Localhost|Unconfined ## choose one of the three
localhostProfile: my-profiles/profile-allow.json ## only necessary if type == Localhost
K8s는 주석과 필드를 자동으로 변환하므로 추가 작업이 필요하지 않습니다.
API에 대한 노드 액세스 제한 Node 인증 모드 기능이 모두 구현되었습니다.
Event API 재설계 Event가 시스템 성능에 미치는 영향을 줄이고, 더 많은 필드를 추가하여 더 유용한 정보를 제공하기 위해, Event API가 Kubernetes 1.19에서 재설계되었습니다.
CertificateSigningRequest API certificates.k8s.io/v1beta1 외에도 certificates.k8s.io/v1 버전이 CertificateSigningRequest에 추가되었습니다. certificates.k8s.io/v1을 사용하는 경우,
spec.signerName을 지정하고 kubernetes.io/legacy-unknown 사용을 중지해야 합니다.
고유하고 알려진 usage만 포함할 수 있는 spec.usages를 지정해야 합니다.
status.conditions[*].status를 지정해야 합니다.
status.certificate는 PEM으로 인코딩되어야 하며 CERTIFICATE 블록만 포함할 수 있습니다.
Beta로 전환되는 기능: 다음 기능은 Beta로 전환되며 기본적으로 활성화됩니다.
EndpointSliceProxying kube-proxy는 Endpoints 대신 EndpointSlices에서 정보를 읽어 클러스터 확장성을 크게 개선하고 토폴로지 인식 라우팅과 같은 새로운 기능을 더 쉽게 추가할 수 있습니다.
KubeSchedulerConfiguration
HugePageStorageMediumSize
ImmutableEphemeralVolumes Secret 및 ConfigMap 볼륨은 immutable로 표시할 수 있습니다. Secret 및 ConfigMap 볼륨이 많으면 apiserver에 대한 부담을 크게 완화할 수 있습니다.
NodeDisruptionExclusion
NonPreemptingPriority
ServiceNodeExclusion
ServiceAccountIssuerDiscovery

지원 중단 및 삭제

지원 중단된 버전

지원 중단된 버전
신규 버전
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

kube-apiserver

1. componentstatus API는 더 이상 사용되지 않습니다. 이 API는 etcd, kube-scheduler 및 kube-controller-manager 컴포넌트의 상태 제공에 사용되었지만 해당 컴포넌트가 apiserver에 로컬인 경우와 kube-scheduler 및 kube-controller-manager가 보안되지 않은 상태 엔드포인트를 노출한 경우에만 작동했습니다. 이 API가 삭제되면 etcd 상태 확인이 kube-apiserver 상태 확인에 포함되고, kube-scheduler/kube-controller-manager가 해당 컴포넌트의 상태 확인 엔드포인트에 대해 직접 상태 확인을 수행할 수 있습니다.
2. apiserver는 더 이상 안전하지 않은 포트를 수신하지 않습니다. --address--insecure-bind-address 매개변수를 설정할 수 있지만 유효하지 않습니다. --port--insecure-port 매개변수는 0으로만 설정할 수 있습니다. 이러한 매개변수는 Kubernetes 1.24에서 삭제됩니다.
3. TokenRequestTokenRequestProjection 이 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 매개변수와 동일한 파일을 사용할 수 있습니다.

kubelet

1. 다음 매개변수가 삭제됩니다.
--seccomp-profile-root
--cloud-provider , --cloud-config는 config로 대체됩니다
--really-crash-for-testing , --chaos-chance
2. 더 이상 사용되지 않는 metrics/resource/v1alpha1 endpoint는 삭제되고 metrics/resource로 대체됩니다

기타 삭제 항목

failure-domain.beta.kubernetes.io/zonefailure-domain.beta.kubernetes.io/region 레이블은 삭제되며 각각 topology.kubernetes.io/zonetopology.kubernetes.io/region 으로 대체됩니다. failure-domain.beta... 로 시작하는 레이블은 topology... 로 시작되는 레이블로 대체되어야 합니다.
PodPreset이 삭제되었으며 webhook를 사용하여 이 기능을 구현할 수 있습니다.
basic auth 인증 방법은 더 이상 지원되지 않습니다.
더 이상 워크로드에 cbs inline을 사용하여 직접 마운트할 수 없습니다.
설명
Kubernetes 1.18에서 1.20으로 업그레이드할 때 CSI 임시 볼륨(csi inline)의 성공적인 마운트를 보장할 수 없습니다. 애플리케이션에서 CSI 임시 볼륨을 사용하는 경우 업그레이드하기 전에 영구 볼륨(PV)으로 변환하는 것이 좋습니다.

Changelogs

1.18 changes since 1.16

주요 업데이트

cloud provider 레이블의 GA 전환

삭제되는 레이블과 새 레이블은 다음과 같습니다.
삭제 레이블
새 레이블
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

Volume Snapshot이 Beta로 전환

VolumeSnapshotDataSource는 기본적으로 활성화되어 있습니다. 자세한 내용은 releasing CSI volume snapshots to beta를 참고하십시오.

CSI Migration을 Beta로 전환

CSIMigration은 기본적으로 활성화되어 있습니다. 자세한 내용은 CSI migration going to beta를 참고하십시오.

Kubernetes 토폴로지 매니저 Beta 버전으로 전환

토폴로지 매니저(TopologyManager) 기능은 Kubernetes 1.18에서 Beta 버전으로 이동합니다. 이 기능을 사용하면 최적화된 환경에서 저지연 워크로드를 실행할 수 있도록 CPU 및 장치(예시: SR-IOV VF)의 NUMA 정렬이 가능합니다. 토폴로지 매니저가 도입되기 전에는 CPU와 장치 관리자가 서로 독립적으로 리소스 할당 결정을 내렸습니다. 이로 인해 다중 소켓 CPU 시스템에서 바람직하지 않은 할당이 발생하여 대기 시간이 중요한 애플리케이션의 성능이 저하될 수 있습니다.

Serverside Apply를 Beta 2로 전환

Server-side Apply는 Kubernetes 1.16에서 Beta로 승격되었지만 이제 Kubernetes 1.18에서 두 번째 Beta(ServerSideApply)를 도입하고 있습니다. 이 새로운 버전은 모든 새로운 Kubernetes 객체의 필드에 대한 변경 사항을 추적 및 관리하여 리소스가 언제 변경되었는지 알 수 있습니다.

IngressClass 리소스

IngressClass 리소스는 Kubernetes 클러스터 내의 Ingress 유형을 설명하는 데 사용됩니다. Ingress는 Ingress에서 새 ingressClassName 필드를 사용하여 연결된 IngressClass를 지정할 수 있습니다. 이 새로운 리소스 및 필드는 더 이상 사용되지 않는 kubernetes.io/ingress.class 주석을 대체합니다.

기타 업데이트

Node Local DNSCache가 GA로 전환되었습니다.
IPv6에서 Beta로 전환되었습니다.
kubectl debug, Alpha 기능입니다.
Windows CSI support, Alpha 기능입니다.
ImmutableEphemeralVolumes, Alpha 기능입니다(변경할 수 없는 ConfigMap 및 Secret 지원, 해당 volume을 새로고침하지 않음).
다음 기능은 GA로 전환됩니다.
ScheduleDaemonSetPods
TaintNodesByCondition
WatchBookmark
NodeLease
CSINodeInfo
VolumeSubpathEnvExpansion
AttachVolumeLimit
ResourceQuotaScopeSelectors
VolumePVCDataSource
TaintBasedEvictions
BlockVolume, CSIBlockVolume
Windows RunAsUserName
Beta로 전환되는 기능:
EndpointSlices: 기본적으로 비활성화
CSIMigrationAWS: 기본적으로 비활성화
StartupProbe
EvenPodsSpread

지원 중단 및 삭제

삭제된 기능

기본적으로 활성화되며 구성할 수 없는 다음 기능이 삭제되었습니다.
GCERegionalPersistentDisk
EnableAggregatedDiscoveryTimeout
PersistentLocalVolumes
CustomResourceValidation
CustomResourceSubresources
CustomResourceWebhookConversion
CustomResourcePublishOpenAPI
CustomResourceDefaulting

기타 삭제 항목

다음 기본 제공 cluster role이 삭제됩니다.
system:csi-external-provisioner
system:csi-external-attacher

삭제된 기능 스위치 및 매개변수

기본 service IP CIDR 블록(10.0.0.0/24)은 더 이상 사용되지 않습니다. kube-apiserver의 --service-cluster-ip-range 매개변수를 통해 설정해야 합니다.
rbac.authorization.k8s.io/v1alpha1rbac.authorization.k8s.io/v1beta1 API 그룹은 더 이상 사용되지 않으며 Kubernetes 1.20에서 삭제됩니다. 따라서 리소스를 rbac.authorization.k8s.io/v1로 마이그레이션하십시오.
CSINodeInfo 기능 게이트는 더 이상 사용되지 않습니다. 이 기능은 GA로 전환되었으며 기본적으로 활성화되어 있습니다.

매개변수 및 기타 변경 사항

kube-apiserver

--encryption-provider-config: cacheSize: 0이 구성 파일에 지정된 경우 1.18 이전 버전은 1000개의 key를 캐시하도록 자동으로 구성되지만, 버전 1.18은 구성 확인 오류를 보고합니다. cacheSize를 음수 값으로 설정하여 캐시를 비활성화할 수 있습니다.
--feature-gates: 다음 기능은 기본적으로 활성화되어 있으며 더 이상 명령 라인을 통해 구성할 수 없습니다.
PodPriority
TaintNodesByCondition
ResourceQuotaScopeSelectors
ScheduleDaemonSetPods
다음 리소스 버전(group version)은 더 이상 지원되지 않습니다.
apps/v1beta1apps/v1beta2apps/v1로 대체됩니다.
extensions/v1beta1에서:
daemonsets, deploymentsreplicasetsapps/v1로 대체됩니다.
networkpoliciesnetworking.k8s.io/v1로 대체됩니다.
podsecuritypoliciespolicy/v1beta1로 대체됩니다.

kubelet

--enable-cadvisor-endpoints: 이 매개변수는 기본적으로 비활성화되어 있습니다. cAdvisor v1 Json API에 액세스하려면 활성화해야 합니다.
--redirect-container-streaming 매개변수는 더 이상 사용되지 않으며 이후 버전에서 삭제될 예정입니다. Kubernetes 1.18은 기본 동작(streaming 요청을 위한 kubelet 프록시)만 지원합니다. --redirect-container-streaming=true가 설정된 경우 삭제해야 합니다.
metrics endpoint /metrics/resource/v1alpha1 엔드포인트는 더 이상 사용되지 않으며 /metrics/resource로 대체됩니다.

kube-proxy

다음 매개변수는 더 이상 사용되지 않습니다.
--healthz-port는 더 이상 사용되지 않으며 --healthz-bind-address로 대체됩니다.
--metrics-port는 더 이상 사용되지 않으며 --metrics-bind-address로 대체됩니다.
EndpointSliceProxying 기능 게이트(기본적으로 비활성화됨)가 추가되어 kube-proxy에서 EndpointSlices 활성화 여부를 제어합니다. EndpointSlice 기능 게이트는 더 이상 kube-proxy의 동작에 영향을 주지 않습니다.
ipvs 연결 구성에 대한 다음 타임 아웃 설정이 추가되었습니다.
--ipvs-tcp-timeout
--ipvs-tcpfin-timeout
--ipvs-udp-timeout
iptables 모드는 IPv4/IPv6 이중 프로토콜 스택을 지원합니다.

kube-scheduler

scheduling_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에서 더 이상 사용되지 않습니다.

-enable-profiling 매개변수

kube-apiserver, kube-controller-managerkube-scheduler를 정렬하려면 profiling 기본 활성화합니다. profiling을 비활성화하려면 --enable-profiling=false 매개변수를 지정합니다.

kubectl

더 이상 사용되지 않는 --include-uninitialized 매개변수가 삭제되었습니다.
kubectlk8s.io/client-go는 더 이상 http://localhost:8080을 기본 apiserver 주소로 사용하지 않습니다.
kubectl run은 Pod 생성을 지원하며 더 이상 사용되지 않는 generator를 사용하여 다른 유형의 리소스를 생성하는 것을 지원하지 않습니다.
kubectl rolling-update 명령이 삭제되고 rollout 명령으로 대체됩니다.
–dry-runclient, servernone의 세 가지 매개변수 값을 지원합니다.
–dry-run=server는 다음 명령을 지원합니다: apply, patch, create, run, annotate, label, set, autoscale, drain, rollout undoexpose.
Pod의 임시 컨테이너에 대한 디버깅 및 문제 해결에 사용할 수 있는 kubectl alpha debug 명령이 추가되었습니다(버전 1.16에 도입된 EphemeralContainers 기능을 활성화해야 함).

hyperkube

Hyperkube 이 Go 코드에서 bash 스크립트로 변경되었습니다.

Changelogs

1.16 changes since 1.14

주요 업데이트

클러스터 안정성 및 가용성 향상

베어 메탈 클러스터 툴 및 HA와 같은 프로덕션 가용성 기능이 개선 및 향상되었습니다. HA 기능에 대한 kubeadm 지원이 beta 버전으로 전환되어 kubeadm initkubeadm join 명령을 사용하여 HA 컨트롤 플레인을 구성 및 배포할 수 있습니다. kubeadm이 클러스터 update 시 인증서 만료 이전에 모든 인증서를 원활하게 업데이트할 수 있습니다. 자세한 내용은 pr357pr970을 참고하십시오.

지속적인 CSI 개선

SIG 스토리지는 인-트리 볼륨 플러그인을 CSI(Container Storage Interface)로 마이그레이션할 수 있도록 작업을 계속하고 있습니다. 크기 조정 및 인라인 볼륨을 포함하여 인-트리 기능과 함께 CSI 기능 패리티를 가져오는 작업을 수행합니다. 볼륨 복제와 같이 아직 Kubernetes 스토리지 서브 시스템에 존재하지 않는 CSI의 새로운 alpha 기능을 도입합니다. 볼륨 복제를 사용하면 새 볼륨을 구성할 때 다른 PVC를 ‘DataSource’로 지정할 수 있습니다. 기본 스토리지 시스템이 이 기능을 지원하고 CSI 드라이버에서 ‘CLONE_VOLUME’ 기능을 구현하는 경우, 새 볼륨은 소스 볼륨의 복제본이 됩니다. 자세한 내용은 pr625를 참고하십시오.

기능

GA로 전환되는 기능:
CRD
Admission Webhook
GCERegionalPersistentDisk
CustomResourcePublishOpenAPI
CustomResourceSubresources
CustomResourceValidation
CustomResourceWebhookConversion
볼륨 크기 조정에 대한 CSI 지원이 Beta로 전환합니다.

일반 업데이트

Go 모듈은 Kubernetes 코어에서 지원됩니다.
cloud-provider 추출 및 코드 구성에 대한 준비가 계속됩니다. cloud-provider 코드는 나중에 쉽게 삭제되고 외부에서 사용할 수 있도록 kubernetes/legacy-cloud-providers로 이동되었습니다.
새로운 alpha 버전 스케쥴링 프레임워크가 배포되었습니다. 플러그인 개발 및 관리에 사용되며, 스케쥴러 기능을 확장합니다. 자세한 내용은 pr624를 참고하십시오.
extensions/v1beta1, apps/v1beta1 및 apps/v1beta2 API는 계속 사용이 중단됩니다. 이러한 확장은 Kubernetes 1.16에서 완전히 사용 중지됩니다.
Topology Manager 컴포넌트가 Kubelet에 추가되었습니다. 리소스 할당을 최적화하기 위해 리소스 할당 결정을 조정하는 것을 목표로 합니다.
Pod 및 서비스에 v4 및 v6 주소를 모두 할당하기 위해 IPv4/IPv6 이중 스택이 지원됩니다.
API Server 네트워크 프록시는 alpha 버전입니다.
클라우드 컨트롤러 관리자 마이그레이션을 위해 더 많은 확장 옵션이 제공됩니다.
extensions/v1beta1, apps/v1beta1 및 apps/v1beta2 API는 더 이상 사용되지 않습니다.

알려진 문제

Kubernetes 1.15에서 --log-file 매개변수를 사용하면 동일한 파일에 여러 번 기록되는 문제가 발생하는 것으로 알려져 있습니다. 자세한 내용은 pr78734를 참고하십시오.

업데이트 노트

클러스터
다음 레이블은 더 이상 새 노드에 추가할 수 없습니다. beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-readybeta.kubernetes.io/kube-proxy-ds-ready.
ip-mask-agentnode.kubernetes.io/masq-agent-ds-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/masq-agent-ds-ready를 사용하지 않습니다.
kube-proxynode.kubernetes.io/kube-proxy-ds-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/kube-proxy-ds-ready를 사용하지 않습니다.
metadata-proxycloud.google.com/metadata-proxy-ready를 node 선택기로 사용하며 더 이상 beta.kubernetes.io/metadata-proxy-ready를 사용하지 않습니다.
API Machinery k8s.io/kubernetes 및 기타 배포된 컴포넌트(예시: k8s.io/client-go 및 k8s.io/api)에는 이제 종속 라이브러리의 버전 정보를 포함하여 Go 모듈 파일이 포함됩니다. Go 모듈로 k8s.io/client-go를 사용하는 방법에 대한 자세한 내용은 go-modulespr74877을 참고하십시오.
Apps****hyperkube 짧은 별칭은 소스 코드에서 삭제되었습니다. Hyperkube docker 이미지가 현재 이러한 별칭을 생성하기 때문입니다. 자세한 내용은 pr76953을 참고하십시오.
Lifecycle
더 이상 사용되지 않는 kubeadm v1alpha3 구성에 대한 지원이 완전히 삭제되었습니다.
kube-up.sh는 더 이상 centos 및 local 공급자를 지원하지 않습니다.
Storage
Node.Status.Volumes.Attached.DevicePath 필드는 더 이상 CSI 볼륨에 대해 설정되지 않습니다. 이 필드에 의존하는 모든 외부 컨트롤러를 업데이트해야 합니다.
CSI alpha CRD가 삭제되었습니다.
StorageObjectInUseProtection admission 플러그 인은 기본적으로 활성화되어 있습니다. 이전에 활성화하지 않은 경우 클러스터 동작이 변경될 수 있습니다.
PodInfoOnMount 가 CSI driver에 대해 활성화되면 volume 컨텍스트의 새로운 csi.storage.k8s.io/ephemeral 매개변수를 통해 driver의 NodePublishVolume 구현이 볼륨이 임시 볼륨인지 일반 영구 볼륨인지 사례별로 판단할 수 있습니다. 자세한 내용은 pr79983을 참고하십시오.
VolumePVCDataSource(스토리지 볼륨 클론 기능)가 beta로 승격되었습니다. 자세한 내용은 pr81792를 참고하십시오.
인-트리 및 CSI 볼륨에 대한 limit은 하나의 스케쥴러 preidicate에 통합됩니다. 자세한 내용은 pr77595를 참고하십시오.
kube-apiserver
--enable-logs-handler 매개변수는 더 이상 사용되지 않으며 Kubernetes 1.19에서 삭제됩니다.
--basic-auth-file 플래그 및 인증 모드는 더 이상 사용되지 않으며 향후 릴리스에서 삭제될 예정입니다.
기본 service IP CIDR 블록(10.0.0.0/24)은 더 이상 사용되지 않으며 6개월 이후 또는 2개의 release 이후 삭제됩니다. service IP 범위를 구성하려면 --service-cluster-ip-range 매개변수가 필요합니다.
kube-scheduler v1beta1 Events API가 사용됩니다. scheudler 이벤트를 대상으로 하는 모든 툴은 v1beta1 Event API를 사용해야 합니다.
kube-proxy
--conntrack-max 매개변수가 삭제되고 --conntrack-min--conntrack-max-per-core로 대체됩니다.
--cleanup-iptables 매개변수가 삭제되었습니다.
--resource-container가 삭제됩니다.
kubelet
--allow-privileged, --host-ipc-sources, --host-pid-sources--host-network-sources 매개변수가 삭제되고 PodSecurityPolicy의 허용 컨트롤러로 대체됩니다.
cAdvisor JSON API는 더 이상 사용되지 않습니다.
--containerized가 삭제됩니다.
--node-labels 매개변수는 더 이상 kubernetes.io- 또는 k8s.io- 접두사가 붙은 금지 레이블을 구성하는 데 사용할 수 없습니다.
kubectl
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/bar
pod to local: kubectl exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar
kubeadm
kubeadm upgrade node configkubeadm 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로 대체됩니다.
CoreDNS는 ready 플러그인을 통해 준비 상태를 확인합니다.
proxy 플러그인은 더 이상 사용되지 않으며 forward 플러그인으로 대체됩니다.
kubernetes 플러그인에서 resyncperiod 옵션이 삭제됩니다.
upstream 옵션은 더 이상 사용되지 않습니다. 지정하면 무시됩니다.

Changelogs

1.14 changes since 1.12

주요 업데이트

kubeadm은 클러스터 관리를 단순화하는 데 사용됩니다.

일반 업데이트

dry-run을 beta로 전환합니다(dry-run을 사용하면 클러스터 상태를 실제로 변경하지 않고도 실제 API 요청을 시뮬레이션할 수 있습니다).
kubectl diff가 beta로 전환됩니다.
kubectl 플러그인 등록이 stable됩니다.
kubelet 플러그인 메커니즘이 beta로 전환됩니다.
CSIPersistentVolume이 GA로 전환됩니다.
TaintBasedEviction이 beta로 전환됩니다.
kube-scheduler의 volume topology 인식이 stable됩니다.
out-of-tree CSI Volume plugins에 대한 지원이 stable됩니다.
타사 장치 모니터링 플러그인이 지원됩니다.
kube-scheduler subnet feasibility가 beta로 전환됩니다.
Pod Ready는 프로브 조건 사용자 지정을 지원합니다.
Node 메모리는 HugePage를 지원합니다.
RuntimeClass가 beta로 전환됩니다.
Node OS/Arch labels가 GA로 전환됩니다.
node-leases가 beta로 전환됩니다.
kubelet resource metrics endpoint가 alpha로 전환되고 prometheus를 통한 데이터 수집을 지원합니다.
runAsGroup이 beta로 전환됩니다.
kubectl apply server-side가 alpha로 전환되어 서버 측에서 apply 작업을 수행할 수 있습니다.
kubectl은 kustomize를 지원합니다.
Pod에서 resolv.conf를 구성할 수 있습니다.
CSI volumes의 resizing을 지원합니다.
CSI는 topology를 지원합니다.
volume mount는 서브 경로 매개변수 구성을 지원합니다.
CSI는 원시 블록 장치를 지원합니다.
CSI는 로컬 ephemeral volume을 지원합니다.

업데이트 노트

kube-apiserver
etcd2는 더 이상 지원되지 않습니다. --storage-backend=etcd3이 기본적으로 사용됩니다.
--etcd-quorum-read 매개변수는 더 이상 사용되지 않습니다.
--storage-versions 매개변수는 더 이상 사용되지 않습니다.
--repair-malformed-updates 매개변수는 더 이상 사용되지 않습니다.
kube-controller-manager --insecure-experimental-approve-all-kubelet-csrs-for-group 매개변수는 더 이상 사용되지 않습니다.
kubelet
--google-json-key 매개변수는 더 이상 사용되지 않습니다.
--experimental-fail-swap-on 매개변수는 더 이상 사용되지 않습니다.
kube-scheduler componentconfig/v1alpha1은 더 이상 지원되지 않습니다.
kubectl run-container 명령은 더 이상 지원되지 않습니다.
taints node.alpha.kubernetes.io/notReadynode.alpha.kubernetes.io/unreachable은 더 이상 지원되지 않으며 각각 node.kubernetes.io/not-readynode.kubernetes.io/unreachable로 대체됩니다.

Changelogs

1.12 changes since 1.10

주요 업데이트

API

CustomResources의 서브 리소스는 현재 beta이며 기본적으로 활성화되어 있습니다. 이를 통해 /status 서브 리소스에 대한 업데이트는 .status 이외의 모든 필드(이전에는 .spec 및 .metadata 업데이트만 허용)에 대한 업데이트를 허용하지 않습니다. 또한 /status 서브 리소스가 활성화된 경우 CRD OpenAPI 유효성 검사 schema의 루트에서 requireddescription을 사용할 수 있습니다. 또한 이제 여러 버전의 CustomResourceDefinitions를 생성할 수 있지만 자동 변환 없이 CustomResourceDefinitions는 이제 spec.additionalPrinterColumns 필드를 통해 kubectl get 출력에 대한 추가 열을 지정할 수 있습니다.
dry run 기능이 지원됩니다. 관련 수정 사항을 제출하지 않고도 일부 명령의 실행 결과를 볼 수 있습니다.

인증 및 승인

ClusterRoles의 RBAC 집계가 GA로 전환되었습니다. client-go credentials 플러그인이 Beta 버전으로 전환되어 외부 플러그인에서 TLS 인증 정보를 얻을 수 있습니다.
다음 주석이 감사 이벤트에 추가되어 감사 의사 결정 프로세스에 대해 더 잘 알 수 있습니다.
Authorization 컴포넌트는 authorization.k8s.io/decision(allow 또는 forbid authorization 결정) 및 authorization.k8s.io/reason(이 결정에 대한 이유)을 설정합니다.
PodSecurityPolicy 허용 컨트롤러는 podsecuritypolicy.admission.k8s.io/admit-policypodsecuritypolicy.admission.k8s.io/validate-policy 주석을 설정합니다. Pod 승인 허용 정책의 이름을 포함합니다(PodSecurityPolicy는 동시에 hostPath 볼륨 마운트를 읽기 전용으로 제한 가능).
NodeRestriction 승인 컨트롤러는 Node가 노드 객체의 오염을 수정하지 못하도록 방지하여, 어떤 노드를 사용해야 하는지 쉽게 추적할 수 있습니다.

CLI

CLI는 새로운 플러그인 메커니즘을 구현하여 플러그인 작성자를 위한 공통 CLI 툴과 코드의 추가 리팩토링을 라이브러리에 제공합니다.

네트워크

ipvs 모드가 GA로 전환됩니다.
CoreDNS가 GA로 전환되며, kube-dns를 대체합니다.

노드

DynamicKubeletConfig가 Beta로 전환됩니다.
cri-tools GA.
PodShareProcessNamespace가 Beta로 전환됩니다.
Alpha 기능 RuntimeClass 및 CustomCFSQuotaPeriod가 추가되었습니다.

스케쥴러

Pod Priority 및 Preemption은 Beta로 전환됩니다.
DaemonSet Pod 스케쥴링은 더 이상 DaemonSet 컨트롤러에서 관리하지 않고 기본 스케쥴러에서 관리합니다.
TaintNodeByCondition이 Beta로 전환됩니다.
로컬 이미지 우선 사용 기능은 기본적으로 활성화되어 있습니다. 로컬에서 Pod 스케쥴링 중에 전체 또는 일부 Pod에 필요한 이미지를 가져온 노드의 우선순위가 더 높습니다. 이렇게 하면 Pod 실행이 가속화됩니다.

일반 업데이트

GA로 전환되는 기능: ClusterRole 및 StorageObjectInUseProtection.
Beta로 전환되는 기능: 외부 Cloud Provider.

업데이트 노트

kube-apiserver
--storage-version 매개변수가 삭제되고 --storage-versions로 대체됩니다. --storage-versions 매개변수도 더 이상 사용되지 않습니다.
--endpoint-reconciler-type의 기본값이 lease로 변경됩니다.
--enable-admission-plugins가 사용되면 기본적으로 포함됩니다. --admission-control 매개변수를 사용하는 경우 명시적으로 지정해야 합니다.
kubelet
--rotate-certificates 매개변수는 더 이상 사용되지 않으며 구성 파일의 .RotateCertificates 필드로 대체됩니다.
kubectl
run-pod/v1을 제외한 모든 kubectl run generator는 더 이상 사용되지 않습니다.
kubectl logs에서 --interactive 매개변수는 삭제됩니다.
--use-openapi-print-columns는 더 이상 사용되지 않으며 --server-print로 대체됩니다.

Changelogs

도움말 및 지원

문제 해결에 도움이 되었나요?

피드백