Назад | Перейти на главную страницу

Создание мультимастерского кластера Kubernetes

Мне нужно создать отказоустойчивый кластер k8s из 2 мастеров и 3 рабочих узлов с составной плоскостью управления и узлами etcd, а также calico в качестве сетевого плагина. На мастерах есть виртуальный ip и haproxy балансировщик. Версия Kubernetes - 1.15.1.

Раньше я развертывал кластеры k8s с одним мастером, передавая --pod-network-cidr, --apiserver-advertise-address и другие параметры в качестве аргументов CLI для kubeadm init - это сработало нормально.

Теперь по официальному мануалу (https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/) Я должен использовать --config и конфигурационный файл yaml, так как не хватает ключей CLI для того, что мне нужно. В руководстве приведен довольно простой пример конфигурации, которого мне мало. Как нельзя смешивать --config с аргументами конфигурация yaml была расширена до следующего:

apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: "10.30.7.65"
  bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
controlPlaneEndpoint: "10.30.7.90:7443" # This is virtual ip of balancer
api:
  advertiseAddress: 10.30.7.65
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
nodeName: srv1.demo2.prolabs.ai
kubernetesVersion: v1.15.1
apiServerCertSANs:
- "10.30.7.65"
- "10.30.7.66"
- "10.30.7.67"
- "10.30.7.90"
- "127.0.0.1"
token: "jw5mnd.26a22s2kg9mewtjv"
tokenTTL: "0"

После запуска kubeadm init --config=k8s.yaml --upload-certs Я вижу, что ни одна из сетевых настроек не применялась: модули контроллеров находятся в подсети 192.168.0.0/16, модули calico и etcd привязаны к внешнему IP-адресу сервера.

Так в чем проблема? Как запустить кластер с несколькими хозяевами с использованием определенных подсетей, определенного URL-адреса API и определенных интерфейсов аппаратных узлов?