Resposta de erro do daemon: {“message”:“No such container: kubelet”}

Resposta de erro do daemon: {“message”:“No such container: kubelet”}

Ao adicionar um novo nó a um cluster Kubernetes, acabo com este erro:

+ docker start kubelet
Error response from daemon: {"message":"No such container: kubelet"}
Error: failed to start containers: kubelet
+ sleep 2

Este erro ocorre em um cluster que já está danificado. Resta apenas um nó de 3. O nó permanece a priori um problema de recuperação e distribuição de certificados. SSL não funciona mais neste nó. Para obter informações, o cluster Kubernetes foi implantado por meio do Rancher. O contêiner etcd é reinicializado regularmente no nó 3 e o etcd não deseja implantar nos outros nós que estou tentando reintegrar ao cluster.

Kubelet é lançado em um contêiner Docker, lançado por Rancher quando ele criou o cluster Kubernetes. Em relação aos testes realizados, relancei um novo contêiner docker com etcd, tentei reiniciar a partir de um snapshot... nada permite reiniciar o cluster. Adicionar um novo nó também não é funcional. Pelo que vi, também há um problema com os certificados SSL criados pelo Rancher que ele não consegue encontrar

Responder1

Tente seguir os seguintes passos:

  1. Limpe o nó executando
docker system prune
docker volume prune

Isso excluirá todos os volumes do Docker. Tenha cuidado se você tiver
dados importantes em seus volumes.

  1. Limpe os dados de tempo de execução do Rancher/Kubernetes no nó.
rm -rf /etc/cni/ /etc/kubernetes/ /opt/cni/ /var/lib/calico/ /var/lib/cni/ /var/lib/rancher/ /var/run/calico/

Os documentos oficiais sobre limpeza de nós também recomendam a remoção de /opt/rke e
/var/lib/etcd. Você não pode removê-los porque eles contêm
instantâneos e dados do cluster etcd. Isto é especialmente importante caso haja apenas um nó
no cluster.

  1. Execute exec-ed no contêiner rancher e hackeie o status do cluster (obrigado
    @ibrokethecloud para a dica):
docker exec -it rancher bash

Dentro do contêiner:

apt-get update && apt-get -y install vim
kubectl edit cluster c-XXXX  # replace the cluster-id with an actual cluster ID

O editor encontrou a chave apiEndpoint (deve estar diretamente abaixo
da status chave) e a removeu. Saia do editor e do contêiner. Certifique-se
de que kubectl diga que atualizou o cluster.

  1. Na UI do Rancher obteve-se o comando para registrar um novo nó.
    Defina um nome diferente para o nó do que era antes, adicionando um
    --node-name ao comando docker run (na verdade, há uma caixa de edição para isso
    nas configurações avançadas). Parecia assim:
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

  1. Execute o comando acima no nó limpo e, finalmente, ele foi registrado
    com sucesso e o RKE iniciou todos os contêineres kube-* e .kubelet

Dê uma olhada:fazendeiro-kubelet, rancher-2-primeiros passos.

informação relacionada