As perguntas da entrevista do Kubernetes testam sua compreensão sobre orquestração de contêineres, ciclo de vida do pod, serviços, rede, escalonamento e operações de produção. Este guia cobre as perguntas K8s mais comuns para engenheiros de DevOps e engenheiros de plataforma em 2026.
Perguntas básicas do Kubernetes
1. O que é um Pod e como ele difere de um Container?
A Podé a menor unidade implantável no Kubernetes. Ele envolve um ou mais contêineres que compartilham:
- Namespace de rede (mesmo IP, compartilhar localhost)
- Volumes de armazenamento
- Vida útil
Geralmente um contêiner por pod. Use vários contêineres para padrões secundários (agente de registro, proxy).
2. Explique a diferença entre Deployment, StatefulSet e DaemonSet
| Recurso | Caso de uso | Recurso principal |
|---|---|---|
| Implantação | Aplicativos sem estado (servidores web, APIs) | Atualizações contínuas, gerenciamento de réplicas |
| StatefulSet | Aplicativos com estado (bancos de dados, Kafka) | Nomes de pod estáveis, implantação ordenada, volumes persistentes |
| DaemonSet | Agentes em nível de nó (registro, monitoramento) | Um pod por nó automaticamente |
3. O que são ConfigMaps e segredos? Como eles diferem?
# ConfigMap — non-sensitive configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: production
DB_HOST: postgres-service
LOG_LEVEL: info
# Secret — sensitive data (base64 encoded, not encrypted by default!)
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
DB_PASSWORD: c2VjcmV0cGFzcw== # base64 encoded
# Use in Pod
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: APP_ENV
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: app-secrets
key: DB_PASSWORD
4. Explique os serviços Kubernetes e seus tipos
# ClusterIP (default) — only accessible within cluster
apiVersion: v1
kind: Service
spec:
type: ClusterIP
selector:
app: backend
ports:
- port: 8000
targetPort: 8000
# NodePort — exposes on each node's IP at static port
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080 # 30000-32767 range
# LoadBalancer — cloud provider creates LB
spec:
type: LoadBalancer
# Creates AWS ALB, GCP Load Balancer, Azure LB automatically
# Headless — no virtual IP, returns pod IPs directly (for StatefulSet)
spec:
clusterIP: None
selector:
app: kafka
5. Qual é a diferença entre testes de vivacidade e prontidão?
containers:
- name: app
livenessProbe: # Is the container alive? If fails: RESTART container
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
readinessProbe: # Is the container ready for traffic? If fails: remove from load balancer
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
startupProbe: # For slow-starting apps — delays liveness check
httpGet:
path: /startup
port: 8000
failureThreshold: 30 # gives 5*30=150s for startup
periodSeconds: 5
6. Como funciona o escalonador automático horizontal de pods (HPA)?
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # scale when avg CPU > 70%
- type: Resource
resource:
name: memory
target:
type: AverageValue
averageValue: 500Mi
# Custom metrics (requires metrics-server + Prometheus adapter)
- type: Pods
pods:
metric:
name: requests_per_second
target:
type: AverageValue
averageValue: 100
7. Explique o RBAC do Kubernetes
# ServiceAccount — identity for pods
apiVersion: v1
kind: ServiceAccount
metadata:
name: myapp-sa
# Role — permissions within a namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/logs"]
verbs: ["get", "list", "watch"]
# ClusterRole — cluster-wide permissions
kind: ClusterRole
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "create", "update", "delete"]
# RoleBinding — attach role to service account
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: myapp-pod-reader
subjects:
- kind: ServiceAccount
name: myapp-sa
namespace: production
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
8. O que acontece quando você executa `kubectl apply -f Deployment.yaml`?
- kubectl envia o manifesto para o API Server (via HTTPS)
- API Server valida e autentica a solicitação
- O servidor API persiste no etcd (armazenamento de estado do cluster)
- O Deployment Controller detecta a alteração via Watch
- O controlador cria ReplicaSet se necessário
- ReplicaSet Controller cria especificações de pod
- O agendador atribui pods aos nós (com base em recursos, taints, afinidade)
- kubelet no nó extrai a imagem e inicia o contêiner
- Status do pod atualizado para etcd
Sucesso na entrevista do Kubernetes: entenda o plano de controle (API Server, etcd, Scheduler, Controllers), saiba a diferença entre Deployment/StatefulSet/DaemonSet, explique as sondas claramente e conheça a rede (Serviços, Ingress, Políticas de Rede). As perguntas do K8 de produção geralmente abrangem RBAC, HPA, limites de recursos e orçamentos de interrupção de pod.
🔗 Share this article
✍️ Leave a Comment