При добавлении нового узла в кластер Kubernetes я получаю такую ошибку:
+ docker start kubelet
Error response from daemon: {"message":"No such container: kubelet"}
Error: failed to start containers: kubelet
+ sleep 2
Эта ошибка возникает в кластере, который уже поврежден. Остался только один узел из 3. Априори остается проблема восстановления и распространения сертификатов. SSL больше не работает на этом узле. Для информации, кластер Kubernetes был развернут через Rancher. Контейнер etcd регулярно перезагружается на узле 3, и etcd не хочет развертываться на других узлах, которые я пытаюсь повторно интегрировать в кластер.
Kubelet запускается в контейнере Docker, который сам запускал Rancher, когда он создавал кластер Kubernetes. Что касается проведенных тестов, я перезапустил новый контейнер докеров с помощью etcd, я попытался снова запустить из снапшота ... ничего не позволяет перезапустить кластер. Добавление нового узла также не работает. Из того, что я видел, также существует проблема с сертификатами ssl, созданными Rancher, которые он не может найти.
Попробуйте проделать следующие шаги:
docker system prune
docker volume prune
Это удалит все тома Docker, будьте осторожны, если у вас
важные данные в ваших томах.
rm -rf /etc/cni/ /etc/kubernetes/ /opt/cni/ /var/lib/calico/ /var/lib/cni/ /var/lib/rancher/ /var/run/calico/
Официальные документы по очистке узлов рекомендуют также удаление /opt/rke
и
/var/lib/etcd
. Вы не можете удалить их, потому что они содержат кластер etcd
снимки и данные. Это особенно важно, если узел только один
в кластере.
exec
-внесли в контейнер владельца ранчо и взломали статус кластера (спасибоdocker exec -it rancher bash
Внутри контейнера:
apt-get update && apt-get -y install vim
kubectl edit cluster c-XXXX # replace the cluster-id with an actual cluster ID
Редактор найди ключ apiEndpoint
(он должен находиться прямо под
в status
ключ) и снял его. Закройте редактор и контейнер. Удостовериться
kubectl говорит, что обновил кластер.
--node-name
к команде запуска докера (на самом деле для этого есть поле редактированияdocker run -d --privileged --restart=unless-stopped --net=host \
-v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.6 \
--server https://rancher.example.com --token XXXXXXXXXXXXXXX --node-name mynode2 \
--etcd --controlplane --worker
kube-*
и kubelet
контейнеры.Взглянуть: фермер-кубелет, владелец ранчо-2-начало работы.