2.2. 클러스터 종료
나중에 클러스터를 다시 시작하기 위해 안전한 방법으로 클러스터를 종료할 수 있습니다.
설치 날짜부터 1년까지 클러스터를 종료하고 정상적으로 다시 시작할 수 있습니다. 설치 날짜로부터 1년 후에는 클러스터 인증서가 만료됩니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있습니다. - etcd 백업이 수행되었습니다.
절차
장기간 클러스터를 종료하려는 경우 클러스터 인증서가 만료되는 날짜를 확인합니다.
인증서가 만료되기 전에 클러스터를 다시 시작해야 합니다. 클러스터가 재시작되면 프로세스에서 kubelet 인증서를 복구하기 위해 보류 중인 인증서 서명 요청(CSR)을 수동으로 승인해야 할 수 있습니다.
kube-apiserver-to-kubelet-signer
CA 인증서의 만료 날짜를 확인합니다.$ oc -n openshift-kube-apiserver-operator get secret kube-apiserver-to-kubelet-signer -o jsonpath='{.metadata.annotations.auth\.openshift\.io/certificate-not-after}{"\n"}'
출력 예
2023-08-05T14:37:50Z
kubelet 인증서의 만료 날짜를 확인합니다.
다음 명령을 실행하여 컨트롤 플레인 노드의 디버그 세션을 시작합니다.
$ oc debug node/<node_name>
다음 명령을 실행하여 root 디렉토리를
/host
로 변경합니다.sh-4.4# chroot /host
다음 명령을 실행하여 kubelet 클라이언트 인증서 만료 날짜를 확인합니다.
sh-5.1# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate
출력 예
notAfter=Jun 6 10:50:07 2023 GMT
다음 명령을 실행하여 kubelet 서버 인증서 만료 날짜를 확인합니다.
sh-5.1# openssl x509 -in /var/lib/kubelet/pki/kubelet-server-current.pem -noout -enddate
출력 예
notAfter=Jun 6 10:50:07 2023 GMT
- 디버그 세션을 종료합니다.
- 이 단계를 반복하여 모든 컨트롤 플레인 노드에서 인증서 만료 날짜를 확인합니다. 클러스터를 정상적으로 다시 시작할 수 있도록 인증서 만료일보다 먼저 다시 시작합니다.
클러스터의 모든 노드를 종료합니다. 클라우드 공급자의 웹 콘솔에서 이 작업을 수행하거나 다음 루프를 실행할 수 있습니다.
$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 1; done 1
- 1
-H 1
은 컨트롤 플레인 노드가 종료되기 전에 이 프로세스가 몇 분 내에 지속되는지를 나타냅니다. 10개 이상의 노드가 있는 대규모 클러스터의 경우 모든 컴퓨팅 노드를 먼저 종료할 시간이 있도록 10분 이상 설정합니다.
출력 예
Starting pod/ip-10-0-130-169us-east-2computeinternal-debug ... To use host binaries, run `chroot /host` Shutdown scheduled for Mon 2021-09-13 09:36:17 UTC, use 'shutdown -c' to cancel. Removing debug pod ... Starting pod/ip-10-0-150-116us-east-2computeinternal-debug ... To use host binaries, run `chroot /host` Shutdown scheduled for Mon 2021-09-13 09:36:29 UTC, use 'shutdown -c' to cancel.
이러한 방법 중 하나를 사용하여 노드를 종료하면 pod가 정상적으로 종료되어 데이터 손상 가능성을 줄일 수 있습니다.
참고대규모 클러스터의 경우 종료 시간을 더 길게 조정합니다.
$ for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}'); do oc debug node/${node} -- chroot /host shutdown -h 10; done
참고종료하기 전에 OpenShift Container Platform과 함께 제공되는 표준 Pod의 컨트롤 플레인 노드를 드레인할 필요가 없습니다.
클러스터 관리자는 클러스터를 다시 시작한 후 워크로드를 완전히 다시 시작해야 합니다. 사용자 지정 워크로드로 인해 종료하기 전에 컨트롤 플레인 노드를 드레 이한 경우 다시 시작한 후 클러스터가 다시 작동하기 전에 컨트롤 플레인 노드를 스케줄 대상으로 표시해야합니다.
외부 스토리지 또는 LDAP 서버와 같이 더 이상 필요하지 않은 클러스터 종속성을 중지합니다. 이 작업을 수행하기 전에 공급 업체의 설명서를 확인하십시오.
중요클라우드 공급자 플랫폼에 클러스터를 배포한 경우, 연결된 클라우드 리소스를 종료, 일시 중단 또는 삭제하지 마십시오. 중단된 가상 머신의 클라우드 리소스를 삭제하면 OpenShift Container Platform이 성공적으로 복원되지 않을 수 있습니다.