클러스터, 작업자 노드 및 클러스터 컴포넌트 업데이트
마스터 노드, 워커 노드 및 클러스터 구성 요소를 올바른 순서대로 업데이트하여 클러스터의 보안과 지원을 유지하십시오. 순서를 따르지 않고 업데이트하면 버전 불일치로 인한 오류나 예기치 않은 가동 중단이 발생할 수 있습니다.
다음 순서대로 업데이트를 완료하십시오:
- 클러스터 마스터를 업데이트하십시오.
- 인프라 유형에 따라 Classic, VPC 또는 Satellite — 인프라 유형에 따라 선택하십시오. 어떤 유형인지 잘 모르시겠나요? IBM Cloud 콘솔에서 클러스터를 클릭하고 [개요] 탭의 [ 인프라 ] 필드를 확인하세요. 여기에는 Classic, VPC 또는 Satellite.
- 클러스터 구성 요소 업데이트 Fluentd, Ingress ALB 등과 같이 수동으로 관리하는 경우.
- 관리형 애드온을 업데이트합니다.
마스터 업데이트
- 마스터를 언제 업데이트해야 하는지 어떻게 알 수 있나요?
- 업데이트가 사용 가능하면 콘솔, 공지사항 및 CLI에서 알림을 받습니다. 또한 지원되는 버전 페이지 를 주기적으로 확인할 수 있습니다.
- 마스터 브랜치는 최신 버전보다 몇 버전 뒤처져 있을 수 있나요?
- API 서버는 현재 버전보다 한 단계 앞선 버전으로만 업데이트할 수 있습니다(
n+1). - 작업자 노드에서 마스터보다 최신 버전을 실행할 수 있나요?
- 작업자 노드는 마스터보다 최신
major.minorKubernetes 버전을 실행할 수 없습니다. 또한, 워커 노드는 마스터 버전보다 최대 두 개의 마이너 버전까지만 뒤처져 있어야 합니다(n-2). 먼저, 마스터를 업데이트하세요 를 최신 Kubernetes 버전으로 업데이트하십시오. 그리고 클러스터의 작업자 노드를 업데이트하십시오.
작업자 노드는 마스터보다 이후 패치 버전을 실행할 수 있습니다(예: 보안 업데이트를 위한 작업자 노드 전용 패치 버전).
- 패치 업데이트는 어떻게 적용되나요?
- 기본적으로 마스터에 대한 패치 업데이트는 며칠에 걸쳐 자동으로 적용되므로, 마스터에 적용되기 전에는 마스터 패치 버전이 사용 가능으로 표시되지 않을 수 있습니다. 업데이트 자동화는 비정상 상태이거나 현재 오퍼레이션이 진행 중인 클러스터 또한 건너뜁니다. 마스터를 한 부 버전에서 다른 부 버전으로 업데이트하는 경우에만 필요한 패치와 같은 특정 마스터 수정팩에 대해서는 IBM에서 자동 업데이트를 사용 안함으로 설정할 수 있습니다.
이러한 경우라면, Kubernetes 에서 버전 정보를 확인하여 잠재적인 영향 여부를 파악한 후, 업데이트 자동화 기능이 적용될 때까지 기다리지 않고 직접
ibmcloud ks cluster master update명령어를 안전하게 사용할 수 있습니다.
마스터와는 달리, 작업자 노드는 각 패치 버전에 대해 업데이트해야 합니다.
- 마스터 업데이트 중에는 어떤 일이 일어나나요?
- 세 개의 복제본 팟(Pod)에서 마스터가 높은 가용성을 보입니다. 한 번에 한 개의 팟(Pod)을 사용할 수 없는 경우에만 마스터 팟(Pod)에서 롤링 업데이트가 수행됩니다. 업데이트 중 사용자가 클러스터에 액세스하여 클러스터를 변경할 수 있도록 두 인스턴스는 시작되어 실행 중입니다. 작업자 노드, 앱 및 리소스는 계속 실행됩니다.
- 업데이트를 이전 버전으로 되돌릴 수 있나요?
- 아니오. 업데이트 프로세스가 발생된 후에는 클러스터를 이전 버전으로 롤백할 수 없습니다. 프로덕션 마스터를 업데이트하기 전에는 반드시 테스트 클러스터를 사용하고 지시사항에 따라 잠재적인 문제를 처리하십시오.
- 마스터를 업데이트하려면 어떤 절차를 따라야 하나요?
- 다음 다이어그램은 마스터 업데이트 시 수행 가능한 프로세스를 보여줍니다.
클러스터 마스터 업데이트 단계
시작하기 전에, ‘운영자’ 또는 ‘관리자’ IAM 플랫폼 액세스 역할을 보유하고 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.
인증 기관(CA) 인증서 교체 작업이 진행 중인 경우, 교체 작업이 완료될 때까지 마스터 업데이트가 차단됩니다. 시작하기 전에 진행 중인 로테이션의 상태를 확인하십시오.
Kubernetes 마스터 주 또는 부 버전을 업데이트하려면 다음을 수행하십시오.
-
Kubernetes 의 버전 정보를 확인하고, ‘Update before master’로 표시된 업데이트를 모두 수행하십시오.
-
Kubernetes 유용한 경고 사항(예: 사용 중단 공지 등)을 모두 검토하십시오.
-
클러스터에 설치한 각 추가 기능 및 플러그인에 대해 클러스터 버전 업데이트로 인해 발생할 수 있는 영향을 확인하십시오.
-
추가 기능 확인
- 클러스터 내의 추가 기능을 나열하십시오.
ibmcloud ks cluster addon ls --cluster CLUSTER - 설치된 각 추가 기능에 대해 지원되는 Kubernetes 버전을 확인하십시오.
ibmcloud ks addon-versions - 클러스터를 업데이트할 Kubernetes 버전에서 실행되도록 추가 기능을 업데이트해야 하는 경우 추가 기능을 업데이트하십시오.
- 클러스터 내의 추가 기능을 나열하십시오.
-
플러그인 확인
- Helm 카탈로그에서 클러스터에 설치한 플러그인을 찾으십시오.
- 사이드 메뉴에서 소스 및 TAR 파일 섹션을 펼치십시오.
- 소스 코드를 다운로드하고 여십시오.
- 지원되는 버전에 대해서는
README.md또는RELEASENOTES.md파일을 확인하십시오. - 클러스터를 업데이트할 Kubernetes 버전에서 실행되도록 플러그인을 업데이트해야 하는 경우 플러그인 지시사항을 따라 플러그인을 업데이트하십시오.
-
-
IBM Cloud 콘솔을 사용하거나 CLI
ibmcloud ks cluster master update명령을 실행하여 API 서버 및 이와 연관된 마스터 컴포넌트를 업데이트하십시오. -
잠시 기다린 후에 업데이트가 완료되었는지 확인하십시오. IBM Cloud 클러스터 대시보드에서 API 서버 버전을 검토하거나
ibmcloud ks cluster ls를 실행하십시오. -
마스터에서 실행되는 API 서버 버전과 일치하는
kubectl cli의 버전을 설치하십시오. Kubernetes 서버 버전과 2개 이상의 버전 차이가 나는(n ± 2)kubectl클라이언트 버전은 지원되지 않습니다. 로컬 구성을 새로 고치려면ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID을 실행한 다음, ` `kubectl version --client을 통해 확인하십시오.
마스터 업데이트가 완료되면 워커 노드를 업데이트하십시오. 이 방법은 사용자의 인프라 유형에 따라 달라집니다:
- 기존 워커 노드 업데이트 — ConfigMap 및
worker update명령어로 제어되는 점진적 업데이트 방식을 사용합니다. - VPC 워커 노드 업데이트 — VPC VSI 워커 및 VPC 베어 메탈 워커는
worker replace --update을 사용해야 합니다. ConfigMap 의 점진적 업데이트 절차는 아직 VPC 워커 노드에서는 지원되지 않습니다.
클래식 작업자 노드 업데이트
기존 인프라 작업자 노드는 해당 위치에서 롤링 업데이트를 수행합니다. 업데이트는 한 번에 사용 불가능한 노드의 수를 정의하는 Kubernetes ConfigMap 에 의해 제어됩니다. ibmcloud ks worker update 명령어는 클래식 워커 노드에서만 지원됩니다.
다음 두 가지 유형의 업데이트를 수행할 수 있습니다:
- 패치: 보안 수정 사항이 적용되고 최신 패치 버전으로 업데이트됩니다.
ibmcloud ks worker reload또는ibmcloud ks worker update을(를) 사용하세요. 두 명령어 모두 노드를 최신 패치 버전으로 업데이트합니다.update명령어는 또한 사용 가능한major.minor버전 업데이트가 있다면, 이를 적용하여 마스터와 동기화합니다. - Major.minor: 워커 노드의 Kubernetes 버전을 마스터와 일치하도록 업데이트합니다. 워커 노드는 마스터보다 최대 두 버전 뒤처져 있을 수 있습니다(
n-2).ibmcloud ks worker update명령어를 사용하십시오.
자세한 정보는 업데이트 유형을 참조하십시오.
인증서 로테이션의 가장 긴 단계에는 작업자 노드를 다시 로드하거나 교체하는 것이 포함되므로 작업자 노드를 업데이트할 때마다 CA 인증서를 로테이션하는 것이 좋습니다.
- 업데이트 중에는 내 앱이 어떻게 되나요?
- 업데이트된 워커 노드에서 실행 중인 앱은 클러스터 내의 다른 워커 노드(다른 워커 풀에 속한 노드나 독립형 워커 노드 포함)로 재스케줄링됩니다. 가동 중단을 방지하려면, 업데이트를 시작하기 전에 클러스터에 워크로드를 처리할 수 있는 충분한 용량이 확보되어 있는지 확인하십시오.
- 업데이트나 재로드 중에 한 번에 몇 개의 워커 노드가 중단되도록 제어하려면 어떻게 해야 하나요?
- Kubernetes ConfigMap 을 사용하여 한 번에 가용하지 않을 수 있는 워커 노드의 최대 수를 설정하십시오. 작업자 노드는 라벨을 통해 식별됩니다. IBM 에서 제공하는 레이블이나 사용자 정의 레이블을 사용할 수 있습니다. 모든 워커 노드가 계속 가동 상태를 유지해야 하는 경우, 업데이트 전에 워커 풀의 규모를 조정하거나 독립형 워커 노드를 추가하여 일시적인 용량을 확보하는 방안을 고려해 보십시오.
ConfigMap 는 업데이트 동작만 제어합니다. 이는 요청 시 즉시 발생하는 워커 노드 재로딩에는 영향을 미치지 않습니다.
- 만약 구성 맵을 정의하지 않기로 한다면 어떻게 될까요?
- 기본적으로 업데이트 중에는 각 클러스터의 전체 워커 노드 중 최대 20%까지 사용 불가능한 상태가 될 수 있습니다.
ConfigMap에defaultcheck.json항목을 정의하여 이 값을 재정의할 수 있습니다.
전제조건
기존 인프라 워커 노드를 업데이트하기 전에 다음 필수 전제 조건을 완료하십시오.
워커 노드 업데이트 과정에서 워커 노드 머신의 이미지가 재설치되며, 영구 저장소에 저장되지 않은 모든 데이터는 영구적으로 삭제됩니다. 시작하기 전에, 보존해야 할 데이터가 모두 워커 노드 외부에 저장되어 있는지 확인하십시오.
클러스터에 Portworx 이 설치되어 있는 경우, 워커 노드를 업데이트하기 전에 Portworx 구성을 업데이트해야 합니다.
업데이트 전 수행 사항 (순서대로 완료하세요)
- 최신 보안 패치 및 필요한 변경 사항에 대해서는 ‘ Kubernetes ’ 버전 정보를 확인하십시오.
- Kubernetes 버전 준비 가이드에서 ‘마스터 적용 전 업데이트’ 또는 ‘마스터 적용 후 업데이트 ’로 표시된 변경 사항을 모두 적용하십시오.
- 워커 노드를 업데이트하기 전에 마스터를 먼저 업데이트하십시오. 워커 노드의 버전은 마스터에서 실행되는 API 서버의 버전보다 높을 수 없습니다.
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- 업데이트 기간 동안 워크로드 재일정을 위한 추가 용량을 확보하기 위해 클러스터에 워커 노드를 추가하는 것을 고려해 보십시오. 업데이트가 완료된 후에는 불필요한 노드를 제거할 수 있습니다.
필요한 권한
운영자 또는 관리자 IAM 플랫폼 액세스 역할 가 설치되어 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.
configmap을 사용하여 CLI에서 클래식 작업자 노드 업데이트
ConfigMap 를 사용하여 클래식 워커 노드에 대한 롤링 업데이트를 수행하십시오. ConfigMap 를 사용하면 존 또는 리전별로 한 번에 사용 불가능한 노드의 수를 제어할 수 있습니다. 클러스터에 기본값인 20% 가용성 제한 규칙이 적합한 경우, 3단계와 4단계( ConfigMap 생성)를 건너뛰고 5단계로 바로 진행하여 기본 동작을 적용하여 업데이트를 수행할 수 있습니다.
-
전제조건 단계를 완료하십시오.
-
사용 가능한 작업자 노드를 나열하고 사설 IP 주소를 기록해 두십시오.
ibmcloud ks worker ls --cluster CLUSTER -
작업자 노드의 레이블을 보십시오. CLI 출력의 Labels 섹션에서 작업자 노드 레이블을 찾을 수 있습니다. 모든 레이블은
NodeSelectorKey및NodeSelectorValue로 구성되어 있습니다.kubectl describe node PRIVATE-WORKER-IP출력 예
NAME: 10.184.58.3 Roles: <none> Labels: arch=amd64 beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux failure-domain.beta.kubernetes.io/region=us-south failure-domain.beta.kubernetes.io/zone=dal12 ibm-cloud.kubernetes.io/encrypted-docker-data=true ibm-cloud.kubernetes.io/iaas-provider=softlayer ibm-cloud.kubernetes.io/machine-type=u3c.2x4.encrypted kubernetes.io/hostname=10.123.45.3 privateVLAN=2299001 publicVLAN=2299012 Annotations: node.alpha.kubernetes.io/ttl=0 volumes.kubernetes.io/controller-managed-attach-detach=true CreationTimestamp: Tue, 03 Apr 2022 15:26:17 -0400 Taints: <none> Unschedulable: false -
구성 맵을 작성하고 작업자 노드에 대한 비가용성 규칙을 정의하십시오. ConfigMap 는 최대 15개의 명명된 검사를 지원합니다. 각 검사는 레이블을 기준으로 일련의 워커 노드를 대상으로 하며, 해당 노드 중 한 번에 가용하지 않을 수 있는 노드의 최대 비율을 설정합니다. 다음 예제에서는 영역 검사(
zonecheck.json), 영역 검사(regioncheck.json), 기본 대체 검사(defaultcheck.json) 및 사용자 정의 검사를 위한 템플릿을 보여줍니다. 각 확인 단계마다, 이전 단계에서 가져온 워커 노드 레이블 중 하나를 선택하여 대상 노드를 지정하십시오.검사할 때마다
NodeSelectorKey및NodeSelectorValue에 대해 하나의 값만 설정할 수 있습니다. 둘 이상의 지역, 구역 또는 기타 작업자 노드 레이블에 대해 규칙을 설정하려면 새 검사를 작성하십시오. 구성 맵에 최대 15개의 검증을 정의할 수 있습니다. 검사를 더 추가하면 요청된 모든 작업자가 업데이트될 때까지 한 번에 하나의 작업자 노드만 다시 로드됩니다.예
apiVersion: v1 kind: ConfigMap metadata: name: ibm-cluster-update-configuration namespace: kube-system data: drain_timeout_seconds: "120" zonecheck.json: | { "MaxUnavailablePercentage": 30, "NodeSelectorKey": "failure-domain.beta.kubernetes.io/zone", "NodeSelectorValue": "dal13" } regioncheck.json: | { "MaxUnavailablePercentage": 20, "NodeSelectorKey": "failure-domain.beta.kubernetes.io/region", "NodeSelectorValue": "us-south" } defaultcheck.json: | { "MaxUnavailablePercentage": 20 } <check_name>: | { "MaxUnavailablePercentage": <value_in_percentage>, "NodeSelectorKey": "<node_selector_key>", "NodeSelectorValue": "<node_selector_value>" }drain_timeout_seconds- 선택 사항: 드레인 작업이 완료될 때까지 기다릴 시간(초). 안전하게 작업자 노드의 드레인을 수행하면 작업자 노드에서 모든 기존 팟(Pod)이 제거되며 클러스터의 기타 작업자 노드로 팟(Pod)이 다시 스케줄됩니다. 허용되는 값은 1 - 180 범위의 정수입니다. 기본값은 30입니다.
zonecheck.json및regioncheck.json- 지정된
NodeSelectorKey및NodeSelectorValue로 식별할 수 있는 작업자 노드 세트에 대한 규칙을 정의하는 두 개의 검사입니다.zonecheck.json은 해당 구역 레이블을 기반으로 작업자 노드를 식별하며,regioncheck.json은 프로비저닝 중에 모든 작업자 노드에 추가된 구역 레이블을 사용합니다. 이 예제에서는 자체 구역 레이블이dal13인 모든 작업자 노드 중 30% 와us-south의 모든 작업자 노드 중 20% 가 업데이트 중에 사용 불가능할 수 있습니다. defaultcheck.json- 구성 맵을 작성하지 않았거나 맵이 잘못 구성된 경우에는 Kubernetes 기본값이 적용됩니다. 기본적으로, 클러스터의 작업자 노드는 한 번에 20%만 사용 불가능 상태가 될 수 있습니다. 구성 맵에 기본 검사를 추가하여 기본값을 대체할 수 있습니다. 이 예제에서는 구역 및 지역 검사(
dal13또는us-south)에서 지정되지 않은 모든 작업자 노드가 업데이트 중에 사용 불가능할 수 있습니다. MaxUnavailablePercentage- 지정된 레이블 키 및 값에 대해 사용 불가능 상태가 될 수 있는 노드의 최대 수이며 이는 백분율로 지정됩니다. 배치, 다시 로드 또는 프로비저닝 프로세스 중에는 작업자 노드를 사용할 수 없습니다. 정의된 최대 사용 불가능 백분율을 초과하면 큐에 지정된 작업자 노드가 업데이트로부터 차단됩니다.
NodeSelectorKey- 해당 규칙을 설정하고자 하는 작업자 노드의 레이블 키입니다. 사용자는 IBM에서 제공한 기본 레이블과 자신이 작성한 작업자 노드 레이블에 대한 규칙을 설정할 수 있습니다. 하나의 작업자 풀에 속하는 작업자 노드에 대한 규칙을 추가하려는 경우에는
ibm-cloud.kubernetes.io/machine-type레이블을 사용할 수 있습니다. NodeSelectorValue- 사용자가 정의한 규칙에 대해 고려되기 위해 작업자 노드가 보유해야 하는 레이블 값입니다.
-
클러스터에서 구성 맵을 작성하십시오.
kubectl apply -f <filepath/configmap.yaml> -
구성 맵이 작성되었는지 확인하십시오.
kubectl get configmap --namespace kube-system -
작업자 노드를 업데이트하십시오.
ibmcloud ks worker update --cluster CLUSTER --worker WORKER-NODE-1-ID --worker WORKER-NODE-2-ID -
선택사항: 발생하는 유효성 검증 오류 및 구성 맵에 의해 트리거되는 이벤트를 확인하십시오. 이벤트는 CLI 출력의 Events 섹션에서 검토가 가능합니다.
kubectl describe -n kube-system cm ibm-cluster-update-configuration -
작업자 노드의 Kubernetes 버전을 검토하여 업데이트가 완료되었는지 확인하십시오.
kubectl get nodes -
중복된 작업자 노드가 없는지 확인하십시오. 때로는 오래된 클러스터에서 업데이트 후에도
NotReady상태가 표시된 중복된 워커 노드가 나열되기도 합니다. 중복 항목을 제거하려면 문제점 해결을 참조하십시오.
다음 단계
-
기타 작업자 풀에서 업데이트 프로세스를 반복하십시오.
-
클러스터에서 근무하는 모든 개발자에게
kubectlCLI를 업데이트합니다 로 알림을 보내, Kubernetes 의 마스터 버전과 일치하도록 하십시오. 서버 버전과 2개 이상의 버전이 다른kubectl클라이언트를 실행하는 것은 지원되지 않으며, 예기치 않은 오류가 발생할 수 있습니다. -
Kubernetes 대시보드가 사용량 그래프를 표시하지 않는 경우에는
kube-dashboard팟(Pod)을 삭제하십시오.
콘솔에서 클래식 작업자 노드 업데이트
ConfigMap 를 처음 설정한 후에는 IBM Cloud 콘솔을 사용하여 워커 노드를 업데이트할 수 있습니다. 콘솔은 ConfigMap 에서 정의한 사용 불가 규칙을 준수합니다.
- 필수 단계를 완료하고, 워커 노드의 업데이트 방식을 제어하기 위해 ConfigMap 를 설정하십시오.
- IBM Cloud 콘솔 메뉴
클릭하고 컨테이너 > 클러스터를 클릭합니다.
- 클러스터 페이지에서 클러스터를 클릭하십시오.
- 작업자 노드 탭에서 업데이트하려는 각 작업자 노드의 선택란을 선택하십시오. 표 헤더 행 위에 조치 표시줄이 표시됩니다.
- 조치 표시줄에서 업데이트를 클릭하십시오.
클러스터에 Portworx 이 설치되어 있는 경우, 업데이트된 워커 노드에서 Portworx 포드를 다시 시작해야 합니다. 자세한 정보는 Portworx 제한사항을 참조하십시오.
VPC 작업자 노드 업데이트
VPC 워커 노드는 유형에 따라 서로 다른 방식으로 업데이트됩니다. ibmcloud ks worker update 명령어는 어떤 VPC 워커 노드에서도 지원되지 않습니다. 어떤 경우든 클러스터 마스터를 먼저 업데이트해야 합니다.
- VPC 베어 메탈 워커 및 VPC 가상 서버 인스턴스(VSI) 워커:
ibmcloud ks worker replace --update(마스터 버전과 일치하도록) 또는ibmcloud ks worker replace(패치 갱신 전용)을 사용하여 교체되었습니다. 기존 노드가 삭제되고 새로운 노드가 프로비저닝됩니다.
다음 두 가지 유형의 업데이트를 수행할 수 있습니다:
- 패치: 현재 BOM 버전의 최신 패치에 보안 수정 사항 및 업데이트를 적용합니다.
ibmcloud ks worker replace을(를) 사용하십시오. - Major.minor: 워커 노드의 Kubernetes 버전을 마스터와 일치하도록 업데이트합니다. 워커 노드는 마스터보다 최대 두 버전 뒤처져 있을 수 있습니다(
n-2).ibmcloud ks worker replace --update를 사용하십시오.
인증서 로테이션의 가장 긴 단계에는 작업자 노드를 다시 로드하거나 교체하는 것이 포함되므로 작업자 노드를 업데이트할 때마다 CA 인증서를 로테이션하는 것이 좋습니다.
- 업데이트 중에는 내 앱이 어떻게 되나요?
- 업데이트된 워커 노드에서 실행되던 애플리케이션은 클러스터 내의 다른 워커 노드로 재할당됩니다. 이러한 작업자 노드는 다른 작업자 풀에 있을 수 있습니다. 가동 중단을 방지하려면, 업데이트를 시작하기 전에 클러스터에 워크로드를 처리할 수 있는 충분한 용량이 확보되어 있는지 확인하십시오. 자세한 정보는 클래식 클러스터에 작업자 노드 추가 또는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.
- 업데이트가 진행되는 동안 내 워커 노드에는 어떤 일이 발생하나요?
- 워커 노드는 기존 워커 노드를 제거하고, 업데이트된 패치 또는
major.minor버전에서 실행되는 새로운 워커 노드를 프로비저닝함으로써 교체됩니다. 대체 작업자 노드는 동일 구역, 동일 작업자 풀에서 삭제된 작업자 노드와 동일한 특성으로 작성됩니다. 그러나 대체 작업자 노드에는 새 사설 IP 주소가 지정되며 이전 작업자 노드에 적용한 사용자 정의 레이블 또는 오염(작업자 풀 레이블 또는 오염은 대체 작업자 노드에 계속 적용됨)을 잃게 됩니다. - 여러 워커 노드를 동시에 교체하면 어떻게 되나요?
- 여러 작업자 노드를 동시에 교체하는 경우 하나씩 삭제되는 것이 아니라 동시에 삭제되고 교체됩니다. 작업자 노드를 교체하기 전에 워크로드를 다시 스케줄링할 수 있는 충분한 용량이 클러스터에 있는지 확인하십시오.
- 대체 작업자 노드가 생성되지 않으면 어떻게 되나요?
- 작업자 풀에서 자동 리밸런싱이 사용으로 설정되지 않으면 대체 작업자 노드가 작성되지 않습니다.
전제조건
VPC 인프라 워커 노드를 업데이트하기 전에 다음 필수 전제 조건을 완료하십시오.
VPC VSI 워커의 경우, 워커 노드가 삭제되고 새로운 노드로 대체됩니다. VPC 베어 메탈 작업자의 경우, 노드가 해당 위치에서 다시 로드됩니다. 두 경우 모두, 영구 저장소에 저장되지 않은 데이터는 영구적으로 삭제됩니다. 시작하기 전에, 보존해야 할 데이터가 모두 워커 노드 외부에 저장되어 있는지 확인하십시오.
클러스터에 Portworx 가 배포되어 있는 경우, 이 페이지에 설명된 단계 대신 다음 단계를 따라 VPC 워커 노드를 Portworx 볼륨으로 업데이트하십시오.
업데이트 전 수행 사항 (순서대로 완료하세요)
- 최신 보안 패치 및 필요한 변경 사항에 대해서는 ‘ Kubernetes ’ 버전 정보를 확인하십시오.
- Kubernetes 버전 준비 가이드에서 ‘마스터 적용 전 업데이트’ 또는 ‘마스터 적용 후 업데이트 ’로 표시된 변경 사항을 모두 적용하십시오.
- 워커 노드를 업데이트하기 전에 마스터를 먼저 업데이트하십시오. 워커 노드의 버전은 마스터에서 실행되는 API 서버의 버전보다 높을 수 없습니다.
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
필요한 권한
운영자 또는 관리자 IAM 플랫폼 액세스 역할 가 설치되어 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.
CLI에서 VPC 작업자 노드 업데이트
CLI를 사용하여 워커 노드를 업데이트하려면 다음 단계를 따르십시오.
-
전제조건 단계를 완료하십시오.
-
선택 사항: 워커 풀의 크기를 조정하여 클러스터의 용량을 늘리세요. 작업자 노드의 팟(Pod)은 다시 스케줄될 수 있으며 업데이트 중에 추가된 작업자 노드에서 계속 실행될 수 있습니다. 자세한 정보는 클래식 클러스터에 작업자 노드 추가 또는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.
-
클러스터의 작업자 노드를 나열하고 업데이트할 작업자 노드의 ID 및 기본 IP를 기록해 두십시오.
ibmcloud ks worker ls --cluster CLUSTER -
워커 노드를 업데이트합니다.
worker replace명령어를 사용하여 마스터 버전과 일치하는 패치 버전 또는major.minor버전을 업데이트하십시오.- 워커 노드를 마스터와 동일한
major.minor버전(예: 1.35 에서 1.36 로)으로 업데이트하려면--update옵션을 포함하십시오.
ibmcloud ks worker replace --cluster CLUSTER --worker WORKER-NODE-ID --update ``` * `major.minor` 버전은 동일하게 유지한 채 워커 노드를 최신 패치 버전으로 업데이트하려는 경우(예: 1.35.8_1530 에서 1.35.9_1533 로), `--update` 옵션을 포함하지 마십시오. ```sh {: pre} ibmcloud ks worker replace --cluster CLUSTER --worker WORKER-NODE-ID ``` - 워커 노드를 마스터와 동일한
-
업데이트해야 하는 각 작업자 노드에 대해 이러한 단계를 반복하십시오.
-
선택 사항: 교체된 워커 노드가 ‘Ready’ 상태가 되면, 원하는 클러스터 용량에 맞게 워커 풀의 크기를 조정하십시오. 자세한 정보는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.
VPC 클러스터에서 Portworx를 실행 중인 경우 새 작업자 노드에 수동으로Block Storage for VPC 볼륨을 연결해야 합니다.
VPC 베어 메탈 워커 재시작 중 펌웨어 업데이트
VPC 베어 메탈 워커 노드를 재시작하면, IBM Cloud 인프라가 해당 서버에 대기 중인 펌웨어 업데이트가 있는지 자동으로 확인하고, 재시작 과정의 일환으로 이를 적용합니다. 펌웨어 업데이트를 시작하기 위해 별도의 조치가 필요하지 않습니다.
VPC 베어메탈 워커 노드를 재시작할 때는 다음 사항을 유의하십시오:
- 재장전 시간 연장
- 재장전 중에 펌웨어 업데이트가 적용될 경우, 전체 재장전 시간이 일반적인 재장전 소요 시간보다 30분 이상 크게 늘어날 수 있습니다. 이에 따라 유지보수 기간을 계획하십시오.
- 예정된 업데이트에 대한 사전 확인 기능 없음
- reload 명령을 실행하기 전에는 해당 워커 노드에 펌웨어 업데이트가 대기 중인지 여부를 확인할 수 없습니다.
- 데이터 손실 위험
- 모든 VPC 베어 메탈 워커 재설치와 마찬가지로, 펌웨어 업데이트 적용 여부와 관계없이 재설치 과정에서 로컬 디스크의 데이터는 삭제됩니다. 다시 로드하기 전에 영구 저장소에 저장되지 않은 데이터는 모두 백업하십시오.
- 펌웨어 업데이트로 인한 재장전 오류
- 경우에 따라 펌웨어 업데이트가 실패할 수 있으며, 이로 인해 워커 노드가 ‘
reload_failed’ 상태(Failed to reload worker)로 전환되고, 상태 세부 정보는The infrastructure firmware update has failed. (P4056)로 표시됩니다. 메모리가 부족할 경우- 몇 분 정도 기다린 후,
ibmcloud ks worker reload --cluster CLUSTER --worker WORKER-NODE-ID을 다시 실행하여 새로 고침을 시도해 보세요. - 2~3회 시도해도 오류가 계속 발생하면 IBM Cloud 에서 지원 요청을 제출하십시오.
- 몇 분 정도 기다린 후,
콘솔에서 VPC 작업자 노드 업데이트
콘솔에서 VPC 작업자 노드를 업데이트할 수 있습니다. 시작하기 전에, 애플리케이션의 가동 중단 시간을 방지하기 위해 클러스터에 워커 노드를 추가하는 것을 고려해 보십시오.
'업데이트' 작업의 동작은 워커 노드 유형에 따라 달라집니다:
- 모든 VPC 워커: 워커 노드가 업데이트된 버전의 새 노드로 교체됩니다.
- 전제조건 단계를 완료하십시오.
- IBM Cloud 콘솔 메뉴
클릭하고 컨테이너 > 클러스터를 클릭합니다.
- 클러스터 페이지에서 클러스터를 클릭하십시오.
- 작업자 노드 탭에서 업데이트하려는 각 작업자 노드의 선택란을 선택하십시오. 표 헤더 행 위에 조치 표시줄이 표시됩니다.
- 조치 표시줄에서 업데이트를 클릭하십시오.
특성 업데이트(머신 유형)
더 많은 메모리, 추가 CPU, 또는 GPU 지원 머신 등 다른 연산 리소스가 필요할 때는 워커 노드의 플레버(머신 유형)를 업데이트하십시오. 플레버를 업데이트하면 새로운 플레버를 가진 새로운 워커 풀이 생성된 다음, 기존 워커 풀이 제거됩니다. 이 프로세스는 노드를 교체하기 때문에, 영구 저장소에 저장되지 않은 워커 노드의 모든 데이터는 영구적으로 삭제됩니다.
시작하기 전에
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- 보존해야 할 데이터가 모두 워커 노드 외부의 영구 저장소에 저장되어 있는지 확인하십시오. 워커 노드에만 저장된 데이터는 손실되며 복구할 수 없습니다.
- 운영자 또는 관리자 IAM 플랫폼 액세스 역할 가 설치되어 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.
맛을 업데이트하려면
-
사용 가능한 작업자 노드를 나열하고 사설 IP 주소를 기록해 두십시오.
- 클러스터에서 사용 가능한 작업자 풀을 나열하십시오.
ibmcloud ks worker-pool ls --cluster CLUSTER ``` 2. 작업자 풀의 작업자 노드를 나열하십시오. **ID** 및 **사설 IP**를 기록해 두십시오. ```sh {: pre} ibmcloud ks worker ls --cluster CLUSTER --worker-pool WORKER-POOL ``` 3. 작업자 노드에 대한 세부사항을 가져오십시오. 출력에서 구역 및 클래식 클러스터의 사설 및 공용 VLAN ID 또는 VPC 클러스터의 서브넷 ID를 기록하십시오. ```sh {: pre} ibmcloud ks worker get --cluster CLUSTER --worker WORKER-ID ``` -
구역에서 사용 가능한 특성을 나열하십시오.
ibmcloud ks flavors --zone <zone> -
새 머신 유형으로 작업자 노드를 작성하십시오.
- 대체할 작업자 노드의 수로 작업자 풀을 작성하십시오.
- 클래식 클러스터:
ibmcloud ks worker-pool create classic --name WORKER-POOL --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE - VPC 2세대 클러스터:
ibmcloud ks worker-pool create vpc-gen2 --name NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE --label LABEL
- 클래식 클러스터:
- 작업자 풀이 작성되었는지 확인하십시오.
ibmcloud ks worker-pool ls --cluster CLUSTER ``` 3. 이전에 검색한 작업자 풀에 구역을 추가하십시오. 구역을 추가하면 작업자 풀에서 정의된 작업자 노드가 구역에서 프로비저닝되며 향후 워크로드 스케줄을 위해 고려됩니다. 작업자 노드를 여러 구역에 분산시키려는 경우 [클래식](/docs/containers?topic=containers-regions-and-zones#zones-mz) 또는 [VPC](/docs/containers?topic=containers-regions-and-zones#zones-vpc) 다중 구역 위치를 선택하십시오. * 클래식 클러스터: ```sh {: pre} ibmcloud ks zone add classic --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --private-vlan PRIVATE-VLAN-ID --public-vlan PUBLIC-VLAN-ID ``` * VPC 클러스터: ```sh {: pre} ibmcloud ks zone add vpc-gen2 --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --subnet-id VPC-SUBNET-ID ``` - 대체할 작업자 노드의 수로 작업자 풀을 작성하십시오.
-
작업자 노드가 배치될 때까지 대기하십시오. 작업자 노드 상태가 **정상(Normal)**으로 변경되면 배치가 완료된 것입니다.
ibmcloud ks worker ls --cluster CLUSTER -
기존 워커 풀을 제거하십시오. (월별 청구되는) Classic 베어 메탈 플레어를 해지하는 경우, 월 중도에 해지하더라도 해당 월의 요금이 전액 청구됩니다. 베어 메탈을 포함한 VPC 작업에 대해서는 시간당 요금이 청구됩니다.
- 이전 머신 유형의 작업자 풀을 제거하십시오. 작업자 풀을 제거하면 모든 구역의 풀에서 모든 작업자 노드가 제거됩니다. 이 프로세스는 완료하는 데 몇 분 정도 소요될 수 있습니다.
ibmcloud ks worker-pool rm --worker-pool WORKER-POOL --cluster CLUSTER ``` 2. 작업자 풀이 제거되었는지 확인하십시오. ```sh {: pre} ibmcloud ks worker-pool ls --cluster CLUSTER ``` -
작업자 노드가 클러스터에서 제거되었는지 확인하십시오.
ibmcloud ks worker ls --cluster CLUSTER -
이러한 단계를 반복하여 기타 작업자 풀 또는 독립형 작업자 노드를 다른 특성으로 업데이트하십시오.
작업자 풀은 어떻게 축소됩니까?
이 섹션에서는 워커 노드 업데이트 후나 ibmcloud ks worker-pool resize 를 실행할 때와 같이. 이 동작을 별도로 설정할 필요는 없습니다. 자동으로 처리됩니다.
워커 풀 내의 워커 노드 수가 줄어들면, 상태, 정상 작동 여부, 버전 등 여러 속성을 기준으로 워커 노드의 삭제 우선순위가 결정됩니다.
이 우선순위 로직은 오토스케일러 추가 기능과 관련이 없습니다.
다음 표는 작업자 노드가 삭제를 위해 우선순위가 지정되는 순서를 표시합니다.
ibmcloud ks worker ls 명령을 실행하여 표에 나열된 모든 작업자 노드 특성을 볼 수 있습니다.
| 우선순위 | 특성 | 설명 |
|---|---|---|
| 1 | 작업자 노드 상태 | 작동하지 않는 상태 또는 작동하지 않는 상태의 작업자 노드는 제거를 위해 우선순위가 지정됩니다. 이 목록은 provision_failed, deploy_failed, deleting, provision_pending, provisioning, deploying, provisioned,
reloading_failed, reloading, deployed 의 가장 높은 우선순위에서 가장 낮은 우선순위로 정렬된 상태를 표시합니다. |
| 2 | 작업자 노드 상태 | 상태가 양호하지 않은 작업자 노드는 상태가 양호한 작업자 노드보다 우선순위가 높습니다. 이 목록은 가장 높은 우선순위에서 가장 낮은 우선순위로 정렬된 상태 ( critical, warning, pending, unsupported, normal) 를 표시합니다. |
| 3 | 작업자 노드 버전 | 이전 버전에서 실행되는 작업자 노드는 삭제 우선순위가 높습니다. |
| 4 | 선택한 배치 설정 | 전용 호스트에서 실행 중인 작업자 전용입니다. DesiredPlacementDisabled 옵션이 true 로 설정된 전용 호스트에서 실행 중인 작업자 노드는 삭제 우선순위가 더 높습니다. |
| 5 | 알파벳순 | 작업자 노드가 위에 나열된 요인을 기반으로 우선순위가 지정된 후에는 알파벳순으로 삭제됩니다. 작업자 노드 ID 규칙에 따라 클래식 및 VPC 클러스터에 있는 작업자의 ID가 나이와 상관되므로 이전 작업자 노드가 먼저 제거됩니다. |
클러스터 컴포넌트 업데이트
IBM Cloud Kubernetes Service 클러스터는 클러스터를 프로비저닝할 때 자동으로 설치되는 컴포넌트(예: Ingress)와 함께 제공됩니다. 기본적으로 이러한 컴포넌트는 IBM에 의해 자동으로 업데이트됩니다. 그러나 사용자는 일부 컴포넌트에 대해 자동 업데이트를 사용 안함으로 설정하고 마스터 및 작업자 노드와 별도로 수동으로 업데이트할 수 있습니다.
- 클러스터와 별도로 업데이트할 수 있는 기본 구성 요소는 무엇입니까?
- 사용자는 선택적으로 다음 컴포넌트에 대해 자동 업데이트를 사용 안함으로 설정할 수 있습니다.
- 클러스터와 별도로 업데이트할 수 없는 구성 요소가 있나요?
- 예. 클러스터는 변경 불가능한 다음 관리 컴포넌트 및 연관된 리소스와 함께 배치됩니다. 특정 성능 이점을 얻기 위해 팟(Pod)을 스케일링하고 ConfigMap을 편집하는 경우는 예외입니다. 이러한 배치 컴포넌트 중 하나를 변경하려고 시도하면 클러스터 마스터로 업데이트될 때 일정 간격마다 해당 원본 설정이 복원됩니다. 그러나 Calico 배치 컴포넌트에 의해 구현되도록 작성하는 Calico 네트워크 정책과 같은 이러한 컴포넌트와 연관된 리소스는 업데이트되지 않습니다.
calico컴포넌트coredns컴포넌트ibm-cloud-provider-ipibm-file-pluginibm-keepalived-watcheribm-master-proxyibm-storage-watcherkubernetes-dashboard컴포넌트metrics-serverolm-operator및catalog컴포넌트(1.16 이상)vpn
- 기본 구성 요소 외에 다른 플러그인이나 애드온을 설치할 수 있나요?
- 네. IBM Cloud Kubernetes Service 에서는 클러스터에 기능을 추가하기 위해 선택할 수 있는 다양한 플러그인과 애드온을 제공합니다. 예를 들어, 블록 스토리지 플러그인을 설치하려면 Helm 차트를 사용할 수 있습니다. 또는 클러스터에서 IBM 에서 관리하는 애드온을 활성화할 수도 있습니다. 이러한 Helm 차트 및 추가 기능은 Helm 차트 readme 파일에 있는 지시사항을 따르거나 관리 추가 기능 업데이트 단계에 따라 별도로 업데이트해야 합니다.
Fluentd에 대한 자동 업데이트 관리
외부 서버로 전달하기 위해 클러스터에 있는 소스의 로깅 구성을 작성하는 경우 Fluentd 컴포넌트가 클러스터에 작성됩니다. 로깅 또는 필터 구성을 변경하려면 Fluentd 컴포넌트가 최신 버전이어야 합니다. 기본적으로 이 컴포넌트에 대한 자동 업데이트는 사용으로 설정됩니다.
다음 명령을 실행하려면 클러스터에 대한 ‘관리자(IBM Cloud)’ IAM 플랫폼 액세스 역할이 있어야 합니다.
Fluentd 컴포넌트의 자동 업데이트는 다음 방법으로 관리할 수 있습니다.
ibmcloud ks logging autoupdate get --cluster CLUSTER명령을 실행하여 자동 업데이트가 사용으로 설정되었는지 확인하십시오.ibmcloud ks logging autoupdate disable명령을 실행하여 자동 업데이트를 사용 안함으로 설정하십시오.- 자동 업데이트가 사용 안함으로 설정되어 있지만 구성을 변경해야 하는 경우에는 두 가지 옵션이 있습니다.
- Fluentd 팟(Pod)에 대해 자동 업데이트를 켭니다.
ibmcloud ks logging autoupdate enable --cluster CLUSTER ``` * `--force-update` 옵션이 포함된 로깅 명령을 사용할 때 일회성 업데이트를 강제 실행합니다. 포드는 ‘ Fluentd ’ 컴포넌트의 최신 버전으로 업데이트되지만, 향후 ‘ Fluentd ’은 자동으로 업데이트되지 않습니다. 명령 예 ```sh {: pre} ibmcloud ks logging config update --cluster CLUSTER --id LOG-CONFIG-ID --type LOG-TYPE --force-update ```
Ingress ALB에 대한 자동 업데이트 관리
Ingress 애플리케이션 로드 밸런서(ALB) 컴포넌트가 업데이트되는 시점을 제어하십시오. ALB를 최신 상태로 유지하는 방법에 대한 정보는 Ingress ALB 라이프사이클 관리를 참조하십시오.
관리 추가 기능 업데이트
관리형 IBM Cloud Kubernetes Service 클러스터 애드온을 사용하면 Istio 와 같은 오픈소스 기능을 통해 클러스터를 손쉽게 강화할 수 있습니다. 클러스터에 추가하는 오픈 소스 도구의 버전은 IBM에서 테스트하고 IBM Cloud Kubernetes Service에서 사용하도록 승인됩니다. 클러스터에서 사용으로 설정한 관리 추가 기능을 최신 버전으로 업데이트하려면 관리 추가 기능 업데이트를 참조하십시오.