워커 노드로 지정된 호스트 업데이트
Satellite 가 활성화된 IBM Cloud 서비스(예: 클러스터)에 워커 노드로 할당된 호스트에 대해 최신 OpenShift Container Platform, 운영 체제 및 보안 패치를 적용하려면 다음 단계를 확인하십시오.
모든 IBM Cloud 서비스의 기반이 되는 서비스 클러스터는 Code Engine 또는 IBM Cloud Object Storage 와 같은 서비스를 통해 생성되며, IBM 에서 관리됩니다.
- 업데이트 중에는 내 앱이 어떻게 되나요?
- 업데이트 중인 작업자 노드에서 배치의 일부로서 앱을 실행하는 경우, 해당 앱은 클러스터의 기타 작업자 노드로 다시 스케줄됩니다. 이러한 워커 노드는 다른 워커 풀에 속해 있을 수도 있으며, 독립형 워커 노드가 있는 경우 앱을 독립형 워커 노드에 스케줄링할 수 있습니다. 앱의 작동 중단 시간을 방지하려면 워크로드를 감당할 만한 충분한 용량이 클러스터에 있는지 확인해야 합니다.
- 업데이트나 재로드 중에 한 번에 몇 개의 워커 노드가 중단되도록 제어하려면 어떻게 해야 하나요?
- 모든 작업자 노드가 작동되어 실행 중이어야 하는 경우 연결 및 추가 호스트를 서비스에 지정 하는 것을 고려하십시오. 임시로 추가 호스트를 위치에 추가한 후 업데이트가 완료되면 호스트를 제거할 수 있습니다.
- 또한, 업데이트 중과 같이 한 번에 사용 불가능한 상태가 될 수 있는 워커 노드의 최대 수를 지정하는 ‘ Kubernetes ’ ConfigMap 를 생성할 수 있습니다. 작업자 노드는 작업자 노드 레이블로 식별됩니다. IBM 제공 레이블을 사용하거나 사용자가 작업자 노드에 추가한 사용자 정의 레이블을 사용할 수 있습니다.
작업자 노드 호스트에 버전 업데이트를 사용할 수 있는지 확인
IBM Cloud CLI 또는 IBM Cloud 콘솔을 사용하여 Satellite 사용 IBM Cloud 서비스에 작업자 노드로 지정된 호스트에 대한 버전 업데이트가 사용 가능한지 확인할 수 있습니다.
각 버전 업데이트에 포함된 변경사항을 검토하려면 Red Hat OpenShift on IBM Cloud의 버전 변경 로그를 참조하십시오.
IBM Cloud CLI를 사용하여 버전 업데이트를 사용할 수 있는지 확인
- IBM Cloud에 로그인하십시오. 연합 계정이 있는 경우
--sso옵션을 포함합니다.ibmcloud login [--sso] - 계정의 Satellite 클러스터를 나열합니다.
ibmcloud ks cluster ls --provider satellite - 버전을 업데이트할 클러스터의 작업자 노드를 나열합니다. 출력에서 버전 업데이트를 사용할 수 있음을 표시하는 메시지와 함께 별표
*가 있는지 확인하십시오.
출력 예ibmcloud ks worker ls -c CLUSTER_NAME_OR_IDID Primary IP Flavor State Status Zone Version sat-worker-<ID> <IP_address> upi normal Ready zone-1 4.5.35_1534_openshift* * To update to 4.5.37_1537_openshift version, run 'ibmcloud ks worker replace'. Review and make any required version changes before you update: 'https://ibm.biz/upworker'
IBM Cloud 콘솔에서 버전 업데이트를 사용할 수 있는지 확인
- Satellite 콘솔에 로그인하십시오.
- 업데이트할 호스트가 있는 위치를 클릭하십시오.
- 호스트 탭을 클릭하십시오.
- 호스트 목록에서 업데이트할 호스트의 클러스터 링크를 클릭하십시오. Red Hat OpenShift on IBM Cloud 클러스터 세부사항에 대한 새 탭이 열립니다.
- 작업자 노드 탭을 클릭하십시오.
- ‘버전’ 열에서, 아이콘을 클릭했을 때 ‘
Update available’라고 표시되는 정보 아이콘이 있는지 확인하세요. 업데이트가 사용 가능하지 않은 경우 아이콘이 표시되지 않습니다. - 버전 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 판별하십시오.
작업자 노드 호스트 식별
호스트가 제어 플레인의 일부인지, 관리 서비스에 지정되었는지 또는 위치에 연결되었는지 여부를 판별하십시오.
-
위치 호스트 목록을 작성하고 각 호스트의 ID를 기록해 두세요. 작업자 노드 호스트에는 출력의
Cluster열에 나열된infrastructure가 없습니다.ibmcloud sat host ls --location <location>출력 예를 검토하십시오.
Name ID State Status Zone Cluster Worker ID Worker IP satdemo-cp1 0bc3b92f55968a230985 assigned Ready zone-1 infrastructure sat-satdemocp1-2bda578e901b4047c6e48d766cd99bc11a45fddd 169.62.42.178 satdemo-cp2 999cd38c39ddffe4b672 assigned Ready zone-2 infrastructure sat-satdemocp2-940134e69c2609c5421b2426a7640fa80569668d 169.62.42.183 satdemo-cp5 6ca4fd8fcad1fa622aa4 assigned Ready zone-3 infrastructure sat-satdemocp5-d46581b509357ea4b429fddc38a18b155463bf1c 169.62.42.181 satdemo-cp4 1ac2b92f55968a333335 assigned Ready zone-1 satdemo-cluster sat-satdemocp4-2bda578e901b4047c6e48d766cd99bc11a45fddd 169.62.42.180 satdemo-cp6 234cd56c78ddffe4b672 assigned Ready zone-2 satdemo-cluster sat-satdemocp6-940134e69c2609c5421b2426a7640fa80569668d 169.62.42.179 satdemo-cp3 8fg4ff8faaa1fa622bb5 assigned Ready zone-3 satdemo-cluster sat-satdemocp3-d46581b509357ea4b429fddc38a18b155463bf1c 169.62.42.182 -
Satellite 사용 IBM Cloud 서비스에 작업자 노드로 지정된 현재 호스트를 나열하고 해당 ID를 기록해 두십시오.
ibmcloud ks worker ls -c <cluster_name_or_ID>출력 예를 검토하십시오.
ID Primary IP Flavor State Status Zone Version sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7 10.241.0.4 upi normal Ready us-east-2 4.7.55_1575_openshift sat-satellitei-854beae4556401b5761e34ed849ba64c4b0a674c 10.241.128.4 upi normal Ready us-east-1 4.7.55_1575_openshift sat-satellitei-bf1fc9b135011d5c0d9d500855db6e489d15610b 10.241.64.4 upi normal Ready us-east-3 4.7.55_1575_openshift
버전 업데이트를 분리하지 않고 작업자 노드 호스트에 적용
작업자 노드 호스트를 위치에서 분리하지 않고 업데이트할 수 있습니다. ConfigMap 를 사용하여 워커 노드 호스트에 대해 롤링 업데이트를 수행할 수도 있습니다.
시작하기 전에
- 모든 작업자 노드가 정상 상태인지 확인하십시오.
- 지속적 블록 스토리지 볼륨을 사용하는 경우 업데이트를 시작하기 전에 노드에서 이러한 볼륨을 분리해야 합니다. 지속적 볼륨을 업데이트가 필요하지 않은 다른 작업자 노드로 이동하십시오. 그런 다음,
kubectl drain NODENAME명령으로 업데이트하기 위해 작업자 노드에서 워크로드를 제거하고 비우십시오. 블록 스토리지 볼륨을 이동할 수 없는 경우 호스트를 대체하여 작업자 노드에 버전 업데이트 적용 을 사용하십시오.
워커 노드에 업데이트를 적용하면 앱과 서비스에 다운타임이 발생할 수 있습니다. 업데이트 프로세스가 실행 중인 동안 호스트에서 조치를 수행하지 마십시오. 업데이트 과정 중에는 전체 워커 노드 중 최대 20%까지 사용 불가능한 상태가 될 수 있습니다.
한 번에 하나씩 작업자 노드 호스트에 버전 업데이트 적용
-
선택사항: 기존 호스트가 업데이트되는 동안 계산 용량을 처리하려면 를 연결하고 추가 호스트를 서비스 클러스터에 지정하십시오.
-
작업자 노드 호스트를 식별하십시오. 작업자 노드 호스트에는 출력의
Cluster열에 나열된infrastructure가 없지만 대신 클러스터의 이름을 갖습니다. -
ibmcloud ks worker update명령을 실행하여 작업자 노드를 개별적으로 업데이트하십시오.ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID -
작업자 노드의 Kubernetes 버전을 검토하여 업데이트가 완료되었는지 확인하십시오.
kubectl get nodes업데이트에 실패하면 호스트를 대체하여 버전 업데이트를 적용 해야 합니다.
ConfigMap 을 사용하여 작업자 노드 호스트에 버전 업데이트 적용
ConfigMap을 사용하여 모든 작업자 노드 호스트에 대한 업데이트를 롤아웃할 수 있습니다. 레이블을 사용하여 업데이트할 노드를 지정하십시오. 또한
-
선택사항: 기존 호스트가 업데이트되는 동안 계산 용량을 처리하려면 를 연결하고 추가 호스트를 서비스 클러스터에 지정하십시오.
-
작업자 노드 호스트를 식별하십시오. 작업자 노드 호스트가
Infrastructure로 나열되지 않습니다. -
작업자 노드의 레이블을 보십시오. CLI 출력의 Labels 섹션에서 작업자 노드 레이블을 찾을 수 있습니다. 모든 레이블은
NodeSelectorKey및NodeSelectorValue로 구성되어 있습니다. 레이블을 사용하여 업데이트할 작업자 노드를 지정할 수 있습니다.kubectl get nodes -o yaml출력 예
labels: arch: amd64 beta.kubernetes.io/arch: amd64 beta.kubernetes.io/instance-type: upi beta.kubernetes.io/os: linux failure-domain.beta.kubernetes.io/region: us-east failure-domain.beta.kubernetes.io/zone: us-east-2 ibm-cloud.kubernetes.io/iaas-provider: upi ibm-cloud.kubernetes.io/internal-ip: 10.241.0.4 ibm-cloud.kubernetes.io/machine-type: upi ibm-cloud.kubernetes.io/os: REDHAT_8_64 ibm-cloud.kubernetes.io/region: us-east ibm-cloud.kubernetes.io/worker-id: sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7 ibm-cloud.kubernetes.io/worker-pool-id: cbtljodw089nltg8k210-9a3f763 ibm-cloud.kubernetes.io/worker-pool-name: default ibm-cloud.kubernetes.io/worker-version: 4.7.59_1583_openshift ibm-cloud.kubernetes.io/zone: us-east-2 kubernetes.io/arch: amd64 kubernetes.io/hostname: satellite-ibm-host-3 kubernetes.io/os: linux node-role.kubernetes.io/master: "" node-role.kubernetes.io/worker: "" node.kubernetes.io/instance-type: upi node.openshift.io/os_id: rhel privateVLAN: "1" topology.kubernetes.io/region: us-east topology.kubernetes.io/zone: us-east-2 -
ConfigMap 를 생성하고 워커 노드에 대한 가용성 제한 규칙을 정의하십시오. 다음 예시에는 ‘
defaultcheck.json’과 수표 서식 두 가지가 나와 있습니다. 이 예제 검사를 사용하여 ConfigMap (defaultcheck.json) 에서 정의한 검사와 일치하지 않는 모든 작업자 노드에 대한 규칙을 정의할 수 있습니다. 검사 템플리트를 사용하여 사용자 고유의 검사를 작성하십시오. 모든 검사에 대해, 작업자 노드를 식별하려면 이전 단계에서 검색한 작업자 노드 레이블 중 하나를 선택해야 합니다.검사할 때마다
NodeSelectorKey및NodeSelectorValue에 대해 하나의 값만 설정할 수 있습니다. ConfigMap 에서 최대 10개의 검사를 정의할 수 있습니다. 검사를 더 추가하는 경우에 이는 무시됩니다.예
apiVersion: v1 kind: ConfigMap metadata: name: ibm-cluster-update-configuration namespace: kube-system data: drain_timeout_seconds: "120" 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입니다.
defaultcheck.json- Satellite 호스트에서 작업자 노드를 업데이트할 때 클러스터에 있는 작업자 노드의 20%만 한 번에 사용 불가능할 수 있습니다.
MaxUnavailablePercentage- 지정된 레이블 키 및 값에 대해 사용 불가능 상태가 될 수 있는 노드의 최대 수이며 이는 백분율로 지정됩니다. 배치, 다시 로드 또는 프로비저닝 프로세스 중에는 작업자 노드를 사용할 수 없습니다. 정의된 최대 사용 불가능 백분율을 초과하면 큐에 지정된 작업자 노드가 업데이트로부터 차단됩니다.
NodeSelectorKey- 해당 규칙을 설정하고자 하는 작업자 노드의 레이블 키입니다. 사용자는 IBM에서 제공한 기본 레이블과 자신이 작성한 작업자 노드 레이블에 대한 규칙을 설정할 수 있습니다.
NodeSelectorValue- 사용자가 정의한 규칙에 대해 고려되기 위해 작업자 노드가 보유해야 하는 레이블 값입니다.
-
클러스터에서 configmap을 작성하십시오.
kubectl apply -f <filepath/configmap.yaml> -
ConfigMap 가 생성되었는지 확인하십시오.
kubectl get configmap --namespace kube-system -
작업자 노드를 ID별로 나열하여 업데이트하십시오.
ibmcloud ks worker update --cluster <cluster_name_or_ID> --worker <worker_node1_ID> --worker <worker_node2_ID> -
선택 사항: ConfigMap 에 의해 트리거되는 이벤트와 발생하는 유효성 검사 오류를 확인합니다. 이벤트는 CLI 출력의 Events 섹션에서 검토가 가능합니다.
kubectl describe -n kube-system cm ibm-cluster-update-configuration -
작업자 노드의 Kubernetes 버전을 검토하여 업데이트가 완료되었는지 확인하십시오.
kubectl get nodes업데이트에 실패하면 호스트를 대체하여 버전 업데이트를 적용 해야 합니다.
-
중복된 작업자 노드가 없는지 확인하십시오. 일부 경우에 업데이트 후 이전 클러스터가
NotReady상태의 중복된 작업자 노드를 나열할 수 있습니다. 중복 항목을 제거하려면 문제점 해결을 참조하십시오.
호스트를 대체하여 작업자 노드에 버전 업데이트 적용
위치에 연결된 호스트는 자동으로 업데이트되지 않습니다. 버전 업데이트를 적용하려면, 먼저 ‘ Satellite ’ 기능이 활성화된 ‘ IBM Cloud ’ 서비스 에 새 호스트를 연결하고 할당한 다음, 기존 호스트를 제거하면 됩니다. 부 버전 및 패치 버전 업데이트를 제자리에 적용할 수도 있습니다.
-
현재 호스트를 나열하고 해당 ID를 기록해 두십시오. 이는 업데이트된 호스트를 연결한 후 제거할 호스트입니다.
ibmcloud ks worker ls -c <cluster_name_or_ID>출력 예를 검토하십시오.
ID Primary IP Flavor State Status Zone Version sat-satliberty-5b4c7f3a7bfc14cf58cbb14ad5c08429475274fe 208.43.36.202 upi normal Ready zone-1 4.7.19_1525_openshift* -
새 호스트를 Satellite 위치에 연결하십시오. 연결하는 호스트 수는 업데이트할 호스트 수와 일치해야 합니다.
-
새로 연결된 호스트를 Satellite 리소스에 지정하십시오. 이러한 호스트는 지정 시 자동으로 업데이트를 수신합니다.
-
새 호스트가 Satellite 리소스에 지정된 후 이전에 언급한 이전 호스트를 제거 및 삭제하십시오.
Red Hat OpenShift on IBM Cloud 콘솔에서 작업자 노드 호스트 업데이트
Red Hat OpenShift on IBM Cloud 콘솔을 사용하여 작업자 노드 호스트를 업데이트할 수 있습니다.
- IBM Cloud 콘솔에 로그인하고 OpenShift > 클러스터를 클릭하십시오.
- 업데이트하려는 호스트가 지정된 클러스터를 클릭하고 작업자 노드 페이지로 이동하십시오.
- 업데이트할 각 호스트를 선택하십시오. 호스트를 선택하면 업데이트 옵션이 표시됩니다.
- 업데이트 를 클릭하십시오. 표시되는 대화 상자에서 업데이트를 다시 클릭하십시오. 업데이트가 시작되었음을 나타내는 메시지가 표시됩니다.
- 호스트가 업데이트되는 동안 기다리십시오. 호스트의 상태가 정상으로 돌아가고 새 버전이 버전 열에 나열되면 각 호스트에 대한 업데이트 프로세스가 완료된 것입니다.
작업자 노드 버전 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 판별
작업자 노드를 업데이트하는 프로세스는 모든 유형의 업데이트에 대해 동일합니다. 그러나 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 여부에 대한 정보를 찾을 수 있습니다.
사용 가능한 업데이트 유형을 판별하려면 현재 작업자 노드 버전을 Red Hat OpenShift 버전 변경 로그의 최신 worker node fix pack 버전과 비교하십시오. 주 업데이트는 버전 레이블의 첫 번째 숫자(4.x.x)로 표시되고 부 업데이트는 두 번째 숫자(x.7.x)로 표시되며
패치 업데이트는 후행 숫자(x.x.23_1528_openshift)로 표시됩니다. 버전 업데이트에 대한 자세한 정보는 버전 정보 및 업데이트 조치를 참조하십시오.