Pular para o conteúdo principal

🌐 Gerenciamento do Cluster Kubernetes

Este guia mostra de forma simples como Gerenciar um Cluster Kubernetes no Nuvion da SaveinCloud.


🚀 1. Acesso SSH ao Cluster

  • Você pode acessar os nós mestre e de trabalho do Kubernetes via SSH, usando a chave SSH atribuída e o nome de usuário core.

  • A partir de nossa VM Linux Bastion iremos realizar o acesso SSH com a chave privada e IP local do Master Node(Control Plane) do Cluster Kubernetes com o seguinte comando abaixo:

ssh -i /root/.ssh/id_rsa [email protected]

Acesso SSH Cluster


🚀 2. Acesso ao Painel Kubernetes

  • Após o cluster estar pronto, clique em Acesso ao Kubernetes para obter instruções sobre como acessar o painel de controle.

Acesso Kubernetes

  • Faça o download do arquivo "kubeconfig" para sua máquina a partir da aba de propriedades do seu cluster Kubernetes. Especifique o caminho para este arquivo na variável de ambiente "KUBECONFIG".
export KUBECONFIG=config
  • Inicie um proxy para o seu cluster Kubernetes.
kubectl proxy

Proxy Kubernetes

Download Kubeconfig

  • Nesta parte iremos configurar o acesso ao painel do kubernetes em nossa maquina local seguindo passo a passo acima. Em nossa maquina irei criar uma pasta com nome k8s, dentro dela criar arquivo e copiar o conteudo do KUBECONFIG que foi baixado para este novo arquivo, sair e salvar:
mkdir k8s
cd k8s/
vim lab-k8s-11_03_2026_15_42
  • Agora iremos executar o export KUBECONFIG=arquivo e depois comando echo para validar se arquivo está na variavel de ambiente KUBECONFIG, se tudo foi configurado corretamente, na sequencia podemos executar o comando kubectl proxy:
echo $KUBECONFIG

CLI Kubectl

  • Na sequencia abra o seu navegador cole o link que foi gerado pelo Kubernetes Access.

  • selecione o método de autenticação "Kubeconfig" e selecione o arquivo "kubeconfig" baixado e clique no botão Sign in, conforme demonstrado no print abaixo.

Acesso Kubeconfig

  • Pós configuração de acesso, abaixo imagem de demonstração da DASHBOARD do Cluster Kubernetes.

Kubernetes Dashboard


🚀 3. Criação de Namespaces

  • No Kubernetes, um namespace é usado para separar recursos dentro do cluster (pods, services, deployments, etc.). É muito comum para separar ambientes, equipes ou aplicações.

  • Criar namespace com kubectl

Execute:

kubectl create namespace meu-namespace

Exemplos:

kubectl create namespace treinamento
kubectl create namespace homolog
kubectl create namespace producao
  • Verificar namespaces existentes:
kubectl get namespaces
kubectl get ns
  • Criar recursos em um namespace específico

Execute:

kubectl create deployment nginx --image=nginx -n treinamento

ou

kubectl get pods -n treinamento
  • Definir namespace padrão no kubectl (para não precisar user -n sempre)

Execute:

kubectl config set-context --current --namespace=treinamento

🚀 4. Criação de Classe de Armazenamento

  • O Kubernetes permite o uso de volumes de computação como armazenamento persistente para pods. Os volumes persistentes (PVs) existem independentemente dos pods, o que significa que um volume desse tipo persiste mesmo após a exclusão do pod ao qual está montado. Esse PV pode ser montado em outros pods para acessar os dados armazenados nele. Você pode provisionar PVs dinamicamente, sem precisar criá-los manualmente, ou estaticamente, usando volumes que já existem no cluster de computação.

  • Para criar uma classe de armazenamento iremos criar um arquivo manifest com nome storage-class.yaml, colar o conteudo abaixo e salvar o arquivo e sair:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: cinder.csi.openstack.org
parameters:
type: default
  • Este manifesto descreve a classe de armazenamento default com a política de armazenamento default. Ele também marca essa política de armazenamento como padrão para o cluster Kubernetes. A política de armazenamento deve existir no cluster de computação e ser especificada nas quotas de armazenamento do projeto atual.

  • Na sequência execute o seguinte comando:

kubectl apply -f storage-class.yaml
  • Verificar classes de armazenamento existentes:
kubectl get storageclass
kubectl get sc

🚀 5. Provisionamento estático de Volumes Persistentes

  • No Painel do Nuvion iremos navegar até a tela de Volumes, e em seguida iremos criar um novo volume, clicando no botão Create Volume:

Select Volume

  • Na janela que se abre, iremos definir o nome, exemplo: vg-static-k8s, definir o tamanho em Size de 10GB e a Storage Policy sera a Default, e depois clique no botão Create:

Criacao Volume

  • Após a criação do novo volume no painel, iremos clicar nele, e na janela lateral iremos copiar o numero de ID deste volume, e depois colar este numero de ID no arquivo manifest de criação de volume persistente estatico.

ID Volume

  • Agora iremos criar nosso arquivo manifest com nome pv-static.yaml para adicionar um volume persistente estatico em nosso cluster, copie contéudo abaixo e cole em seu arquivo, na linha onde tem o campo VolumeHandle iremos colar o ID do nosso novo volume que foi criado no painel, depois salve e saia:
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: cinder.csi.openstack.org
name: mypv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 10Gi
csi:
driver: cinder.csi.openstack.org
fsType: ext4
volumeHandle: 9a14ca98-5ffa-4e46-9775-3044cb713a60
persistentVolumeReclaimPolicy: Delete
storageClassName: default
  • Na sequência execute o seguinte comando:
kubectl apply -f pv-static.yaml
  • Verificar volume persistentes estaticos existentes:
kubectl get pv 

🚀 6. Provisionamento dinamico de Volumes Persistentes

  • Volumes persistentes podem ser provisionados dinamicamente por meio de solicitações de volumes persistentes (PVCs). Uma PVC solicita um PV de uma classe de armazenamento, modo de acesso e tamanho específicos. Se um PV adequado existir no cluster, ele será vinculado à solicitação. Se não existirem PVs adequados, mas puderem ser provisionados, um novo volume será criado e vinculado à solicitação. O Kubernetes usa uma PVC para obter o PV correspondente e o monta no pod.

Pré-requisitos

  • Um pod e a declaração de volume persistente que ele utiliza devem existir no mesmo namespace.

  • Iremos criar nosso arquivo manifest com nome pv-dinamic.yaml para adicionar um volume persistente dinamico em nosso cluster, iremos também definir um size de 2Gi para este volume, copie contéudo abaixo e cole em seu arquivo, depois salve e saia:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: default
  • Este arquivo manifest especifica a solicitação de volume persistente mypvc que requer da classe de armazenamento default um volume de pelo menos 1 GiB que possa ser montado no modo de leitura/gravação por um único nó.

  • Na sequência execute o seguinte comando:

kubectl apply -f pv-dinamic.yaml
  • Verificar volume persistentes dinamicos existentes:
kubectl get pvc
  • Para deletar um PVC(PersistentVolumeClaim) use o comando:
kubectl delete pvc nome-do-pvc -n namespace
  • Exemplo de criação de um pod nginx com volume persistente dinamico:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
ports:
- container: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/www/html
name: mydisk
volumes:
- name: mydisk
persistentVolumeClaim:
claimName: mypvc1
  • Execute
kubectl apply -f nginx-mypv-pod.yaml

🚀 7. Ingress Controllers no Kubernetes

  • Para este cenario iremos instalar o Traefik como ingress controller de nosso cluster Kubernetes.

  • Para instalar o Traefik no Kubernetes, utilizaremos o gerenciador de pacotes Helm para adicionar o repositório oficial, criar um namespace dedicado e instalar o chart.

Passos para instalação:

  • Adicionar o repositório Helm:
helm repo add traefik https://helm.traefik.io/traefik
  • Atualizar o repositório:
helm repo update

-Criar um namespace dedicado (recomendado):

kubectl create ns traefik

-Instalar o Traefik:

helm install traefik traefik/traefik -n traefik
  • Ao concluir a instalação do Traefik em nosso cluster kubernetes ele retornara a seguinte mensagem no seu shell, conforme e mostrado no print a seguir:

Install Traefik

  • Verificar se o pod do Traefik esta em execução no namespace Traefik:
kubectl get pods -o wide -n traefik

🧠 Dúvidas?

Fale com nosso time de suporte técnico da SaveinCloud!