K8S The Hard Way 8/10 - Kubectl e Rotas

Sun, Feb 28, 2021 2-minute read

Configurando kubectl para acesso remoto

Neste laboratório, você gerará um arquivo kubeconfig para o utilitário de linha de comando kubectl com base nas credenciais do usuário administrador.

Execute os comandos neste laboratório no mesmo diretório usado para gerar os certificados de cliente admin.

O arquivo de configuração do Admin Kubernetes Cada kubeconfig requer um servidor da API Kubernetes para se conectar. Para oferecer suporte à alta disponibilidade, o endereço IP atribuído ao balanceador de carga externo na frente dos servidores da API Kubernetes será usado.

Gere um arquivo kubeconfig adequado para autenticação como usuário administrador:

KUBERNETES_PUBLIC_ADDRESS=`sudo vagrant ssh-config loadbalancer | grep HostName | xargs  | sed 's/HostName//g' | xargs`

  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.pem \
    --embed-certs=true \
    --server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443

  kubectl config set-credentials admin \
    --client-certificate=admin.pem \
    --client-key=admin-key.pem

  kubectl config set-context kubernetes-the-hard-way \
    --cluster=kubernetes-the-hard-way \
    --user=admin

  kubectl config use-context kubernetes-the-hard-way

Verificação Verifique a integridade do cluster remoto do Kubernetes:

kubectl get componentstatuses

resultado

NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   

Liste os nodes no cluster Kubernetes remoto:

kubectl get nodes

resultado

NAME       STATUS   ROLES    AGE   VERSION
worker-0   Ready    <none>   22m   v1.18.6
worker-1   Ready    <none>   22m   v1.18.6
worker-2   Ready    <none>   22m   v1.18.6

Provisionamento de rotas de rede de pod

Os pods programados para um nó recebem um endereço IP do intervalo CIDR de pods do nó. Neste ponto, os pods não podem se comunicar com outros pods em execução em nós diferentes devido a rotas de rede ausentes.

Neste laboratório, você criará uma rota para cada nó de trabalho que mapeia o intervalo de CIDR do pod do nó para o endereço IP interno do nó.

A Tabela de Roteamento Nesta seção, você reunirá as informações necessárias para criar rotas na rede kubernetes-the-hard-way.

Imprima o endereço IP interno e o intervalo CIDR do pod para cada instância do trabalhador:

i=0

for instance in worker-0 worker-1 worker-2; do
    IP=10.200.$i.0
    sudo vagrant ssh-config $instance | grep "HostName" | sed 's/HostName//g' | tr "\n" " " | sed "s/Host\ /\\n/g" | awk -F " " -v IP=$IP '{print "sudo ip r add "IP"/24"" via "$1" dev eth0"}' 
    i=$((i+1)) 
done

Resultado:

sudo ip r add 10.200.0.0/24 via 192.168.122.212 dev eth0
sudo ip r add 10.200.1.0/24 via 192.168.122.167 dev eth0
sudo ip r add 10.200.2.0/24 via 192.168.122.79 dev eth0

Save as rotas em uma arquivo de confgiuração conforme a documentação da distribuição utilizada.

Proximo: K8S The Hard Way 9/10 - DNS