Понимание допусков подов в Kubernetes: подробное руководство

В кластере Kubernetes существуют сценарии, в которых вы хотите контролировать, на каких узлах могут размещаться определенные модули. Допуски модулей позволяют указать условия узла, при которых модуль может быть запланирован. В этой статье мы рассмотрим концепцию допусков модулей и обсудим различные методы установки допусков на примерах кода.

  1. Метод 1: явное задание допуска в YAML

    apiVersion: v1
    kind: Pod
    metadata:
     name: my-pod
    spec:
     tolerations:
     - key: "key1"
       operator: "Equal"
       value: "value1"
       effect: "NoSchedule"
  2. Метод 2: использование диаграмм управления для установки допуска

    # values.yaml
    tolerations:
     - key: "key1"
       operator: "Equal"
       value: "value1"
       effect: "NoSchedule"
    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: my-app
    spec:
     template:
       spec:
         tolerations: {{ .Values.tolerations }}
  3. Метод 3: программная настройка допуска в Go

    import (
     "k8s.io/apimachinery/pkg/api/resource"
     "k8s.io/apimachinery/pkg/util/intstr"
     corev1 "k8s.io/api/core/v1"
    )
    func createPodWithTolerations() (*corev1.Pod, error) {
     tolerations := []corev1.Toleration{
       {
         Key:      "key1",
         Operator: corev1.TolerationOpEqual,
         Value:    "value1",
         Effect:   corev1.TaintEffectNoSchedule,
       },
     }
     pod := &corev1.Pod{
       Spec: corev1.PodSpec{
         Tolerations: tolerations,
         // ... other pod specifications
       },
     }
    // ... create and return the pod
    }

Допуски подов в Kubernetes — это мощный механизм управления планированием подов на основе состояния узла. В этой статье мы рассмотрели три различных метода установки допусков: явно в YAML, с использованием диаграмм Helm и программно в Go. Используя эти методы, вы можете точно настроить поведение модулей подов в кластере Kubernetes.