Middle
Qual é a diferença entre Deployment e DaemonSet no Kubernetes?
sobes.tech IA
Resposta da IA
Deployment gere um conjunto de réplicas de Pods, garantindo a quantidade necessária e o escalonamento automático. É adequado para a maioria das aplicações sem estado.
DaemonSet garante que uma cópia do Pod seja executada em cada nó (ou em um subconjunto de nós, de acordo com o seletor) do cluster. Usado para tarefas em segundo plano, como recolha de logs ou monitorização.
Aqui estão as diferenças-chave:
| Característica | Deployment | DaemonSet |
|---|---|---|
| Objetivo | Manter um número definido de réplicas de Pods | Executar um Pod em cada nó (ou subconjunto) |
| Número de Pods | Controlado pelo parâmetro replicas |
Determinado pelo número de nós |
| Escalonamento | Horizontal, sob demanda | Relacionado à adição/remoção de nós |
| Exemplos de uso | Servidores web, microserviços | Recolhedores de logs, agentes de monitorização, daemons de rede |
| Atualização | Gradual (atualização contínua) ou substituição | Atualiza-se automaticamente nos nós conforme necessário |
Exemplo de manifesto para Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Executar 3 cópias do Pod
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Exemplo de manifesto para DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Etiqueta para o seletor de Pods
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Imagem para o recolhedor de logs
# Configurações adicionais para acesso a ficheiros de logs, etc.
tolerations:
# Frequentemente necessário para executar em nós master
- key: node-role.kubernetes.io/master
effect: NoSchedule