Я пытаюсь настроить многомастерную конфигурацию узлов haproxy для Kubernetes, как описано в [1]. Мои сетевые конфигурации следующие:
- haproxy = 192.168.1.213
- мастер0|1|2 = 192.168.1.210|211|212
- worker0|1|2 = 192.168.1.220|221|222 (на данном этапе не интересно)
все хосты могут подключаться друг к другу (DNS разрешен для каждого узла). Каждый узел работает под управлением Ubuntu 18.04.3 (LTS). Docker установлен как
- docker.io/bionic-updates,bionic-security,теперь 18.09.7-0ubuntu1~18.04.4 amd64 [установлено]
В настоящее время установлены следующие пакеты Kubernetes:
- kubeadm/kubernetes-xenial,теперь 1.16.3-00 amd64 [установлено]
- kubectl/kubernetes-xenial,теперь 1.16.3-00 amd64 [установлено]
- kubelet/kubernetes-xenial,теперь 1.16.3-00 amd64 [установлено,автоматически]
- kubernetes-cni/kubernetes-xenial,теперь 0.7.5-00 amd64 [установлено,автоматически]
используя дополнительный репозиторий, как описано в [2] (я знаю, что установил bionic
на свои виртуальные машины, но «самый новый» доступный репозиторий все еще xenial
).
Мой haproxy установлен как haproxy/bionic,now 2.0.9-1ppa1~bionic amd64 [installed]
[3] репозиторий.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
retries 2
timeout connect 3000ms
timeout client 5000ms
timeout server 5000ms
frontend kubernetes
bind *:6443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
server master0 192.168.1.210:6443 check fall 3 rise 2
server master1 192.168.1.211:6443 check fall 3 rise 2
server master2 192.168.1.212:6443 check fall 3 rise 2
При попытке настроить мою первую плоскость управления, работающую, kubeadm init --control-plane-endpoint "haproxy.my.lan:6443" --upload-certs -v=6
как описано в [4] приводит к следующей ошибке:
Error writing Crisocket information for the control-plane node
полный вход в систему [5]. Я совсем запутался: есть ли ошибка в моей конфигурации haproxy или это может быть какой-то сбой в самом docker или kubernetes.
Мой /etc/docker/daemon.json
выглядит так:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
- [1]https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
- [2]https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-using-native-package-management
- [3]https://launchpad.net/~vbernat/+archive/ubuntu/haproxy-2.0
- [4]https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/#stacked-control-plane-and-etcd-nodes
- [5]https://pastebin.com/QD5mbiyN
решение1
Не найдя достойного решения и создав проблему в оригинальном проекте «kubeadm» на github, см. здесь:https://github.com/kubernetes/kubeadm/issues/1930.
Поскольку предложенная в проблеме «сортировка» оказалась для меня невыполнимой (Ubuntu уже практически «настроена»), я в итоге настроил другой дистрибутив Docker, как описано здесь:https://docs.docker.com/install/linux/docker-ce/ubuntu/, очистка установленного дистрибутива перед началом новой установки.
При запуске Docker (Community) v19.03.5
через kubeadm v1.16.3
выдает следующее предупреждение:
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.5. Latest validated version: 18.09
результаты довольно хорошие, мне удалось настроить свой кластер ha, как описано в оригинальной документации.
Итак, это можно рассматривать какобходной путь,НЕТкак решение моей первоначальной проблемы!