Middle
Каква е разликата между Deployment и DaemonSet в Kubernetes?
sobes.tech AI
Отговор от AI
Deployment управлява набор от реплики на Pod-ове, осигурявайки необходимия брой и автоматично мащабиране. Подходящ е за повечето безсъстояния приложения.
DaemonSet гарантира, че копие от Pod ще бъде стартиран на всеки възел (или на подмножество от възли, според селектора) на клъстера. Използва се за фонови задачи като събиране на логове или мониторинг.
Ето ключовите разлики:
| Характеристика | Deployment | DaemonSet |
|---|---|---|
| Цел | Поддържане на зададен брой реплики на Pod | Стартиране на един Pod на всеки възел (или подмножество) |
| Брой Pod-ове | Контролира се от параметъра replicas |
Определя се от броя на възлите |
| Мащабиране | Хоризонтално, по желание | Свързано с добавяне/премахване на възли |
| Примери за използване | Уеб сървъри, микросервизи | Колектори на логове, агенти за мониторинг, мрежови демони |
| Актуализация | Постепенна (rolling update) или заместваща | Автоматично се актуализира на възлите според нуждите |
Пример за манифест за Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Стартиране на 3 копия на Pod
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Пример за манифест за DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Етикет за селектора на Pod-овете
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Образ за събирача на логове
# Допълнителни настройки за достъп до лог файлове и др.
tolerations:
# Често е необходимо за стартиране на master възли
- key: node-role.kubernetes.io/master
effect: NoSchedule