Почему мой кластер GKE масштабируется при создании пространства имен?

Наблюдаю странное поведение только что созданного кластера в GKE. Сразу после его создания остается один узел. Когда я создаю свое первое пространство имен, оно автоматически масштабируется до 2 узлов, хотя ресурсов на первом узле все еще очень мало. Что могло быть причиной этого и как это предотвратить? Я создал свой кластер со следующим определением (с использованием Python API):

            cluster={
                "name": "mycluster",
                "initial_cluster_version": "latest",
                "network_policy": {
                    "enabled": True,
                    "provider": "PROVIDER_UNSPECIFIED"
                },
                "node_pools": [
                    {
                        "name": "default",
                        "autoscaling": {
                            "enabled": True,
                            "max_node_count": 5,
                            "min_node_count": 1
                        },
                        "config": {
                            "image_type": "UBUNTU",
                            "machine_type": "n1-standard-4",
                            "oauth_scopes": [
                                # Allows pulling images from GCR
                                "https://www.googleapis.com/auth/devstorage.read_only",

                                # Needed for monitoring
                                "https://www.googleapis.com/auth/logging.write",
                                "https://www.googleapis.com/auth/monitoring"
                            ]
                        },
                        "initial_node_count": 1
                    }
                ]
            },

person Alain B.    schedule 07.05.2020    source источник
comment
Привет. Вы проверяли, одинаково ли это поведение при создании кластера с помощью панели управления GCP? Вы запускаете в своем кластере что-нибудь, что могло бы вызвать автоматическое масштабирование кластера? Ознакомьтесь с официальной документацией, в которой показаны события автомасштабирования кластера: Cloud.google.com: Kubernetes Engine: видимость кластерного автомасштабирования   -  person Dawid Kruk    schedule 08.05.2020
comment
Привет, при создании кластера с помощью GCP Dashboard (с использованием аналогичного определения) поведение такое же. После создания кластера (так что он выполняет только то, что ему нужно), я не делаю ничего, кроме создания пространства имен и стрелы, в пул добавляется новый узел. Глядя на события, мне не очень понятно, что происходит: я добавил журналы в свой исходный вопрос.   -  person Alain B.    schedule 09.05.2020


Ответы (1)


TL; DR

При создании пространства имен кластер не масштабируется.

Вот причина:

Ограничения и требования

В вашем кластере должно быть не менее 2 узлов типа n1-standard-1 или выше. Рекомендуемый минимальный размер кластера для выполнения сетевой политики - 3 экземпляра n1-standard-1.

Cloud.google.com: Kubernetes Engine: Сетевая политика: ограничения и требования

Тот факт, что вы создали свой GKE кластер с начальным числом узлов 1, заставил calico-typha-XXX отправить запрос scale-up кластеру минимум на 2 узлов.


Предположим следующее:

  • GKE кластер с каналом выпуска Regular
  • Autoscaling enabled with:
    • inital node count: 1 node
    • минимум: 1 узел
    • максимум: 3 узла
  • Узлы с типом машины: n1-standard-1 или выше
  • Сетевая политика включена.

При создании кластера с указанными выше требованиями вы получите кластер с 1 узлом. Это изменится, как только calico-typha-XXX-XXX обнаружит, что количество узлов меньше 2, и отправит запрос на scale-up.

Вы можете получить более подробные журналы об этом, введя команды:

  • $ kubectl get pods -A
  • $ kubectl describe pod -n kube-system calico-typha-XXX-XXX

Вы должны получить часть вывода, подобную этой:

  Normal   TriggeredScaleUp  18m   cluster-autoscaler                              pod triggered scale-up: [{https://content.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west3-c/instanceGroups/gke-ubuntu-grp 1->2 (max: 3)}]

Вы также можете посмотреть журнал событий Kubernetes:

  • kubectl get events -A

Имейте в виду, что параметр -A приводит к выводу гораздо более ценной информации, например:

kube-system   3m6s        Normal    TriggeredScaleUp          pod/calico-typha-6b8d44c954-7s9zx                                pod triggered scale-up: [{https://content.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west3-c/instanceGroups/gke-ubuntu-grp 1->2 (max: 3)}]

Ознакомьтесь с дополнительной документацией:

person Dawid Kruk    schedule 19.05.2020
comment
Здорово! Спасибо за подробный и ясный ответ. - person Alain B.; 20.05.2020