Назад | Перейти на главную страницу

Мне выставляют счет за использование узла, если я оцеплю и осушу узел?

Я изучаю 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

Я хочу, чтобы мои стручки работали на n1-standard-1 machine, пока я разрабатываю систему, поэтому я оцепил более дорогой узел, а затем осушил его:

➜  ~ 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

После этого я ожидаю, что все модули будут выселены, но перечисление модулей на этом узле все еще показывает, что некоторые «системные» модули работают:

➜  ~ 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>

Итак, мой вопрос:

  1. kube-proxy это сетевой прокси, который работает на всех узлах GKE. В GKE есть правила на основе Iptables, позволяющие сетевое взаимодействие модулей в кластере. Вы можете подключиться к модулю с помощью kubectl exec -ti -n kube-system KUBE-PROXY-POD-NAME /bin/sh и выполнить iptables -L -n чтобы увидеть правила Iptables. Подробнее о kube-proxy.

  2. Цены - да, Google взимает полную стоимость за любой работающий экземпляр. Не имеет значения, запущено ли у вас приложение или модуль или нет. Плата взимается за зарезервированные вычислительные ресурсы / память / хранилище виртуальной машины. Если вы не хотите, чтобы с вас взималась плата, удалите экземпляр. Вы также можете снизить комиссию, используя вытесняемый vms для узлов gke.