Continuando o post anterior.
Preparando as Máquinas Virtuais
Neste ponto, optei por usar o TMUX
para executar os comandos um a um nas máquinas pois acho que faz parte do processo de perceber o que está sendo feito nelas.
É perfeitamente possível e recomendável automatizar esse tipo de processo usando ferramentas como Terraform ou Ansible mas lembre-se que o objetivo aqui é ter uma melhor visão do todo.
Usando o TMUX
para acessar várias máquinas ao mesmo tempo
Para ajudar na criação de uma janela para cada máquina, sugiro que você baixe e configure este script em um diretório no seu path.
Copie o script ktx
em sua máquina em um diretório que esteja incluído na variável de ambiente PATH
.
A partir do diretório kubernetes/install/kubeadm/vagrant/
, execute o script para abrir o TMUX
e criar várias janelas divididas em painés, um painel para cada máquina virtual.
ktx
O TMUX
iniciará uma sessão chamada "k8s" e criará 4 janelas:
- 0-bash
- 1-masters
- 2-workers
- 3-all (janela ativa)
Essas janelas estarão sincronizadas, isto é, o que for digitado em uma será repetido nas demais permitindo executar os próximos comandos em paralelo nas seis máquinas (masters
e workers
).
Pressione ENTER
para conectar nas 6 máquinas virtuais.
Em alguns segundos a sua tela deve estar parecida com a imagem abaixo.
Pressione CTRL+l
(L minúsculo) para limpar os terminais para que você possa ter uma visualização melhor.
Teste a Conectividade das máquinas com o Load Balancer
(lb
) na porta 6443
nc -d lb 6443 && echo "OK" || echo "FAIL"
A sua tela deve se parecer com a da imagem abaixo exibindo um "OK" como resultado do comando.
Pressione CTRL+l (L minúsculo).
Verifique se a rota para 10.96.0.0
foi configurada
route -n | grep --quiet "10.96.0.0" && echo "OK" || echo "FAIL"
A saída do comando deve exibir um "OK
". Pressione CTRL+l
novamente.
Atualize os pacotes do sistema e adicione a chave GPG
do Google
sudo apt-get update | grep --invert-match --extended-regexp "^Hit|^Get" && \
sudo curl --silent "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | sudo apt-key add -
A saída do comando deve se parecer com a imagem abaixo com um "OK"
no final.
Pressione CTRL+l
novamente (sugiro fazer isso após executar cada comando).
Adicione o Repositório do Kubernetes e atualize a lista de pacotes
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update | grep --invert-match --extended-regexp "^Hit|^Get"
O resultado deve ser:
Defina a versão do Kubernetes que deseja instalar
Algumas variáveis de ambiente serão atualizadas com formatos diferentes da versão mais recente encontrada no repositório adicionado no passo anterior.
KUBERNETES_DESIRED_VERSION='1.18' && \
KUBERNETES_VERSION="$(sudo apt-cache madison kubeadm | grep ${KUBERNETES_DESIRED_VERSION} | head -1 | awk '{ print $3 }')" && \
KUBERNETES_BASE_VERSION="${KUBERNETES_VERSION%-*}" && \
echo "" && \
echo "KUBERNETES_DESIRED_VERSION.: ${KUBERNETES_DESIRED_VERSION}" && \
echo "KUBERNETES_VERSION.........: ${KUBERNETES_VERSION}" && \
echo "KUBERNETES_BASE_VERSION....: ${KUBERNETES_BASE_VERSION}" && \
echo ""
Os três diferentes formatos devem ser exibidos dessa forma:
Instale em todos o kubeadm e o kubelet e somente o kubectl nos masters
SECONDS=0 && \
if grep --quiet "master" <<< $(hostname --short); then
sudo apt-get install --yes \
kubeadm="${KUBERNETES_VERSION}" \
kubelet="${KUBERNETES_VERSION}" \
kubectl="${KUBERNETES_VERSION}" && \
sudo apt-mark hold \
kubelet \
kubeadm \
kubectl
else
sudo apt-get install --yes \
kubeadm="${KUBERNETES_VERSION}" \
kubelet="${KUBERNETES_VERSION}" && \
sudo apt-mark hold \
kubelet \
kubeadm
fi && \
printf '%d hour %d minute %d seconds\n' $((${SECONDS}/3600)) $((${SECONDS}%3600/60)) $((${SECONDS}%60))
A instalação deve demorar menos de 1 minuto:
Agora que o utilitário crictl também foi instalado no passo anterior, configure o containerd e teste se consegue listar as imagens (neste momento a lista estará vazia)
sudo crictl config \
runtime-endpoint unix:///var/run/containerd/containerd.sock \
image-endpoint unix:///var/run/containerd/containerd.sock && \
sudo crictl images
A lista de imagens estará vazia mas indica que o Container Runtime
(containerd
) está funcionando:
Faça o preloading das imagens para acelerar o tempo no momento em que formos configurar o Control Plane
nos masters e adicionar os workers
no cluster
SECONDS=0 && \
if grep --quiet "master" <<< $(hostname --short); then
sudo kubeadm config images pull
else
sudo crictl pull "k8s.gcr.io/kube-proxy:v${KUBERNETES_BASE_VERSION}"
fi
sudo crictl pull docker.io/weaveworks/weave-kube:2.6.4
sudo crictl pull docker.io/weaveworks/weave-npc:2.6.4
printf '%d hour %d minute %d seconds\n' $((${SECONDS}/3600)) $((${SECONDS}%3600/60)) $((${SECONDS}%60))
O processo deve levar um pouco mais de 1 minuto:
Liste as imagens que foram baixadas
sudo cricrtl images
Serão exibidas imagens diferentes nos masters
e nos workers
:
Deste ponto em diante, as máquinas virtuais serão configuradas separadamente.
Você pode fechar a janela 3-all
do TMUX
pressionando CTRL+d
duas vezes (a primeira para desconectar das máquinas virtuais e a segunda para sair dos 6 terminais abertos na janela "all" o que, consequentemente, fechará essa janela).
Para mudar para a janela 1-masters
, você deve pressionar CTRL+b
e em seguida pressionar 1
(o número de identificação da janela).
Essa notação no TMUX
é representada assim: C-b 1
Você também pode digitar exit
e pressionar ENTER
e repetir essa ação para fechar os painéis e a janela 3-all
.
Na imagem abaixo são mostrados os painéis após digitar a primeira sequência:
Top comments (0)