Por que orquestrar containers, e com o quê.


kubelet e o kube-proxy para executar e expor os workloads.


kubelet gerencia os Pods, e cada Pod isola seus containers.

O Service usa um selector (app=A) para saber quais Pods atender — não importa qual ReplicaSet os criou.

Subindo um cluster local com kind.
kind
# Windows, no PowerShell
curl.exe -Lo kind-windows-amd64.exe `
https://kind.sigs.k8s.io/dl/v0.17.0/kind-windows-amd64
Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe
Instruções para todos os sistemas: kind.sigs.k8s.io/docs/user/quick-start
Criar o cluster no WSL2, mapeando uma porta do container para o host:
# cluster-config.yml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30000
hostPort: 30000
protocol: TCP
Criar um service nginx e acessar:
$ kind create cluster --config cluster-config.yml
$ kubectl create deployment nginx --image=nginx --port=80
deployment.apps/nginx created
$ kubectl create service nodeport nginx --tcp=80:80 --node-port=30000
service/nginx created
$ curl localhost:30000
kind
$ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.25.3)
✓ Preparing nodes
✓ Writing configuration
✓ Starting control-plane
✓ Installing CNI
✓ Installing StorageClass
Set kubectl context to "kind-kind"
$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:36771
O nome padrão do cluster é kind.

hello-node
$ kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
$ kubectl get deployments
$ kubectl get pods
$ kubectl get events
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080
$ kubectl port-forward deployment/hello-node 8080:8080
$ curl http://localhost:8080
O kind não provisiona um LoadBalancer real — para isso, usa-se o MetalLB.
$ kubectl delete service hello-node
$ kubectl delete deployment hello-node
$ kubectl get pods
$ kubectl delete pod pod_name

$ curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml
$ curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml
secretGenerator:
- name: mysql-pass
literals:
- password=s&nh@123
resources:
- mysql-deployment.yaml
- wordpress-deployment.yaml
Depois de ajustar o nodePort no service do WordPress: kubectl apply -k ./ — e para desfazer, kubectl delete -k ./. Tutorial completo ↗
YouTube
What is Kubernetes? — ByteByteGo
youtube.com/watch?v=TlHvYWVUZyc