GKE - Обновление мастера кластера после завершения создания кластера - PullRequest
0 голосов
/ 10 октября 2019

Как только мы увеличиваем нагрузку с помощью клиента JMeter, моя развернутая служба прерывается, и на консоли GCP / GKE он говорит, что -

Upgrading cluster master
The values shown below are going to change soon.

И мой клиент kubectl выдает эту ошибку во время обновления -

Unable to connect to the server: dial tcp 35.236.238.66:443: connectex: No connection could be made because the target machine actively refused it.

Как я могу остановить это обновление или предотвратить прерывание моего обслуживания? Если обслуживание будет прервано, тогда автоматическое масштабирование не принесет пользы. Я новичок в GKE, пожалуйста, дайте мне знать, если мне не хватает какой-либо конфигурации или параметра здесь. Я использую эту команду для создания моего кластера -

gcloud container clusters create ajeet-gke --zone us-east4-b --node-locations us-east4-b --machine-type n1-standard-8 --num-nodes 1 --enable-autoscaling --min-nodes 4 --max-nodes 16

Он не обновляет версию k8s. Потому что он отлично работает с меньшей нагрузкой, но по мере увеличения нагрузки, чем кластер, начинается обновление мастера. Похоже, мастер изменяет размеры для большего количества узлов. После обновления я вижу больше узлов на консоли GCP. https://github.com/terraform-providers/terraform-provider-google/issues/3385

В приведенной ниже команде указано, что автоматическое масштабирование не включено в группе экземпляров.

> gcloud compute instance-groups managed list
NAME                     AUTOSCALED  LOCATION    SCOPE   ---
ajeet-gke-cluster-      no        us-east4-b   zone   ---
default-pool-4***0 

Обходной путь

Извините, не забудьте обновить его здесь,Я нашел обходной путь, чтобы это исправить - после разделения команды создания кластера на два шага кластер автоматически масштабируется без перезапуска главного узла:

gcloud container clusters create ajeet-ggs --zone us-east4-b --node-locations us-east4-b --machine-type n1-standard-8 --num-nodes 1
gcloud container clusters update ajeet-ggs --enable-autoscaling --min-nodes 1 --max-nodes 10 --zone us-east4-b --node-pool default-pool

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Чтобы избежать этого, вы всегда должны создавать кластер с жестко закодированной версией кластера до последней доступной версии.

См. Документацию: https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture#master

Это означает, что Goolge управляет мастером,Это означает, что если ваш мастер не обновлен, он будет обновлен до последней версии и позволит Google ограничить количество версий, которыми в данный момент управляют. https://cloud.google.com/kubernetes-engine/docs/concepts/regional-clusters

Теперь, почему у вас прерывание обслуживания во время обновления: поскольку вы работаете в зональном режиме только с одним мастером, чтобы предотвратить это, вы должны перейти в режим регионального кластера с более чем одним мастером, что позволяетдля чистого обновления проката.

0 голосов
/ 10 октября 2019

Мастер не изменит размер узла, если в нем не включена функция автомасштабирования .

Как упоминалось в ответе выше, это функция на уровне пул узлов . Глядя на описание проблемы, кажется, что в вашем пуле узлов включено «автоматическое масштабирование», и в конечном итоге автоматическое масштабирование кластеров в GKE автоматически изменяет размеры кластеров в зависимости от требований рабочих нагрузок, которые вы хотите запустить (т. Е. Когда есть модули, которыеневозможно запланировать из-за нехватки ресурсов, таких как CPU ).

Кроме того, автоматическое масштабирование кластера Kubernetes не использует автоматическое масштабирование Managed Instance Group. Он запускает контроллер кластера автоматического масштабирования на мастере Kubernetes, который использует специфичные для Kubernetes сигналы для масштабирования ваших узлов.

Поэтому настоятельно рекомендуется не использовать (или полагаться на состояние автоматического масштабирования, отображаемое MIG) функцию автоматического масштабирования Compute Engine в группах экземпляров, созданных Kubernetes Engine.

...