масштабирование кластера GKE K8s нарушает работу сети - PullRequest
0 голосов
/ 28 апреля 2020

Народ, при попытке увеличить кластер GKE с 1 до 3 узлов, работающих в отдельных зонах (us-centra1-a, b, c). Кажется очевидным следующее:

Блоки, запланированные на новых узлах, не могут получить доступ к ресурсам на inte rnet ... т.е. не могут подключиться к полосе apis и т. Д. c. (потенциально относится к kube-dns, не проверял трафик c, пытающийся выйти без поиска DNS).

Точно так же я не могу маршрутизировать между модулями в K8, как ожидалось. Т.е. кажется, что кросс-аз вызовы могут быть неудачными? При тестировании с openvpn, неспособным соединиться с модулями, запланированными на новых узлах.

Отдельная проблема, которую я заметил, была то, что сервер Metrics кажется ненадежным. kubectl top nodes показывает неизвестные для новых узлов.

На момент написания, версия master k8s 1.15.11-gke.9

В настройках уделяется внимание:

VPC-native (alias IP) - disabled
Intranode visibility - disabled

Контейнерные кластеры gcloud описывают cluster-1 --zone us-central1-a

clusterIpv4Cidr: 10.8.0.0/14
createTime: '2017-10-14T23:44:43+00:00'
currentMasterVersion: 1.15.11-gke.9
currentNodeCount: 1
currentNodeVersion: 1.15.11-gke.9
endpoint: 35.192.211.67
initialClusterVersion: 1.7.8
instanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/skilful-frame-180217/zones/us-central1-a/instanceGroupManagers/gke-cluster-1-default-pool-ff24932a-grp
ipAllocationPolicy: {}
labelFingerprint: a9dc16a7
legacyAbac:
  enabled: true
location: us-central1-a
locations:
- us-central1-a
loggingService: none

....

masterAuthorizedNetworksConfig: {}
monitoringService: none
name: cluster-1
network: default
networkConfig:
  network: .../global/networks/default
  subnetwork: .../regions/us-central1/subnetworks/default
networkPolicy:
  provider: CALICO
nodeConfig:
  diskSizeGb: 100
  diskType: pd-standard
  imageType: COS
  machineType: n1-standard-2
  ...
nodeIpv4CidrSize: 24
nodePools:
- autoscaling: {}
  config:
    diskSizeGb: 100
    diskType: pd-standard
    imageType: COS
    machineType: n1-standard-2
    ...
  initialNodeCount: 1
  locations:
  - us-central1-a
  management:
    autoRepair: true
    autoUpgrade: true
  name: default-pool
  podIpv4CidrSize: 24
  status: RUNNING
  version: 1.15.11-gke.9
servicesIpv4Cidr: 10.11.240.0/20
status: RUNNING
subnetwork: default
zone: us-central1-a

Следующим шагом по устранению неполадок является создание нового пула и его миграция. Может быть, ответ смотрит мне прямо в лицо ... это может быть nodeIpv4CidrSize a / 24?

Спасибо!

1 Ответ

2 голосов
/ 28 апреля 2020
  • В вашем вопросе описание вашего кластера имеет следующую сетевую политику:
name: cluster-1
network: default
networkConfig:
  network: .../global/networks/default
  subnetwork: .../regions/us-central1/subnetworks/default
networkPolicy:
  provider: CALICO
  • Я развернул кластер так, как мог:
gcloud beta container --project "PROJECT_NAME" clusters create "cluster-1" \
--zone "us-central1-a" \
--no-enable-basic-auth \
--cluster-version "1.15.11-gke.9" \
--machine-type "n1-standard-1" \
--image-type "COS" \
--disk-type "pd-standard" \
--disk-size "100" \
--metadata disable-legacy-endpoints=true \
--scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \
--num-nodes "1" \
--no-enable-ip-alias \
--network "projects/owilliam/global/networks/default" \
--subnetwork "projects/owilliam/regions/us-central1/subnetworks/default" \
--enable-network-policy \
--no-enable-master-authorized-networks \
--addons HorizontalPodAutoscaling,HttpLoadBalancing \
--enable-autoupgrade \
--enable-autorepair
  • После того, как я получил ту же конфигурацию, что и ваша, я укажу две части:
addonsConfig:
  networkPolicyConfig: {}
...
name: cluster-1
network: default
networkConfig:
  network: projects/owilliam/global/networks/default
  subnetwork: projects/owilliam/regions/us-central1/subnetworks/default
networkPolicy:
  enabled: true
  provider: CALICO
...
  • В комментариях, которые вы упоминаете "в пользовательский интерфейс, он говорит, что сетевая политика отключена ... есть команда, чтобы сбросить ситцевое? " Затем я дал вам команду, для которой вы получили сообщение о том, что Network Policy Addon is not Enabled.

Что странно, потому что оно применяется, но не включено. Я DISABLED это на моем кластере и посмотреть:

addonsConfig:
  networkPolicyConfig:
    disabled: true
...
name: cluster-1
network: default
networkConfig:
  network: projects/owilliam/global/networks/default
  subnetwork: projects/owilliam/regions/us-central1/subnetworks/default
nodeConfig:
...
  • NetworkPolicyConfig перешел с {} на disabled: true и раздел NetworkPolicy выше nodeConfig сейчас ушел. Итак, я предлагаю вам снова включить и отключить его, чтобы увидеть, обновляет ли он соответствующие ресурсы и исправляет ли вашу проблему с сетевой политикой, вот что мы сделаем:

  • Если ваш кластер не на производстве я бы предложил изменить его размер до 1, внести изменения, а затем снова масштабировать, чтобы обновление было быстрее. но если он находится в производстве, оставьте его как есть, но это может занять больше времени, в зависимости от политики нарушения вашего модуля. (default-pool - это имя моего кластерного пула), я изменю его размер на своем примере:

$ gcloud container clusters resize cluster-1 --node-pool default-pool --num-nodes 1
Do you want to continue (Y/n)?  y
Resizing cluster-1...done.
  • Затем включите само дополнение сетевой политики (оно будет не активировать, только сделать доступным):
$ gcloud container clusters update cluster-1 --update-addons=NetworkPolicy=ENABLED
Updating cluster-1...done.                                                                                                                                                      
  • и мы включаем (активируем) сетевую политику:
$ gcloud container clusters update cluster-1 --enable-network-policy
Do you want to continue (Y/n)?  y
Updating cluster-1...done.                                                                                                                                                      
  • Сейчас давайте отменим его:
$ gcloud container clusters update cluster-1 --no-enable-network-policy
Do you want to continue (Y/n)?  y
Updating cluster-1...done.    
  • После его отключения дождитесь готовности пула и выполните последнюю команду:
$ gcloud container clusters update cluster-1 --update-addons=NetworkPolicy=DISABLED
Updating cluster-1...done.
  • Уменьшите его до 3, если вы сократили:
$ gcloud container clusters resize cluster-1 --node-pool default-pool --num-nodes 3
Do you want to continue (Y/n)?  y
Resizing cluster-1...done.
  • Наконец, еще раз проверьте описание, чтобы убедиться, что оно соответствует правильной конфигурации, и проверьте связь между модулями.

Вот ссылка на эту конфигурацию: Создание сетевой политики кластера

Если после этого у вас все еще возникла проблема, обновите свой вопрос, указав последнее описание кластера, и мы копай дальше.

...