Я столкнулся с множеством проблем при установке мультимастерного кластера k8s с внешним etcd. Раньше я делал это дважды, на других сайтах, успешно, но на этот раз мне нужна помощь.
Бязь была установлена из рекомендованного в гайде ямла: https://docs.projectcalico.org/manifests/calico.yaml
Во-первых, возникла проблема с установкой calico - calico-node не мог получить доступ к API, когда apiServer.extraArgs.advertise-address был упомянут в config.
После этого контроллеры calico-kube застряли в состоянии ContainerCreating. Мне удалось исправить это, используя calico-etcd.yaml вместо calico.yaml. Теперь стручки calico запущены и работают, calicoctl видит их в etcd.
Но стручки coredns застряли в ConteinerCreating. Эти строки я вижу в описать капсулу:
Warning FailedScheduling 82s (x2 over 88s) default-scheduler
0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.
Normal Scheduled 80s default-scheduler
Successfully assigned kube-system/coredns-6955765f44-clbhk to master01.<removed>
Warning FailedCreatePodSandBox 18s kubelet,
master01.<removed> Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "9ab9fe3bd3d4e145c218fe59f6578169fa09075c59718fbe2f
7033d207c4ea4c" network for pod "coredns-6955765f44-clbhk": networkPlugin cni failed to set up pod "coredns-6955765f44-clbhk_kube-system" network: unable to connect to Cilium daemon: failed to create cilium agent client after 30.000000 seconds timeout: Get http:///var/run/cilium/cilium.sock/v1/config: dial unix /var/run/cilium/cilium.sock: connect: no such file or directory
Is the agent running?
Normal SandboxChanged 17s kubelet, master01.<removed> Pod sandbox changed, it will be killed and re-created.
Но я не использую реснички. Пользуюсь бязью. я сделал попробовал ресничку во время первой отладки проблемы с ситцем, но я удалил ее, повторно восстановил кластер несколько раз, а также стер данные etcd после каждой попытки.
Вот конфиг кублета:
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: "v1.17.2"
controlPlaneEndpoint: "192.168.10.100:7443" #balancer ip:port
etcd:
external:
endpoints:
- http://192.168.20.1:2379
- http://192.168.20.2:2379
- http://192.168.40.1:2379
- http://192.168.40.2:2379
- http://192.168.40.3:2379
#controllerManager:
# extraArgs:
# node-monitor-period: "2s"
# node-monitor-grace-period: "16s"
# pod-eviction-timeout: "30s"
networking:
dnsDomain: "cluster.local"
podSubnet: "10.96.0.0/12"
serviceSubnet: "172.16.0.0/12"
apiServer:
timeoutForControlPlane: "60s"
# extraArgs:
# advertise-address: "192.168.10.100"
# bind-address: "192.168.20.1"
# secure-port: "6443"
кубернетес 1.17.2, etcd 3.3.11, centos 7 x64
Такое ощущение, что проблема где-то между api pod и etcd, но я не могу ее найти.
Да ладно. Я нашел это.
В / opt / cni / bin / были файлы cilium-cni cilium-cni.old. Очевидно, эти файлы были установлены с помощью cilium, поэтому они пережили переустановку kubernetes-cni rpm. Идк почему, но k8s предпочитает реснички, если они есть. Это ошибка? Я должен сообщить об этом?