Могу ли я использовать несколько PodAffiniy в моем развертывании kubernetes?

#kubernetes #kubernetes-pod #amazon-eks

#kubernetes #kubernetes-pod #amazon-eks

Вопрос:

У меня есть модуль, который я хочу запустить на том же узле, если это возможно, что и другой, или, по крайней мере, для запуска в той же зоне доступности сначала я подумал, что могу использовать podAffinity с preferredduringschedulingignoredduringexecution и двумя podAffinityTerm, но, похоже, он не работает должным образом, поэтому я подумал, смогу ли я запустить два podAffinity, чтобычто, если первый (запуск на том же хосте) невозможен, поэтому будет выполнен второй (запуск на том же сервере AZ).

Вот мой манифест развертывания :

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-test-deployment
spec:
  selector:
    matchLabels:
      app: app-test-deployment
  replicas: 1
  template:
    metadata:
      labels:
        app: app-test-deployment
    spec:
      affinity:
        podAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - pod-test
              topologyKey: "kubernetes.io/hostname"
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - pod-test
              topologyKey: "failure-domain.beta.kubernetes.io/zone"
      containers:
      - name: app-test
        image: app-test:1.14.2
        ports:
        - containerPort: 80
  

Комментарии:

1. да, ваша идея должна сработать. Какую ошибку вы получаете? Вероятно, вам следует снизить вес для второго термина?

2. мой модуль был запланирован на другой AZ, я думаю, это связано с полем веса?

Ответ №1:

  1. Установите значение weight /zone равным 99
  2. Замените preferredDuringSchedulingIgnoredDuringExecution на requiredDuringSchedulingIgnoredDuringExecution и когда произойдет сбой — вы увидите, что заставляет его перейти на другой AZ. Как только он заработает, установите обратно preferred .

Кроме того, вы пытаетесь связать привязку к тому же развертыванию, которое вы опубликовали? Если да, то ваши метки имеют несоответствие: app: app-test-deployment в deployment VS app: pod-test в podAffinityTerm.

Комментарии:

1. pod-test — это метка модуля, с которым я хочу запустить мое приложение-test-deployment на том же узле