Наш производственный кластер отлично работает на k8s 1.12.3-rancher1-1, имея несколько узлов в двух разных сетях: 192.168.225.0/24 (2) и 172.30.0.0/24 (6). При обновлении кластера до любой более новой версии k8s (проверено с 1.16.4-rancher1-1 и 1.17.5-rancher1-1) связь между узлами этих сетей не работает.
Чтобы воспроизвести проблему, настройте следующую среду. Нет необходимости выполнять обновление с 1.12.3 до новой версии. Чистая установка любой новой версии, кажется, дает тот же результат. Пробуем другого поставщика сети (flannel
, calico
или canal
) не повлияли на ситуацию:
<cluster.yml>
nodes:
# frontend nodes
- address: 192.168.225.2
role:
- worker
hostname_override: frontend01
labels:
tier: frontend
environment: Production
user: deployuser
ssh_key_path: ./frontend.key
# note: for support of a key with a passphrase see https://rancher.com/docs/rke/v0.1.x/en/config-options/#ssh-agent
# core nodes
- address: 172.30.0.2
role:
- controlplane
- etcd
- worker
hostname_override: core01
labels:
tier: core
environment: Production
user: deployuser
ssh_key_path: ./backend.key
# note: for support of a key with a passphrase see https://rancher.com/docs/rke/v0.1.x/en/config-options/#ssh-agent
# Cluster Level Options
cluster_name: production
ignore_docker_version: false
kubernetes_version: "v1.16.4-rancher1-1"
# SSH Agent
ssh_agent_auth: false # use the rke built agent
# deploy an ingress controller on all ''
ingress:
provider: nginx
options:
server-tokens: false
ssl-redirect: false
Firewall-Rules
FRONTEND01 allow 8472/udp from 172.30.0.2
FRONTEND01 allow 10250/tcp from 172.30.0.2
FRONTEND01 allow ssh
CORE01 allow 6443/tcp from 192.168.225.2
CORE01 allow 8472/udp from 192.168.225.2
CORE01 allow ssh
rke
(v1.0.8) и дождитесь его готовности.kubectl run -it centos1 --rm --image=centos --restart=Never --overrides='{"apiVersion":"v1","spec":{"affinity":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchFields":[{"key":"metadata.name","operator":"In","values":["core01"]}]}]}}}}}' --kubeconfig kube_config_cluster.yml -- /bin/bash
for i in {1..100}; do ping -c 1 wikipedia.com; done
Обратите внимание на очень низкую скорость разрешения имен, которая часто полностью не работает.
Разрешение имен работает быстро, и пинг каждый раз проходит успешно.
Разрешение имен работает быстро, и пинг каждый раз проходит успешно.
ОС: Ubuntu 16.04.6 docker: 19.03.1 (docker-ce, docker-ce-cli) k8s: 1.12.3-rancher1-1 (нормально); 1.16.4-rancher1-1 (сбой), 1.17.5-rancher1-1 (сбой) rke: 1.0.8 kubectl: 1.16.1