Kubernetes – Criando um cluster local com Kind
Olá pessoal!!!
Hoje no Blog da 4Linux, vou demonstrar como baixar, instalar e configurar o Kind, uma forma de construir um Cluster local do Kubernetes.
O que é?
O Kind é uma ferramenta para executar clusters locais do Kubernetes usando “nós” de contêiner Docker. Kind foi projetado principalmente para testar o próprio Kubernetes, mas pode ser usado para desenvolvimento local ou CI.
Como é o Kind?
Ele consiste em:
- Pacotes Go que implementam criação de cluster, construção de imagem, etc.
- Uma interface de linha de comando (kind) construída sobre esses pacotes.
- Imagens Docker escritas para executar systemd, Kubernetes, etc.
- A integração do kubetest também construída nesses pacotes (WIP) tipo bootstrap cada em “nó” com kubeadm.
O Kind ainda é um trabalho em em construção. Para acompanhar, consulte 1.0 Roadmap
Instalação
Para seguir o passo a passo de instalação, utilize o manual de instação. Para o nosso ambiente, vou demonstrar usando o modo via binários no Linux.
Antes de escutar a criação do cluster, você precisa ter instalado o Docker ou o Podman em sua máquina.
Bora instalar o Kind.
Execute:
# para AMD64/x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
# Para ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
Criando nosso cluster local
Antes de criar o nosso cluster, vamos criar um arquivo yaml
com as informações do nosso cluster.
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: sparta
nodes:
- role: control-plane
- role: worker
- role: worker
Execute o comando de criar o cluster usando o arquivo de configuração que criamos:
$ kind create cluster --config cluster.yaml
Creating cluster "sparta" ...
✓ Ensuring node image (kindest/node:v1.29.2) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-sparta"
You can now use your cluster with:
kubectl cluster-info --context kind-sparta
Have a nice day!
Feito, agora visualize que o nosso cluster está em execução localmente com o cluster-info
$ kubectl cluster-info --context kind-sparta
Kubernetes control plane is running at https://127.0.0.1:39911
CoreDNS is running at https://127.0.0.1:39911/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Listando nodes criados
Agora que passamos da etapa de criação do nosso cluster local, vamos listar os nós criados e visualizar suas informações.
Listando nós:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
sparta-control-plane Ready control-plane 3m51s v1.29.2
sparta-worker Ready <none> 3m28s v1.29.2
sparta-worker2 Ready <none> 3m27s v1.29.2
Visualizando informações de um dos nodes:
$ kubectl describe node sparta-control-plane
Name: sparta-control-plane
Roles: control-plane
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=sparta-control-plane
kubernetes.io/os=linux
node-role.kubernetes.io/control-plane=
node.kubernetes.io/exclude-from-external-load-balancers=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: unix:///run/containerd/containerd.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Thu, 22 Feb 2024 15:53:11 -0300
Taints: node-role.kubernetes.io/control-plane:NoSchedule
Unschedulable: false
(...)
Criando nosso primeiro deploy
Agora que visualizamos as informações dos nodes, vamos realizar um deploy para teste.
Criando deploy
$ kubectl create deploy webserver --image nginx
deployment.apps/webserver created
Validando aplicação:
Crie um port-forward
:
$ kubectl port-forward webserver-667ddc69b6-5qnp2 8081:80
Forwarding from 127.0.0.1:8081 -> 80
Forwarding from [::1]:8081 -> 80
Agora, execute um curl em outro terminal no endereço http://127.0.0.1:8081
$ curl http://127.0.0.1:8081
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
Feito, viram como foi tranquilo a criação de um cluster local com o Kind e ainda realizar um deploy? Rápido, leve e prático.
Espero que vocês tenham gostado do post prático de hoje. Nos veremos em breve.
Se púderem, compartilhem em suas redes sociais.
Abraço.
Referências
About author
Você pode gostar também
Guia Prático: Instalação e Configuração do pgAdmin4 via Docker
O pgAdmin4 é a plataforma de administração e desenvolvimento open source mais popular para PostgreSQL. Neste post, vamos instalar e configurar esta ferramenta via Docker. DOCKER Compartilhe este post: Share
Dominando o Docker Compose: Guia completo para gerenciamento de multi-contêineres
Como foi visto em nosso post anterior sobre o Docker [1], para realizar a execução de um contêiner basta executar o comando docker container run, porém, e se for necessário
Descubra como o MetalLB aprimora o balanceamento de carga em ambientes Kubernetes on-premises
Por que usar o MetalLB em um ambiente on-premises? O MetalLB é uma solução essencial para clusters Kubernetes que não estão sendo executados em um ambiente de nuvem. Em ambientes