无法删除 Kubernetes 中节点的底层虚拟机

Can't delete underlying VM for a node in Kubernetes

我是 运行 GCE 上的一个三节点集群。我想耗尽一个节点并删除底层 VM。

kubectl drain 命令的文档说:

Once it returns (without giving an error), you can power down the node (or equivalently, if on a cloud platform, delete the virtual machine backing the node)

我执行以下命令:

  1. 获取节点

    $ kl get nodes
    NAME                                      STATUS    AGE
    gke-jcluster-default-pool-9cc4e660-6q21   Ready     43m
    gke-jcluster-default-pool-9cc4e660-rx9p   Ready     6m
    gke-jcluster-default-pool-9cc4e660-xr4z   Ready     23h
    
  2. 排水节点rx9p.

    $ kl drain gke-jcluster-default-pool-9cc4e660-rx9p --force
    node "gke-jcluster-default-pool-9cc4e660-rx9p" cordoned
    WARNING: Deleting pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet: fluentd-cloud-logging-gke-jcluster-default-pool-9cc4e660-rx9p, kube-proxy-gke-jcluster-default-pool-9cc4e660-rx9p
    node "gke-jcluster-default-pool-9cc4e660-rx9p" drained
    
  3. 删除 gcloud 虚拟机。

     $ gcloud compute instances delete gke-jcluster-default-pool-9cc4e660-rx9p
    
  4. 列出虚拟机。

     $ gcloud compute instances list
    

    结果,我看到了上面删除的 VM - rx9p。如果我这样做 kubectl get nodes,我也会看到 rx9p 节点。

这是怎么回事?正在重新启动我正在删除的虚拟机?我是否必须等待命令之间的超时?

首先排空节点是正确的。

节点(计算实例)是 managed instance group 的一部分。如果您使用 gcloud compute instances delete 命令仅删除它们,托管实例组将重新创建它们。

要正确删除一个,请使用此命令(在你耗尽它之后!):

gcloud compute instance-groups managed delete-instances \
  gke-jcluster-default-pool-9cc4e660-grp \
  --instances=gke-jcluster-default-pool-9cc4e660-rx9p \
  --zone=...