Google-Cloud-Platform

如果我封鎖並排空節點,是否需要為節點使用付費?

  • March 30, 2020

我正在學習 GKE(Google Kubernetes Engine),並且我有一個帶有 2 個節點池的集群:

➜  ~ gcloud container node-pools list
NAME                MACHINE_TYPE   DISK_SIZE_GB  NODE_VERSION
pool-2              n1-standard-1  10            1.14.10-gke.24
pool-n1-standard-2  n1-standard-2  10            1.14.10-gke.24

我在每個節點池上有 1 個節點:

➜  ~ kubectl get node
NAME                                             STATUS   ROLES    AGE     VERSION
gke-cluster-1-pool-2-bec144d8-rqb8               Ready    <none>   8d      v1.14.10-gke.24
gke-cluster-1-pool-n1-standard-2-892e9394-b8x8   Ready    <none>   5h11m   v1.14.10-gke.24

➜  ~ kubectl describe node | grep -i cloud.google.com/gke-nodepool
                   cloud.google.com/gke-nodepool=pool-2
                   cloud.google.com/gke-nodepool=pool-n1-standard-2

我希望我的 pod 暫時在n1-standard-1機器上執行,同時開發系統,所以我封鎖了更昂貴的節點,然後將其排空:

➜  ~ kubectl cordon gke-cluster-1-pool-n1-standard-2-892e9394-b8x8
node/gke-cluster-1-pool-n1-standard-2-892e9394-b8x8 cordoned

➜  ~ kubectl drain gke-cluster-1-pool-n1-standard-2-892e9394-b8x8
node/gke-cluster-1-pool-n1-standard-2-892e9394-b8x8 already cordoned
node/gke-cluster-1-pool-n1-standard-2-892e9394-b8x8 drained

之後,我希望所有 pod 都會被驅逐,但在此節點上列出 pod 仍然會顯示一些“系統”pod 正在執行:

➜  ~ kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=gke-cluster-1-pool-n1-standard-2-892e9394-b8x8
NAMESPACE     NAME                                                        READY   STATUS    RESTARTS   AGE     IP           NODE                                             NOMINATED NODE   READINESS GATES
kube-system   kube-proxy-gke-cluster-1-pool-n1-standard-2-892e9394-b8x8   1/1     Running   0          5h22m   10.138.0.7   gke-cluster-1-pool-n1-standard-2-892e9394-b8x8   <none>           <none>

所以我的問題是:

  • 這是什麼吊艙?
  • 更重要的是,我要按照定價頁面n1-standard-2中的說明向我收取執行機器的全部費用?(截至目前為 0.0950 美元/小時)
  1. kube-proxy是在所有 GKE 節點中執行的網路代理。在 GKE 中,它具有基於 Iptables 的規則,以允許集群中的 Pod 進行網路通信。您可以連接到 podkubectl exec -ti -n kube-system KUBE-PROXY-POD-NAME /bin/sh並執行iptables -L -n以查看 Iptables 規則。更多關於 kube-proxy 的資訊
  2. 定價 - 是的,Google 將向您收取任何正在執行的實例的全部費用。是否有應用程序或 pod 在其中執行並不重要。該費用用於虛擬機的預留計算/記憶體/儲存。如果您不想被收取費用,請刪除該實例。您還可以通過為 gke 節點使用搶占式vm 來降低費用。

引用自:https://serverfault.com/questions/1008835