Sobes.tech
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