Kubernetes 1.16에서 지원 중단된 API

Kubernetes 1.16 출시 버전은 더 이상 장기 지원 중단된 특정 API 버전을 제공하지 않습니다. 현재 API 버전은 v1.10부터 제공되었으며 지원되는 모든 버전의 Google Kubernetes Engine(GKE)에서 사용할 수 있습니다.

1.16의 변경사항

대부분의 지원 중단된 API는 베타에서 공개 버전으로 전환된 이전 베타 API입니다. 공개 버전 API는 장기 호환성 보장을 제공하며 지원 중단된 베타 API 대신 사용됩니다.

기본값 변경

다음 표에서는 apps/v1beta1에서 이전하는 경우 정의하지 않는 매개변수의 기본값에 대한 변경사항을 설명합니다.

객체 변경 달라지는 점
DaemonSet spec.updateStrategy.type: OnDelete가 RollingUpdate로 변경되었습니다. RollingUpdate를 사용할 경우 DaemonSet 정의를 변경하면 Pod가 자동으로 다시 생성됩니다.
배포 spec.progressDeadlineSeconds: 2147483647이 600으로 감소했습니다. 실패로 선언하기 전에 배포가 '진행 중'으로 유지되는 시간을 줄입니다.
spec.revisionHistoryLimit: 2147483647이 10으로 감소했습니다. 배포 컨트롤러에서 삭제하기 전에 남아 있는 ReplicaSet 객체 수를 제한합니다.
spec.strategy.rollingUpdate.maxSurge: 25%로 증가했습니다. 순차적 업데이트가 specs.replicas에 지정된 Pod의 원하는 수를 초과하여 만들 수 있는 최대 Pod 수를 정의합니다.
spec.strategy.rollingUpdate.maxUnavailable: 25%로 증가했습니다. 순차적 업데이트는 사용할 수 없는 Pod 수가 이 수 미만일 때만 계속됩니다. 백분율인 경우 spec.replicas에 지정됩니다.
StatefulSet spec.updateStrategy.type: OnDelete가 RollingUpdate로 변경되었습니다. RollingUpdate를 사용할 경우 StatefulSet 정의를 변경하면 Pod가 자동으로 다시 생성됩니다.

1.16으로 업그레이드 준비

API 객체를 삭제하고 다시 만들 필요가 없습니다. 새 API 버전을 사용하여 기존의 모든 영구 API 객체를 이미 읽고 업데이트할 수 있습니다.

그러나 Kubernetes 1.16으로 업그레이드하기 전에 클라이언트와 매니페스트를 마이그레이션하는 것이 좋습니다. 모든 GKE 버전에는 새 API 버전이 제공됩니다.

문제 해결

지원 중단된 API에 쓰는 API 클라이언트 찾기

Google Cloud의 작업 제품군이 사용 설정된 클러스터는 다음 쿼리를 사용하여 지원 중단된 API에 쓰는 클라이언트를 식별할 수 있습니다.

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "apps/v1beta1" OR "apps/v1beta2")
protoPayload.request.kind!="Ingress"
NOT ("kube-system")

kubectl get ... -o yaml 실행 후 지원 중단된 버전 표시

kubectl get ...을 사용 중인 클러스터에서 사용할 수 있는 경우 extensions/v1beta1 버전이 선호됩니다. 예를 들어 다음 명령어는 1.15 클러스터에서 extensions/v1beta1 배포를 가져옵니다.

kubectl get deployments -o yaml

클러스터를 Kubernetes 1.16으로 업그레이드한 후 같은 명령어를 실행하면 자동으로 새 API가 사용됩니다.

API 그룹 또는 버전을 명시적으로 지정할 수 있습니다. 예를 들어 apps/v1 배포를 가져오려면 다음을 실행합니다.

kubectl get deployments.v1.apps -o yaml

리소스

자세한 내용은 OSS Kubernetes 설명서에서 확인할 수 있습니다.