O ambiente de laboratório é uma máquina virtual rodando openSUSE 15.6. Para a criação do cluster K3s, foi utilizado o Podman, um gerenciador de contêineres OCI.
Certifique-se de que a sua máquina virtual está com o Podman instalado.
zypper install podmanInstalar o pacote podman-docker: Este pacote é crucial, pois contém o binário catatonit que o k3d (e o Podman em modo de compatibilidade) precisa. Sem ele, a criação de contêineres falha.
zypper install podman-dockerO processo de instalação do k3d requer compatibilidade com a API do Docker, então o primeiro passo é habilitá-la e criar um link simbólico para que o k3d consiga se comunicar com o Podman. Habilitar a API do Podman: Para permitir que ferramentas como o k3d e o Portainer se comuniquem com o Podman usando a API do Docker, habilite o socket e crie um link simbólico: Habilite o socket do Podman:
systemctl enable --now podman.socketCrie um link simbólico para o socket. Isso faz com que o Podman responda às requisições da API do Docker.
ln -s /run/podman/podman.sock /var/run/docker.sockCrie o diretório para armazenar os arquivos de configuração do K3s, evitando conflito com outras instalações.
mkdir -p /opt/k3dEste é o comando que cria o contêiner do K3s no modo de rede host, o que garante a conectividade, e salva os arquivos de configuração em um diretório dedicado. Rode o contêiner K3s no modo de rede host, mapeando o diretório de dados para /opt/k3d e incluindo o IP da sua VM no certificado TLS para resolver o problema de handshake.
podman run --network=host --dns 8.8.8.8 -d -v /opt/k3s:/etc/rancher/k3s --privileged --name=k3s-server rancher/k3s:v1.28.1-k3s1 server --tls-san=192.168.56.104Copie o arquivo kubeconfig para um local de fácil acesso:
cp /opt/k3d/k3s.yaml /opt/k3d/kubeconfigEdite o arquivo kubeconfig e altere o endereço do servidor de 127.0.0.1 para o IP da sua VM:
vim /opt/k3d/kubeconfig(ou use outro editor de texto como o nano)
Substitua a linha server: https://127.0.0.1:6443 por server: https://[seu-nome-ou-ip]:6443.
Agora, use o kubectl para confirmar que tudo está funcionando perfeitamente. Verifique a conexão e o status do cluster:
kubectl cluster-info --kubeconfig /opt/k3d/kubeconfigListe os nós para confirmar que o cluster está pronto:
kubectl get nodes --kubeconfig /opt/k3d/kubeconfigpodman run -d --restart=unless-stopped --privileged -e CATTLE_INSECURE_TRANSPORT=true -p 8026:80 -p 4426:443 -p 6444:6443 -p 9326:9345 -p 8426:8472 -v /opt/rancher26:/var/lib/rancher --name rancher_v2_6 rancher/rancher:v2.6.12curl --insecure -sfL https://192.168.56.104:4426/v3/import/jnqqk9dtgs2sv5mhnn6hbch5fqt28bm8bghd859gcztdqftkjgtjw8_c-m-bwpp8qmj.yaml | kubectl apply -f - --kubeconfig /opt/k3s/k3s.yaml