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
IP
da máquina (192.168.10.11
) - O
Control Plane Endpoint
(lb:6443
- endereço que será usado por todos osnodes
para 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-1
mudar deNotReady
paraReady
- As novas
PODs
para o agenteWeave
forem criadas, e - As PODs do
coredns
mudarem 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)