Translated message

A translation of this page exists in English.

Kubernetes API 사용 중단 및 삭제 관련 정보 확인

업데이트됨 -

면책 고지: 아래 표시된 외부 웹사이트 링크는 고객의 편의를 위해서만 제공됩니다. Red Hat은 링크를 검토하지 않았으며 컨텐츠 또는 이용 가능 여부에 대해 책임을 지지 않습니다. 외부 웹 사이트에 대한 링크가 포함되어 있다고 해서 Red Hat이 해당 웹 사이트 또는 해당 엔티티, 제품, 서비스를 보증한다는 의미는 아닙니다. 사용자는 본인이 그러한 외부 사이트나 콘텐츠를 사용(또는 신뢰)하여 초래되는 어떠한 손실이나 비용에 대해 Red Hat이 어떠한 책임도 지지 않는 데 동의합니다.

Kubernetes는 상당히 엄격한 API 버전 관리 정책을 따르므로, 여러 릴리스에 걸쳐 v1beta1 및 v2beta1 API가 점차 사용 중단됩니다. 정책 에 따라 베타 API 버전은 사용 중단 후 9개월 또는 3개 릴리스(둘 중 더 긴 기간) 동안 지원되어야 하며, 그 시점 이후에 제거될 수 있습니다.

제거된 API가 워크로드, 도구 또는 클러스터에서 실행되거나 클러스터와 상호 작용하는 기타 구성 요소에서 계속 사용되는 경우 해당 구성 요소의 작동이 실패하기 시작합니다. 따라서 사용자/관리자는 클러스터에서 사용 중인 API 중 제거될 API가 있는지 평가하고, 영향을 받는 구성 요소를 적절한 새 API 버전으로 마이그레이션하는 것이 중요합니다.

이 작업이 완료되면 관리자는 관리자 승인을 제공하고 API 제거가 진행되는 경우 업데이트를 진행할 수 있습니다.

삭제된 API를 사용하는 애플리케이션 마이그레이션

삭제된 Kubernetes API에서 마이그레이션하는 방법에 대한 자세한 내용은 다음을 참조하세요.

제거된 API에 대한 클러스터 평가

관리자가 제거할 API 위치를 식별하는 데 도움이 되는 여러 가지 방법이 있습니다. 그러나 OpenShift Container Platform은 모든 인스턴스, 특히 유휴 상태인 워크로드 또는 사용되는 외부 툴을 식별할 수 없습니다. 관리자가 제거된 API 인스턴스에 대한 모든 워크로드 및 기타 통합을 적절하게 평가해야 합니다.

제거될 예정인 API의 사용 여부를 식별하기 위해 알림 검토

OpenShift Container Platform은 다음 릴리스에서 제거될 API 사용 시 발생하는 두 가지 알림을 제공합니다.

  • APIRemovedInNextReleaseInUse - 다음 OpenShift Container Platform 릴리스에서 제거될 API의 경우입니다.
  • APIRemovedInNextEUSReleaseInUse - 다음 OpenShift Container Platform Extended Update Support(EUS) 릴리스에서 제거될 API의 경우입니다.

이러한 경고 중 하나가 클러스터에서 실행 중인 경우 경고를 검토하고 새 API 버전을 사용하도록 매니페스트 및 API 클라이언트를 마이그레이션하여 경고를 지우는 조치를 취합니다.

클러스터 전체 모니터링을 위한 이러한 알림은 제거될 API를 사용하는 워크로드를 파악하는 데 도움이 되는 정보를 제공하지 않습니다. 또한, 이러한 알림은 프로덕션 시스템에서 알림 피로를 유발하지 않도록 지나치게 민감하지 않게 조정되었습니다. APIRequestCount API를 사용하여 어떤 API가 사용 중인지, 그리고 어떤 워크로드가 제거될 API를 사용하는지에 대한 자세한 정보를 확인할 수 있습니다. 또한 일부 API는 위의 알림을 발생시키지 않을 수 있지만, 여전히 APIRequestCount에서 감지될 수 있습니다.

APIRequestCount를 사용하여 제거될 예정인 API의 사용 여부 식별

APIRequestCount API를 사용하여 API 요청을 추적하고, 제거된 API 중 하나를 사용하고 있는 요청이 있는지 확인할 수 있습니다.

중요: 이전 OCP 4.8 릴리스에는 APIRequestCount에 영향을 주는 버그(BZ 2021629)가 있었지만, 이 문제는 에라타 RHBA-2021:5209를 통해 OCP 4.8.25에서 이미 수정되었습니다. APIRequestCount를 확인하기 전에 최신 OCP 4.8.z 릴리스로 업그레이드하는 것이 좋습니다.

참고: APIRequestCount API를 사용하려면 cluster-admin 역할을 가진 사용자로 클러스터에 액세스할 수 있어야 합니다.

다음 명령을 실행하고 출력의 REMOVEDINRELEASE 열을 확인하여 향후 릴리스에서 제거될 예정이지만 현재 사용 중인 API를 식별합니다.

$ oc get apirequestcounts

출력 예:

NAME                                        REMOVEDINRELEASE   REQUESTSINCURRENTHOUR   REQUESTSINLAST24H
cloudcredentials.v1.operator.openshift.io                      32                      111
ingresses.v1.networking.k8s.io                                 28                      110
ingresses.v1beta1.extensions                1.22               16                      66
ingresses.v1beta1.networking.k8s.io         1.22               0                       1
installplans.v1alpha1.operators.coreos.com                     93                      167
...

-o jsonpath를 사용하여 결과를 필터링할 수도 있습니다.

$ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.status.requestCount}{"\t"}{.metadata.name}{"\n"}{end}'

출력 예:

1.22    11      certificatesigningrequests.v1beta1.certificates.k8s.io
1.22    356     ingresses.v1beta1.extensions
1.22    0       ingresses.v1beta1.networking.k8s.io

APIRequestCount를 사용하여 어떤 워크로드가 제거될 예정인 API를 사용하고 있는지 식별

특정 API 버전에 대한 APIRequestCount 리소스를 검토하여 어떤 워크로드가 해당 API를 사용하는지 식별할 수 있습니다.

중요: 이전 OCP 4.8 릴리스에는 APIRequestCount에 영향을 주는 버그(BZ 2021629)가 있었지만, 이 문제는 에라타 RHBA-2021:5209를 통해 OCP 4.8.25에서 이미 수정되었습니다. APIRequestCount를 확인하기 전에 최신 OCP 4.8.z 릴리스로 업그레이드하는 것이 좋습니다.

참고: APIRequestCount API를 사용하려면 cluster-admin 역할을 가진 사용자로 클러스터에 액세스할 수 있어야 합니다.

다음 명령을 실행하고 출력의 username 및 userAgent 필드를 확인하여 API를 사용하는 워크로드를 식별합니다.

$ oc get apirequestcounts <resource>.<version>.<group> -o yaml

예를 들면 다음과 같습니다.

$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io -o yaml

-o jsonpath를 사용하여 APIRequestCount 리소스에서 username 및 userAgent 값을 추출할 수도 있습니다.

$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io \
  -o jsonpath='{range .status.last24h..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \
  | sort -u | column -t -s ","

참고: 명령에서 ingresses.v1beta1.networking.k8s.io를 현재 사용 중인 각 사용 중단 API의 이름으로 변경하십시오.
참고: 위 명령은 선택한 API가 지난 24시간 동안 사용되었는지 보여 줍니다. 애플리케이션 중 일부를 변경하거나 업그레이드하여 최신 API를 사용하도록 했다면 last24h를 currentHour으로 변경하여 해당 API가 지난 1시간 동안에도 사용되었는지 확인할 수 있습니다.

출력 예:

VERBS  USERNAME                        USERAGENT
watch  bob                             oc/v4.8.11
watch  system:kube-controller-manager  cluster-policy-controller/v0.0.0

중요 사항: 검색 결과에 나타나는 다음 항목들은 무시하셔도 됩니다.

  • system:serviceaccount:kube-system:generic-garbage-collector 및 system:serviceaccount:kube-system:namespace-controller 사용자는 제거할 리소스를 찾기 위해 등록된 모든 API를 탐색하므로 결과에 나타날 수 있습니다.
  • system:kube-controller-manager 및 system:cluster-policy-controller 사용자는 다양한 정책을 적용하는 동안 모든 리소스를 탐색하므로 결과에 나타날 수 있습니다.
  • 클러스터에 OpenShift GitOps가 설치된 경우 system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller 사용자(KCS 6635361에서 추가 정보 참조).
  • 클러스터에 OpenShift Pipelines가 설치된 경우 openshift-pipelines-operator userAgent(KCS 6821411에서 추가 정보 참조).
  • OSD 및 ROSA 클러스터이거나 클러스터에 Velero가 설치된 경우 system:serviceaccount:openshift-velero:velero 및 system:serviceaccount:openshift-oadp:velero 사용자(KCS 6351332에서 추가 정보 참조).
  • system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-controller가 4.10에서 endpointslices.v1beta1.discovery.k8s.io를 사용하는 것으로 나타날 수 있지만, 이 API는 4.12에서 제거됩니다. 이는 OVN-Kubernetes가 4.11에서 v1 EndpointSlice API로 전환하고, 4.10에서 4.12로의 EUS 업그레이드에서는 컨트롤 플레인이 반드시 4.11을 거치기 때문에 문제가 되지 않습니다.
  • system:serviceaccount:openshift-network-operator가 4.10에서 poddisruptionbudgets.v1beta1.policy를 사용하는 것으로 나타날 수 있지만, 이 API는 4.12에서 제거됩니다. 이는 cluster-network-operator가 4.11에서 v1 PodDisruptionBudget API로 전환하고, 4.10에서 4.12로의 EUS 업그레이드에서는 컨트롤 플레인이 반드시 4.11을 거치기 때문에 문제가 되지 않습니다.
  • system:serviceaccount:openshift-monitoring:kube-state-metrics가 horizontalpodautoscalers.v2beta2.autoscaling을 사용하는 것으로 나타날 수 있습니다. OCPBUGS-4112 문제 해결에 따라 모든 4.12 버전이 v2 API로 전환되었으므로 이 문제는 안전하게 무시할 수 있습니다.
  • 4.12로 업그레이드하려고 할 때 system:serviceaccount:prod-rhsso:rhsso-operator가 poddisruptionbudgets.v1beta1.policy를 사용하는 것으로 나타날 수 있습니다. RHSSO 버전이 최신 상태인 경우, Red Hat Single Sign-On(RH SSO) Operator가 사용 중단된 'poddisruptionbudgets.v1beta1.policy' API를 사용함에서 설명한 대로 이 항목은 안전하게 무시할 수 있습니다.
  • 4.13으로 업그레이드하려고 할 때 system:serviceaccount:openshift-kube-storage-version-migrator가 flowschemas.v1beta1.flowcontrol.apiserver.k8s.io를 사용하는 것으로 나타날 수 있습니다. 이는 etcd에서 이전 버전을 마이그레이션하는 데 사용되는 서비스 계정이므로 무시해도 안전합니다. OCP 4.12에서 OCP 4.13으로 업그레이드할 때 openshift-kube-storage-version-migrator의 flowschemas API를 제거하도록 요청하는 버그가 제기되었습니다.

Comments