Почему мой кластер GKE масштабируется при создании пространства имен? - PullRequest
1 голос
/ 07 мая 2020

Наблюдаю странное поведение только что созданного кластера в 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
                    }
                ]
            },

Журналы событий следующие:

[
 {
   "insertId": "7be8fc3c-b770-4013-9500-09be89e39935@a1",
   "jsonPayload": {
     "status": {
       "measureTime": "1589026811",
       "autoscaledNodesCount": 1,
       "autoscaledNodesTarget": 1
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d",
       "cluster_name": "cluster-test"
     }
   },
   "timestamp": "2020-05-09T12:20:12.229243264Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:20:13.028616473Z"
 },
 {
   "insertId": "9a09bd12-a44b-4360-a3c6-1072d7f9b098@a1",
   "jsonPayload": {
     "decision": {
       "scaleUp": {
         "increasedMigs": [
           {
             "requestedNodes": 1,
             "mig": {
               "zone": "europe-west1-d",
               "name": "gke-cluster-test-default-pool-e317f053-grp",
               "nodepool": "default-pool"
             }
           }
         ],
         "triggeringPodsTotalCount": 1,
         "triggeringPods": [
           {
             "controller": {
               "name": "calico-typha-8dd55d66c",
               "kind": "ReplicaSet",
               "apiVersion": "apps/v1"
             },
             "name": "calico-typha-8dd55d66c-gvwsx"
           }
         ]
       },
       "decideTime": "1589026971",
       "eventId": "15bc10aa-a0d9-4e3f-a0f9-bf3d16bd13e5"
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d",
       "cluster_name": "cluster-test"
     }
   },
   "timestamp": "2020-05-09T12:22:51.653877878Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:22:52.331187267Z"
 },
 {
   "insertId": "221df494-6573-4eec-8524-a9c28e984b93@a1",
   "jsonPayload": {
     "status": {
       "autoscaledNodesTarget": 2,
       "measureTime": "1589026968",
       "autoscaledNodesCount": 1
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d",
       "cluster_name": "cluster-test"
     }
   },
   "timestamp": "2020-05-09T12:22:51.682941907Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:22:52.140573874Z"
 },
 {
   "insertId": "867c38f2-caf2-47f8-a904-baed5fa79418@a1",
   "jsonPayload": {
     "status": {
       "measureTime": "1589027087",
       "autoscaledNodesCount": 2,
       "autoscaledNodesTarget": 2
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "cluster_name": "cluster-test",
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d"
     }
   },
   "timestamp": "2020-05-09T12:24:48.480433786Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:24:49.510037788Z"
 },
 {
   "insertId": "4e134516-d91b-47eb-8df7-d60d7be2fcca@a1",
   "jsonPayload": {
     "resultInfo": {
       "measureTime": "1589027087",
       "results": [
         {
           "eventId": "15bc10aa-a0d9-4e3f-a0f9-bf3d16bd13e5"
         }
       ]
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d",
       "cluster_name": "cluster-test"
     }
   },
   "timestamp": "2020-05-09T12:24:48.514851831Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:24:49.545221929Z"
 },
 {
   "insertId": "5674038e-8931-4530-b6b2-9854e6731573@a1",
   "jsonPayload": {
     "status": {
       "measureTime": "1589027277",
       "autoscaledNodesCount": 2,
       "autoscaledNodesTarget": 2
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "cluster_name": "cluster-test",
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d"
     }
   },
   "timestamp": "2020-05-09T12:27:58.294272079Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:27:58.638736825Z"
 },
 {
   "insertId": "6d26df4f-039d-4c18-8fc0-441891b30e4b@a1",
   "jsonPayload": {
     "status": {
       "autoscaledNodesTarget": 2,
       "measureTime": "1589027467",
       "autoscaledNodesCount": 2
     }
   },
   "resource": {
     "type": "k8s_cluster",
     "labels": {
       "project_id": "arlas-cloud-sandbox",
       "location": "europe-west1-d",
       "cluster_name": "cluster-test"
     }
   },
   "timestamp": "2020-05-09T12:31:08.443814963Z",
   "logName": "projects/arlas-cloud-sandbox/logs/container.googleapis.com%2Fcluster-autoscaler-visibility",
   "receiveTimestamp": "2020-05-09T12:31:08.951331569Z"
 }
]

Похоже, что calico-typha - это виноват, а что творится?

1 Ответ

0 голосов
/ 19 мая 2020

TL; DR

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

Вот причина:

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

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

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

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


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

  • GKE кластер с каналом выпуска Обычный
  • Автоматическое масштабирование включено с :
    • начальное количество узлов: 1 узел
    • минимум: 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)}]

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

...