노드가 손상되었거나 복구 또는 교체를 위해 클러스터에서 노드를 삭제해야 할 경우 클러스터에서 강제로 삭제할 수 있습니다.
워커 노드 강제 삭제
Anthos clusters on bare metal에서는 주석을 추가하여 강제 삭제할 노드를 표시할 수 있습니다.
상위 노드 풀에서 노드를 삭제한 후 다음 명령어를 실행하여 해당 오류가 발생한 머신에 baremetal.cluster.gke.io/force-remove
주석을 추가합니다. 주석 자체의 값은 중요하지 않습니다.
kubectl --kubeconfig ADMIN_KUBECONFIG -n CLUSTER_NAMESPACE \ annotate machine 10.200.0.8 baremetal.cluster.gke.io/force-remove=true
Anthos clusters on bare metal이 노드를 성공적으로 삭제합니다.
제어 영역 노드 강제 삭제
제어 영역 노드를 강제 삭제하는 것은 제어 영역 노드에서 kubeadm reset
을 수행하는 것과 유사하며 추가 단계를 수행해야 합니다.
노드 풀에서 제어 영역 노드를 강제 삭제하려면 오류가 발생한 제어 영역 노드가 포함된 클러스터에 대해 다음 작업을 수행해야 합니다.
etcd
클러스터에서 실패 노드의 실행 중인 실패한etcd
구성원 삭제- kube의
ClusterStatus
를 업데이트하여 해당apiEndpoint
삭제.
오류가 발생한 etcd
구성원 삭제
오류가 발생한 제어 영역 노드를 삭제하려면 먼저 남은 정상 상태의 etcd
포드에서 etcdctl
을 실행합니다. 이 작업에 대한 일반적인 내용은 이 Kubernetes 문서를 참조하세요.
다음 절차에서 CLUSTER_KUBECONFIG는 클러스터의 kubeconfig
파일 경로입니다.
다음 명령어를 사용하여
etcd
Pod를 찾습니다.kubectl --kubeconfig CLUSTER_KUBECONFIG get \ pod -n kube-system -l component=etcd -o wide
이 명령어는 다음 노드 목록을 반환합니다. 이 예시에서는 10.200.0.8 노드가 액세스할 수 없고 복구할 수 없다고 가정합니다.
NAME READY STATUS RESTARTS AGE IP NODE etcd-357b68f4ecf0 1/1 Running 0 9m2s 10.200.0.6 357b68f4ecf0 etcd-7d7c21db88b3 1/1 Running 0 33m 10.200.0.7 7d7c21db88b3 etcd-b049141e0802 1/1 Running 0 8m22s 10.200.0.8 b049141e0802
남은 정상 상태의
etcd
Pod 중 하나에 Exec를 수행합니다.kubectl --kubeconfig CLUSTER_KUBECONFIG exec -it -n \ kube-system etcd-357b68f4ecf0 -- /bin/sh
현재 구성원을 조회하여 오류가 발생한 구성원의 ID를 찾습니다. 이 명령어는 다음 목록을 반환합니다.
etcdctl --endpoints=https://10.200.0.6:2379,https://10.200.0.7:2379 --key=/etc/kubernetes/pki/etcd/peer.key \ --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt member list
이 명령어는 예를 들어 다음을 반환합니다.
23da9c3f2594532a, started, 7d7c21db88b3, https://10.200.0.6:2380, https://10.200.0.6:2379, false 772c1a54956b7f51, started, 357b68f4ecf0, https://10.200.0.7:2380, https://10.200.0.7:2379, false f64f66ad8d3e7960, started, b049141e0802, https://10.200.0.8:2380, https://10.200.0.8:2379, false
오류가 발생한 구성원을 삭제합니다.
etcdctl --endpoints=https://10.200.0.6:2379,https://10.200.0.7:2379 --key=/etc/kubernetes/pki/etcd/peer.key \ --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt \ member remove f64f66ad8d3e7960
ClusterStatus
업데이트 및 오류가 발생한 apiEndpoint
삭제
다음 절차에서 CLUSTER_KUBECONFIG는 클러스터의 kubeconfig
파일 경로입니다.
kubeadm-config
구성 맵 내에서ClusterStatus
섹션을 찾습니다.kubectl --kubeconfig CLUSTER_KUBECONFIG describe configmap -n \ kube-system kubeadm-config
이 명령어는 아래 표시된 것과 비슷한 결과를 반환합니다.
... ClusterStatus: ---- apiEndpoints: 7d7c21db88b3: advertiseAddress: 10.200.0.6 bindPort: 6444 357b68f4ecf0: advertiseAddress: 10.200.0.7 bindPort: 6444 b049141e0802: advertiseAddress: 10.200.0.8 bindPort: 6444 apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterStatus ...
구성 맵을 수정하여 실패한 IP가 포함된 섹션을 삭제합니다(이 예시에서는
kubectl edit
명령어를 사용하여10.200.0.8
삭제 결과를 보여줍니다).kubectl --kubeconfig CLUSTER_KUBECONFIG edit configmap \ -n kube-system kubeadm-config
수정 후 구성 맵은 다음과 유사합니다.
... ClusterStatus: | apiEndpoints: 7d7c21db88b3: advertiseAddress: 10.200.0.6 bindPort: 6444 357b68f4ecf0: advertiseAddress: 10.200.0.7 bindPort: 6444 apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterStatus ...
수정된 구성 맵을 저장하면 오류가 발생한 노드가 클러스터에서 삭제됩니다.