В кластере Kubernetes существуют сценарии, в которых вы хотите контролировать, на каких узлах могут размещаться определенные модули. Допуски модулей позволяют указать условия узла, при которых модуль может быть запланирован. В этой статье мы рассмотрим концепцию допусков модулей и обсудим различные методы установки допусков на примерах кода.
-
Метод 1: явное задание допуска в YAML
apiVersion: v1 kind: Pod metadata: name: my-pod spec: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule" -
Метод 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: программная настройка допуска в 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.