Atualizado em: 28 de setembro de 2024
k0s é uma distribuição do Kubernetes com todos os recursos necessários para funcionar em um único e pequeno binário desenvolvido em Go, que proporciona uma simplicidade na instalação e manutenção do cluster. A pronúncia é correta é kay-zero-ess e tem por objetivo reduzir o esforço técnico e desgaste na instalação de um cluster Kubernetes, por isso o seu nome faz alusão a “Zero Friction“.
Essa distribuição é recomendada para uso em produção em ambientes on-premisse, computação em nuvem pública, privada, híbrida, computação de borda (do inglês edge computing), servidores bare-metal e/ou virtualizados.
O código fonte está disponível no Github (https://github.com/k0sproject/k0s) e o download é gratuito.
O k0s é mantido pelo time da Mirantis, a mesma empresa que comprou a parte enterprise do Docker e que também comprou e mantém o desenvolvimento e uso gratuito do Lens. O Lens é uma IDE que facilita o gerenciamento do Kubernetes).
Segundo a documentação oficial, as principais característica são:
- Empacotado como um único binário estático;
- Control Plane isolado e auto-hospedado;
- Variedade de backends de armazenamento: etcd, SQLite, MySQL e PostgreSQL;
- Control Plane elástico;
- Vanilla upstream Kubernetes;
- Utiliza como container runtimes padrão o containerd, mas permitindo outros como o Docker;
- Suporte a diversos Container Network Interface (CNI) (por padrão dá suporte ao Calico);
- Suporta as arquiteturas de computadores x86_64 e arm64.
Requisitos de Hardware e Software
As informações de hardware e software mínimos para executar o k0s (sem contar com os requisitos dos pods, aplicações e serviços que serão adicionados) estão disponíveis na página a seguir.
https://docs.k0sproject.io/latest/system-requirements/
Portas Utilizadas
A lista de portas envolvidas na comunicação entre os nodes está disponível no final da página: https://docs.k0sproject.io/latest/networking/
Instalação e Configuração do k0s
Na criação deste tutorial foram criadas duas máquinas virtuais utilizando o Ubuntu Server LTS 20.04 64 bits conforme a topologia mostrada na figura a seguir:
Nomes e endereços IPs das máquinas virtuais usadas neste tutorial:
- master/controller: 192.168.56.80/24
- worker: 192.168.56.81/24
OBS.: Neste tutorial o control plane (nodes master) e o data plane (nodes worker) do Kubernetes está sendo executado em uma única VM para fins de teste. Isso não é adequado para ambientes de produção por não oferecer alta disponibilidade, mas o k0s dá suporte a múltiplos nodes master e worker.
Mais informações estão disponíveis na página: https://docs.k0sproject.io/latest/high-availability/
Em ambas as VMS
No master e no worker execute os seguintes comandos para instalar o k0s, verificar a localização do binário e obter a ajuda do comando:
curl -sSLf https://get.k0s.sh | sudo K0S_VERSION=v1.30.4+k0s.0 sh
whereis k0s
k0s version
k0s --help
Apenas na VM master
Execute o seguinte comando para exportar a configuração padrão de criação de um cluster k0s para um arquivo YAML.
sudo mkdir -p /etc/k0s sudo bash -c 'k0s config create > /etc/k0s/k0s.yaml'
OBS.: Para mais informações sobre as opções de configurações, acesse a página:
https://docs.k0sproject.io/v1.30.4+k0s.0/configuration
Valide o conteúdo e sintaxe do arquivo com o seguinte comando:
sudo k0s config validate --config /etc/k0s/k0s.yaml
Agora crie o nó master/controller do k0s com os seguintes comandos:
sudo k0s install controller --config /etc/k0s/k0s.yaml sudo k0s start sudo k0s status
Instale o kubectl com os seguintes comandos (se já tiver instalado, pode pular esta parte):
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl version --client
Configure o autocomplete do kubectl conforme as instruções nessa doc do badtuxx/Descomplicando o Kubernetes.
Obtenha as credenciais de acesso ao cluster para com o seguinte comando:
sudo cat /var/lib/k0s/pki/admin.conf > $HOME/admin.conf
No arquivo recém criado altere a seguinte linha:
Antes:
server: https://localhost:6443
Depois:
server: https://192.168.56.80:6443
Adicione o acesso ao cluster ao arquivo do kubeconfig com os seguintes comandos.
mkdir -p $HOME/.kube
cat $HOME/admin.conf >> ~/.kube/config
Agora você pode tentar acessar os nodes do cluster e os pod com os seguintes comandos:
kubectl get nodes
kubectl get pods --all-namespaces
Ou:
sudo k0s kubectl get nodes
sudo k0s kubectl get pods --all-namespaces
OBS.: O node master/controller não será exibido na lista de nodes, isso é uma especificidade do k0s que por padrão só exibe os nodes workers, porque são os que realmente podem executar cargas de trabalho do usuário.
Para adicionar um node worker, criar um arquivo com o token e envie para a VM a ser adicionada ao cluster. Para isso utilize os seguintes comandos:
sudo k0s token create --role=worker > $HOME/token-file scp token-file NOME_USUARIO@192.168.56.81:
Visualize a lista de tokens com o seguinte comando:
sudo k0s token list --debugListenOn 192.168.56.80
Apenas na VM worker
Após ter instalado o k0s no node worker (instruções mostradas no início deste tutorial), execute o seguinte comando para instalar o k0s como worker nesta VM e adicioná-la ao cluster Kubernetes.
sudo k0s install worker --token-file $HOME/token-file sudo k0s start sudo systemctl start k0sworker sudo systemctl status k0sworker
De volta a VM master
Agora que o node foi adicionado ao cluster, execute os seguintes comandos para listar os nodes.
kubectl get nodes -o wide
Removendo o k0s (em caso de necessidade)
Execute os seguintes comandos de acordo com a VM para remover o k0s.
Na VM master:
sudo systemctl stop k0scontroller
sudo k0s reset
Na VM worker:
sudo systemctl stop k0sworker
sudo k0s reset
Mais informações podem ser encontradas no links a seguir:
https://www.mirantis.com/blog/how-to-set-up-k0s-kubernetes-a-quick-and-dirty-guide/
Deixe um comentário