Continuando o post anterior
Instalando o Control Plane no primeiro Master
Ao mudar para a janela 1-masters o comando ./conn.sh deve estar pronto para ser executado. Faça isso pressionando ENTER.
Configure o auto completion para o kubectl
cat <<EOF | tee --append ~/.bashrc
source <(kubectl completion bash)
alias k=kubectl
complete -F __start_kubectl k
EOF
source ~/.bashrc
Além de configurar o completion, o comando anterior também criou um alias que permite usar apenas k ao invés de kubectl.
Atenção: deste ponto em diante, você deve realizar a configuração apenas no primeiro master
Para isso, você precisa desativar a sincronização de janelas no TMUX.
A configuração que usei consiste na combinação C-b y. Caso queira usar a mesma combinação de teclas, sugiro criar o arquivo ${HOME}/.tmux.conf exatamente como criei aqui.
Você também pode pressionar C-b (CTRL+b) e digitar o comando abaixo (incluindo os dois pontos no início da linha) para desativar a sincronização dos painéis:
:set-window-option synchronize-panes off
Tenha certeza de que os painéis não estão mais sincronizados (digite algo no terminal ou pressione ENTER algumas vezes para ter certeza):
Configurando a versão do Kubernetes
Neste exemplo você pode manter a versão 1.18 mas este processo também foi testado com sucesso na 1.17.
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%-*}" && \
LOCAL_IP_ADDRESS=$(grep $(hostname --short) /etc/hosts | awk '{ print $1 }') && \
LOAD_BALANCER_PORT='6443' && \
LOAD_BALANCER_NAME='lb' && \
CONTROL_PLANE_ENDPOINT="${LOAD_BALANCER_NAME}:${LOAD_BALANCER_PORT}" && \
echo "" && \
echo "LOCAL_IP_ADDRESS...........: ${LOCAL_IP_ADDRESS}" && \
echo "CONTROL_PLANE_ENDPOINT.....: ${CONTROL_PLANE_ENDPOINT}" && \
echo "KUBERNETES_BASE_VERSION....: ${KUBERNETES_BASE_VERSION}" && \
echo ""
Três informações serão exibidas:
- O endereço
IPda máquina (192.168.10.11) - O
Control Plane Endpoint(lb:6443- endereço que será usado por todos osnodespara comunicação com oControl Plane) - A versão mais recente encontrada no repositório
Observe a imagem abaixo:
Inicializando o Control Plane
SECONDS=0 && \
KUBEADM_LOG_FILE="${HOME}/kubeadm-init.log" && \
NODE_NAME=$(hostname --short) && \
sudo kubeadm init \
--v 3 \
--node-name "${NODE_NAME}" \
--apiserver-advertise-address "${LOCAL_IP_ADDRESS}" \
--kubernetes-version "${KUBERNETES_BASE_VERSION}" \
--control-plane-endpoint "${CONTROL_PLANE_ENDPOINT}" \
--upload-certs | tee "${KUBEADM_LOG_FILE}" && \
printf '%d hour %d minute %d seconds\n' $((${SECONDS}/3600)) $((${SECONDS}%3600/60)) $((${SECONDS}%60))
Esse processo não deve levar mais que 1 minuto pois já havíamos efetuado o preloading das imagens usadas por ele.
Ao término da execução você deve visualizar as seguintes informações no terminal:
Você deve configurar o acesso do kubectl ao cluster recém criado
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Verificando o Status do Cluster
Neste momento, o Control Plane está ativo porém, o único nó do cluster é o master-1 e ele está como NotReady.
Isso acontece porque ainda não instalamos o plugin de CNI (Container Network Interface) para habilitar a POD Network que é a rede que permite a comunicação entre as PODs no Cluster.
Para entender melhor, vamos deixar executando um comando que vai exibir os nós e alguns objetos que já foram criados no namespace kube-system usando o comando abaixo:
watch -n 3 'kubectl get nodes,pods,services -o wide -n kube-system'
Observe o status do master-1:
Perceba também que as duas PODs do coredns estão com o status Pending e continuarão assim até que seja instalado um plugin CNI.
Como esse ambiente destina-se ao aprendizado de Kubernetes e temos uma limitação considerável de memória, usaremos o Plugin Weave.
Você pode encontrar uma lista de plugins e suas instruções de instalação aqui.
Antes de executar o comando para instalar o plugin Weave, criarei um novo painel no TMUX para executar os comandos e manter o monitoramento do passo anterior na tela.
Optei por fazer isso para que você possa perceber quando:
- O
master-1mudar deNotReadyparaReady - As novas
PODspara o agenteWeaveforem criadas, e - As PODs do
corednsmudarem paraRunning.
Para criar um novo painel no TMUX (considerando que você está usando a mesma configuração que eu no arquivo ${HOME}/.tmux.conf), use o comando C-b ".
O painel do master-1 será então dividido em dois:
Você pode ajustar os tamanhos dos painéis usando o mouse.
Para habilitar isso, pode usar o comando C-b m (esse comando ativa ou desativa o modo mouse).
Veja como reduzi o tamanho dos painéis inferiores:
No novo painel, precisamos conectar ao master-1 usando ssh. Para isso usaremos a função nativa do Vagrant:
vagrant ssh master-1
Nova conexão ao master-1 realizada:
Agora execute o comando para instalar o plugin Weave Net para a Pod Network.
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
Após executar o comando anterior você verá um log de alguns objetos criados e no painel superior poderá acompanhar a atualização das PODs e do status do master-1.
Após alguns segundos, verifique que as atualizações mencionadas anteriormente aconteceram:











Top comments (0)