Получить https: //[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/по умолчанию: набрать tcp 10.96.0.1:443: тайм-аут ввода-вывода]

#kubernetes

#kubernetes

Вопрос:

мой модуль застрял в статусе создания контейнера с этим массажем :

 Failed to create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container "483590313b7fd092fe5eeec92356152721df3e971d942174464ac5a3f1529898" network for pod "my-nginx": networkPlugin cni failed to set up pod "my-nginx_default" network: CNI failed to retrieve network namespace path: cannot find network namespace for the terminated container "483590313b7fd092fe5eeec92356152721df3e971d942174464ac5a3f1529898", failed to clean up sandbox container "483590313b7fd092fe5eeec92356152721df3e971d942174464ac5a3f1529898" network for pod "my-nginx": networkPlugin cni failed to teardown pod "my-nginx_default" network: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: i/o timeout]
  

состояние рабочего узла готово .

но kubectl get pods -n kube-system , похоже, у вывода есть проблемы :

 NAME                                       READY   STATUS                   RESTARTS   AGE
calico-kube-controllers-6dfcd885bf-ktbhb   1/1     Running                  0          22h
calico-node-4fs2v                          0/1     Init:RunContainerError   1          22h
calico-node-l9qvc                          0/1     Running                  0          22h
coredns-f9fd979d6-8pzcd                    1/1     Running                  0          23h
coredns-f9fd979d6-v4cq8                    1/1     Running                  0          23h
etcd-k8s-master                            1/1     Running                  1          23h
kube-apiserver-k8s-master                  1/1     Running                  128        23h
kube-controller-manager-k8s-master         1/1     Running                  4          23h
kube-proxy-bwtwj                           0/1     CrashLoopBackOff         342        23h
kube-proxy-stq7q                           1/1     Running                  1          23h
kube-scheduler-k8s-master                  1/1     Running                  4          23h
                                   
  

и результат выполнения команды kubectl -n kube-system logs kube-proxy-bwtwj был :

 failed to try resolving symlinks in path "/var/log/pods/kube-system_kube-proxy-bwtwj_1a0f4b93-cc6f-46b9-bf29-125feba593cb/kube-proxy/348.log": lstat /var/log/pods/kube-system_kube-proxy-bwtwj_1a0f4b93-cc6f-46b9-bf29-125feba593cb/kube-proxy/348.log: no such file or directory
  

Комментарии:

1. Как вы настроили свой CNI?

2. Я запустил kubectl apply -f docs.projectcalico.org/v3.14/manifests/calico.yaml команда для применения calico cni, и я устанавливаю —pod-network-cri=10.244.10.0/16 во время инициализации кластера: инициализация sudo kubeadm —apiserver-advertise-address=192.168.43.174 —pod-network-cidr=10.244.10.0/16

3. Вы решили эту проблему?

Ответ №1:

Я вижу здесь две темы:

  1. По умолчанию --pod-network-cidr для calico 192.168.0.0/16 . Вы можете использовать другой, но всегда следите за тем, чтобы не было наложений. Тем не менее, я протестировал его по умолчанию, и мой кластер работает без проблем. Чтобы начать все сначала с правильной конфигурации, вы должны удалить узел и очистить плоскость управления. Затем продолжайте:
  • kubeadm init --pod-network-cidr=192.168.0.0/16

  • mkdir -p $HOME/.kube

  • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  • chown $(id -u):$(id -g) $HOME/.kube/config

  • kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

  • После этого присоединитесь к своим рабочим узлам с помощью kubeadm join

Используйте sudo там, где / если это необходимо. Все необходимые детали можно найти в официальной документации.

  1. failed to try resolving symlinks Ошибка означает, что kubelet ищет журналы pod в неправильном каталоге. Чтобы это исправить, вам нужно передать --log-dir=/var/log флаг в kubelet. После добавления флага вы запустили systemctl daemon-reload , чтобы kubelet был перезапущен. Это должно быть сделано на всех ваших узлах.

Комментарии:

1. Я сбросил kubadm и инициализировал свой кластер так, как вы упомянули, но все равно создал модуль прокси-сервера kube, застрявший в создании контейнера: (

2. кто-нибудь это исправит?

Ответ №2:

Убедитесь, что вы развернули calico, прежде чем присоединять другие узлы к вашему кластеру. Когда у вас есть другие узлы в вашем кластере calico-kube-controllers , иногда происходит передача на рабочий узел. Это может привести к проблемам

Ответ №3:

Вам необходимо тщательно проверять журналы на наличие модулей calico-node. В моем случае у меня есть несколько других сетевых интерфейсов, и механизм автоматического определения в calico обнаруживал неправильный интерфейс (ip-адрес). Вам необходимо ознакомиться с этой документацией https://projectcalico.docs.tigera.io/reference/node/configuration .

То, что я сделал в моем случае, было просто:

 kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=cidr=172.16.8.0/24
  

cidr — это моя «рабочая сеть».
После этого все calico-узлы перезапустились, и внезапно все стало нормально.