Como usar o K3S para executar um cluster Kubernetes em sua máquina de desenvolvimento

O K3s é uma distribuição leve do Kubernetes, ideal para uso em desenvolvimento. Agora faz parte da Cloud Native Computing Foundation (CNCF), mas foi originalmente desenvolvido pela Rancher.

O K3s é fornecido como um único binário com um tamanho de arquivo inferior a 50 MB. Apesar de sua aparência minúscula, o K3s inclui tudo o que você precisa para executar um cluster Kubernetes pronto para produção. O projeto se concentra em hardware com recursos limitados, onde a confiabilidade e a capacidade de manutenção são as principais preocupações. Embora o K3s agora seja comumente encontrado na borda dos dispositivos IoT, essas qualidades também o tornam um bom candidato para uso local pelos desenvolvedores.

índice

  1. Introdução ao K3
  2. Interagindo com seu cluster
  3. Uma carga de trabalho de exemplo
  4. Configurando as opções do Kubernetes
  5. clusters de vários nós
  6. Uso de imagens em registros privados
  7. Atualizando seu cluster
  8. Desinstalar K3
  9. Conclusão

Introdução ao K3

A execução do binário K3s iniciará um cluster Kubernetes na máquina host. O processo principal do K3s inicia e gerencia todos os componentes do Kubernetes, incluindo o servidor de API do plano de controle, uma instância de trabalho do Kubelet e o tempo de execução do contêiner containerd.

Na prática, você normalmente desejará que os K3s iniciem automaticamente como um serviço. É recomendável que você use o script de instalação oficial para que o K3 seja executado rapidamente em seu sistema. Isso fará o download do binário, o moverá para o seu caminho e registrará um serviço systemd ou openrc conforme apropriado para seu sistema. Os K3s serão configurados para reiniciar automaticamente após a falha do processo ou a reinicialização do host.

 $ curl -sfL https://get.k3s.io | sh- 

Confirme se a instalação foi bem-sucedida verificando o status do Serviço k3s :

 $ sudo serviço k3s status

Você está pronto para começar a usar seu cluster se active (running) for mostrado em verde.

Interagindo com seu cluster

O K3s inclui o Kubectl se você o instalar usando o script fornecido. Ele está aninhado no domínio k3s :

 $ k3s kubectl get pods Nenhum recurso encontrado no namespace padrão.

Você pode receber um erro semelhante a este:

 $ k3s kubectl get pods WARN[0000] Não é possível ler /etc/rancher/k3s/k3s.yaml, inicie o servidor com --write-kubeconfig-mode para modificar as permissões de configuração do kube error: error loading config file "/etc/rancher /k3s/k3s.yaml": abra /etc/rancher/k3s/k3s.yaml: permissão negada

Você pode corrigir isso ajustando as permissões de arquivo do caminho referenciado:

 $ sudo chmod 644 /etc/rancher/k3s/k3s.yaml

Agora você deve poder executar comandos Kubectl sem usar sudo .

Você ainda pode usar uma instalação autônoma do Kubectl se não quiser confiar na versão integrada do K3s. Use a variável de ambiente KUBECONFIG ou o sinalizador --kubeconfig para fazer referência ao arquivo de configuração do K3s ao executar o domínio kubectl :

 $ export KUBECONFIG=/etc/rancher/k3s/k3s.yaml $ kubectl get pods Nenhum recurso encontrado no namespace padrão.

Uma carga de trabalho de exemplo

Você pode testar seu cluster adicionando uma implementação simples:

 $ k3s kubectl create deployment nginx --image=nginx:latest deployment.apps/nginx created $ k3s kubectl expo deployment nginx --type=LoadBalancer --port=80 service/nginx exposto

Use Kubectl para descobrir o endereço IP do serviço que foi criado:

 $ k3s kubectl get services NOME TIPO CLUSTER-IP EXTERNAL-IP PORTA(S) IDADE kubernetes ClusterIP 10.43.0.1 <nenhum> 443/TCP 35m nginx LoadBalancer 10.43.49.20 <pendente> 80:30968/TCP 17s

Neste exemplo, o serviço NGINX está acessível em 10.43.49.20 . Visite este URL em seu navegador da Web para ver a página de destino NGINX padrão.

Configurando as opções do Kubernetes

Você pode definir argumentos personalizados para componentes individuais do Kubernetes ao executar o K3. Os valores devem ser fornecidos como sinalizadores de linha de comando para o binário K3s. As variáveis ​​de ambiente também são suportadas, mas a conversão do sinalizador para o nome da variável nem sempre é consistente.

Aqui estão alguns sinalizadores comumente usados ​​para configurar sua instalação:

Há muitas outras opções disponíveis para personalizar como o K3s e seu cluster Kubernetes funcionam. Isso inclui funções para desabilitar componentes integrados, como o controlador Traefik Ingress ( --disable traefik ) para que você possa substituí-los por implementações alternativas.

Além de sinalizadores e variáveis, o K3s também suporta um arquivo de configuração YAML que é muito mais fácil de manter. Coloque isso em /etc/rancher/k3s/config.yaml para que o K3s o use automaticamente toda vez que iniciar. Os nomes dos campos devem ser argumentos CLI sem o prefixo -- .

 nome do nó: endereço de ligação do primeiro trabalhador: 1.2.3.4

clusters de vários nós

O K3s tem suporte completo para clusters de vários nós. Você pode adicionar nós ao cluster configurando as variáveis ​​de ambiente K3S_URL e K3S_TOKEN antes de executar o script de instalação.

 $ curl -sfL https://get.k3s.io | K3S_URL=https://192.168.0.1:6443 K3S_TOKEN=sh token -

Este script instalará o K3s e o configurará como um nó do trabalhador conectando-se ao endereço IP 192.168.0.1 . Para encontrar seu token, copie o valor do arquivo /var/lib/rancher/k3s/server/node-token na máquina que está executando o servidor K3s.

Uso de imagens em registros privados

O K3s possui um bom suporte integrado para imagens em registros privados. Você pode fornecer um arquivo de configuração especial para injetar credenciais de login em seu cluster. Essas credenciais serão lidas quando o servidor K3s for iniciado. Ele os compartilhará automaticamente com seus nós do trabalhador.

Crie um arquivo /etc/rancher/k3s/registries.yaml com o seguinte conteúdo:

 mirrors : example-registry.com : endpoint : - "https://example-registry.com:5000"

Isso permitirá que seu cluster extraia imagens como example-registry.com/example-image:latest do servidor em example-registry.com:5000 . Você pode especificar vários URLs no campo endpoint ; eles serão usados ​​como alternativas na ordem escrita até que ocorra uma extração bem-sucedida.

Forneça as credenciais do usuário para seus logs usando a seguinte sintaxe:

 mirrors : example-registry.com : endpoint : - "https://example-registry.com:5000" configs : "example-registry.com:5000" : auth : username : <username> password : <password>

As credenciais são definidas por endpoint. Registros definidos com vários endpoints precisam de entradas individuais no campo de config para cada um.

Os endpoints que usam SSL também devem receber uma configuração TLS:

 configs : "example-registry.com:5000" : auth : username : <username> password : <password tls : cert_file : /tls/cert key_file : /tls/key ca_file : /tls/ca

Selecione os cert_file , key_file e ca_file para fazer referência aos arquivos de certificado corretos para seu registro.

Atualizando seu cluster

Você pode atualizar para novas versões do K3s executando a versão mais recente do script de instalação. Isso detectará automaticamente seu cluster existente e o migrará para a nova versão.

 $ curl -sfL https://get.k3s.io | sh-

Se você personalizou seu cluster definindo variáveis ​​de ambiente do instalador, repita-as ao executar o comando upgrade:

 $ curl -sfL https://get.k3s.io | INSTALL_K3S_BIN_DIR=/usr/bin sh -

Os clusters de vários nós são atualizados usando o mesmo procedimento. Você deve fazer upgrade de cada nó do trabalhador individualmente, depois que o servidor executar a nova versão.

Você pode instalar uma versão específica do Kubernetes configurando a variável INSTALL_K3S_VERSION antes de executar o script:

 $ curl -sFL https://get.k3s.io | INSTALL_K3S_VERSION=v1.23.0 sh -

A versão INSTALL_K3S_CHANNEL pode selecionar versões instáveis ​​e versões de visualização:

 $ curl -sFL https://get.k3s.io | INSTALL_K3S_CHANNEL=último sh -

O K3s usará como padrão a execução da versão estável mais recente do Kubernetes quando essas variáveis ​​não estiverem definidas.

Desinstalar K3

Como o K3s é empacotado como um binário independente, é fácil limpá-lo se você quiser parar de usá-lo. O processo de instalação fornece um script de desinstalação que removerá os serviços do sistema, removerá o binário e excluirá todos os dados criados por seu cluster.

 $ /usr/local/bin/k3s-uninstall.sh

Você deve usar o script em /usr/local/bin/k3s-agent-uninstall.sh em vez disso, quando estiver desinstalando um nó do trabalhador K3s.

Conclusão

O K3s é uma distribuição binária única do Kubernetes que consome poucos recursos do sistema e é fácil de manter. Isso não prejudica os recursos: o K3s é anunciado como pronto para produção e tem suporte total para objetos de API do Kubernetes, armazenamento persistente e rede com balanceamento de carga.

O K3s é uma boa alternativa para outras versões do Kubernetes orientadas para o desenvolvedor, como Minikube e MicroK8s. Você não precisa executar máquinas virtuais, instalar outro software ou realizar qualquer configuração avançada para configurar seu cluster. É particularmente adequado quando você já está executando o K3 em produção, permitindo eliminar disparidades entre seus ambientes.

  • Como habilitar atualizações automáticas de contêiner Podman
  • Como grep texto de pesquisa do PowerShell

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão geek

Ir arriba