Tutorial minimalista! Ensine você a integrar K3s rapidamente com o Cloud Controller

Em um artigo anterior, apresentamos como criar um cluster K3s de 4 nós em 60 segundos . O artigo também contém a configuração da máquina virtual. O único problema com este cluster é que não há suporte para provedor de nuvem, o que significa que você não pode usar LoadBalancer, armazenamento e outros serviços. Portanto, este artigo irá lhe dizer como integrar K3s com provedor de nuvem.

Integrar CCM (Cloud Management Controller) com K3s basicamente significa que seu cluster K3s pode se comunicar com a API do provedor de nuvem para solicitar e configurar serviços como LoadBalancer (para entrada), bem como para nós Aplique rótulos apropriados etc. Antes de diferentes provedores de nuvem, este processo é diferente, principalmente dependendo se o provedor de nuvem fornece CCM primeiro. Neste artigo, iremos instalar K3s no DigitalOcean.

Todo o processo não é complicado, mas você precisa seguir cuidadosamente as etapas abaixo. Primeiro, comece com o nó mestre. Ao instalar o nó mestre K3s, precisamos passar os seguintes parâmetros:

— disable-cloud-controller

— no-deploy servicelb

— kubelet-arg=”cloud-provider=external”

— kubelet-arg=”provider-id=digitalocean://[master_node_id]”

Então, o que eles significam? Primeiro, como o nome indica, desative o provedor de nuvem K3s padrão, caso contrário, o K3s usará seu próprio controlador de nuvem integrado. Em segundo lugar, pedimos aos K3s para não implantarem servicelb porque isso bagunçará o endereço IP - servicelb irá sobrescrever o IP de Ingress com o IP do nó, e queremos usar o IP DigitalOcean LoadBalancer como o tipo de serviço LoadBalancer. Terceiro, esses são quase todos os requisitos do CCM, só precisamos instruir o kubelet a usar um provedor de nuvem externo. O último parâmetro, este é um requisito do DO CCM - se você verificar o repositório DO CCM Github (https://github.com/digitalocean/digitalocean-cloud-controller-manager), você descobrirá que eles apenas exigem que você passe este parâmetro Para kubelet. [master_node_id] pode ser encontrado no DO Dashboard, ou fazendo uma chamada GET do droplet em si:

curl http://169.254.169.254/metadata/v1/id

Portanto, para instalar o servidor K3s preparado para CCM, precisamos executar o seguinte comando:

curl -sfL https://get.k3s.io | sh -s — server \
  --disable-cloud-controller \
  --no-deploy servicelb \
  --kubelet-arg=”cloud-provider=external” \
  --kubelet-arg=”provider-id=digitalocean://$master_id”

O texto acima é a primeira parte, preparação preliminar. Depois que o servidor K3s for iniciado, precisamos instalar o CCM. Para concluir esta etapa, primeiro você precisa clonar o repositório git:

https://github.com/digitalocean/digitalocean-cloud-controller-manager

Em seguida, precisamos criar um segredo Kubernetes contendo o token de API DigitalOcean. Você pode usar o gerador de segredos no repo ou usar o seguinte comando:

kubectl -n kube-system create secret generic digitalocean --from-literal=access-token=[YOUR_DO_API_TOKEN]

Se o segredo foi salvo, apenas aplique o manifesto yaml do warehouse:

kubectl apply -f releases/v0.1.21.yml

Agora, sempre que o serviço LoadBalancer é ativado, um DigitalOcean LoadBalancer é criado e configurado para rotear o tráfego para essa carga. Além disso, como o k3s tem o Traefik embutido por padrão, o DOLB será criado automaticamente para ele.

Até agora, criamos apenas nós mestres K3s. Para nós de trabalho, você só precisa instalar K3s com os seguintes parâmetros:

curl -sfL https://get.k3s.io | K3S_TOKEN=${token} sh -s - agent \
  --server https://${master_node_ip}:6443 \
  --kubelet-arg="cloud-provider=external" \
  --kubelet-arg="provider-id=digitalocean://$worker_id"

Agora, todos os nós têm o conjunto de rótulos apropriado (ip público / privado, área DO, etc.) e o roteamento por meio do DO LB será iniciado imediatamente.

Por fim, criei um script bash simples para automatizar todo o processo. Esta solução permite criar um cluster k3s de 4 nós (1 nó mestre + 3 nós de trabalho) no DigitalOcean em 2 minutos, com DO CCM:

https://github.com/DavidZisky/k3s-cloud

Autor:

Dawid Ziolkowski, engenheiro nativo da nuvem

Link original:

https://itnext.io/how-to-integrate-k3s-with-the-cloud-controller-36bd5020b8f7

Acho que você gosta

Origin blog.csdn.net/qq_42206813/article/details/105630200
Recomendado
Clasificación