Se você está procurando executar o Kubernetes na borda e notar que as soluções gerenciadas não estão atendendo às suas necessidades, você pode estar explorando bare-metal como uma opção. Este documento ajuda você a encontrar a melhor opção disponível para seu caso de uso ao configurar clusters Kubernetes na borda.
Nota
Este artigo não é uma comparação exaustiva; em vez disso, apresenta caminhos potenciais para a tomada de decisões com base em grandes qualificadores entre opções comuns.
Árvore de decisão para Kubernetes bare-metal na borda
Faça referência à árvore a seguir ao decidir entre as opções apresentadas abaixo para Kubernetes bare-metal na borda.
Baixar um arquivo Visio deste fluxograma
MicroK8s: Kubernetes "Low Ops" da Canonical
K3s: Distribuição Kubernetes certificada construída para IoT e edge computing
kubeadm: ferramenta Kubernetes para criar clusters Kubernetes básicos; bom para computação padrão (Linux/Windows)
Nota
Low Ops refere-se à redução do custo das operações quando algumas tarefas operacionais são abstraídas ou facilitadas, como atualizações automáticas ou atualizações simplificadas.
MicroK8s por Canonical
O MicroK8s é fornecido como um pacote de snap único que pode ser facilmente instalado em máquinas Linux com suporte a snaps. Instalações alternativas estão disponíveis para Windows, macOS e raspberry PI/ARM. Quando instalado, o MicroK8s cria um cluster de nó único, que pode ser gerenciado com as ferramentas MicroK8s. Ele é empacotado com seu próprio kubectl, e certos complementos podem ser ativados (por exemplo, helm, dns, ingress, metallb e muito mais). Vários nós, nós do Windows e cenários de alta disponibilidade (HA) também são suportados.
Considerações:
Existem vários requisitos de recursos, dependendo de onde você deseja executar o MicroK8s. Consulte os documentos do produto para obter os requisitos mínimos de recursos. Por exemplo:
Ubuntu: 4 GB de RAM, 20 GB de espaço em disco
Windows: 4 GB de RAM, 40 GB de espaço em disco
As cargas de trabalho do Windows só são suportadas para clusters MicroK8s com o Calico CNI.
Cada nó em um cluster de vários nós MicroK8s requer seu próprio ambiente para trabalhar, seja uma VM ou contêiner separado em uma única máquina ou uma máquina diferente na mesma rede.
Dificuldades podem surgir ao executar MicroK8s em algum hardware ARM. Consulte os documentos para possíveis soluções.
K3s por Rancher
K3s é uma distribuição leve do Kubernetes. K3s é implantado como um único binário e vem com ferramentas incorporadas, como kubectl e ctr, semelhante ao MicroK8s.
Considerações:
O binário é inferior a 100 MB, mas ainda há requisitos mínimos de recursos, dependendo do seu cenário. Consulte os documentos para obter os requisitos mínimos de recursos.
SQLite3 é o sistema de armazenamento padrão, embora outras opções sejam suportadas.
Atualmente, os nós do Windows não são suportados para K3s.
O HA pode ser obtido com um banco de dados externo ou um banco de dados incorporado. K3s adicionou suporte total para etcd incorporado a partir do lançamento v1.19.5+k3s1.
KubeAdm
Kubeadm é uma instalação simples de baunilha do Kubernetes a partir do zero.
Considerações:
Requer 2 GiB (gibibytes) ou mais de RAM por máquina.
Requer pelo menos 2 CPUs no nó do plano de controle.
O nó do plano de controle deve ser uma máquina executando um sistema operacional Linux compatível com deb/rpm.
A política de suporte de distorção de versão e versão do Kubernetes aplica-se ao kubeadm e ao Kubernetes em geral. Verifique essa política para saber quais versões do Kubernetes e kubeadm são suportadas.
Gestão/Automação
Quando se trata de automação e gerenciamento do provisionamento de clusters bare-metal, há algumas opções para explorar: Ansible e Metal3.
O Ansible fornece uma maneira fácil de gerenciar recursos remotos e, portanto, é um excelente candidato para gerenciar e unir nós remotos a um cluster do Kubernetes. Tudo o que você precisa é do binário Ansible, rodando em uma máquina Linux e SSH em máquinas remotas. Esse método fornece um mecanismo flexível para executar scripts arbitrários em máquinas de destino, o que significa que você pode usar o Ansible com qualquer uma das ferramentas mencionadas acima.
A Metal3 adota uma abordagem diferente para resolver esse problema utilizando conceitos semelhantes à API de cluster. Você precisará instanciar um cluster efêmero para provisionar e gerenciar clusters bare-metal usando objetos Kubernetes nativos. No momento da escrita, Metal3 usa kubeadm e, portanto, não suporta distribuições Kubernetes leves.
Para gerenciamento além do provisionamento de cluster, considere aprender sobre clusters habilitados para Azure Arc para gerenciar seus clusters no Azure.
Próximos passos
Para obter mais informações, consulte os seguintes artigos: