Google-Cloud-Platform
如果我封鎖並排空節點,是否需要為節點使用付費?
我正在學習 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 美元/小時)
kube-proxy
是在所有 GKE 節點中執行的網路代理。在 GKE 中,它具有基於 Iptables 的規則,以允許集群中的 Pod 進行網路通信。您可以連接到 podkubectl exec -ti -n kube-system KUBE-PROXY-POD-NAME /bin/sh
並執行iptables -L -n
以查看 Iptables 規則。更多關於 kube-proxy 的資訊。- 定價 - 是的,Google 將向您收取任何正在執行的實例的全部費用。是否有應用程序或 pod 在其中執行並不重要。該費用用於虛擬機的預留計算/記憶體/儲存。如果您不想被收取費用,請刪除該實例。您還可以通過為 gke 節點使用搶占式vm 來降低費用。