Команда taint в Kubernetes

KubernetesKubernetesBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (lab) вы научитесь использовать команду kubectl taint, которая представляет собой мощный инструмент в Kubernetes для добавления, изменения и удаления маркеров (taints) на узлах. Маркеры используются для указания того, что узел имеет определенные ограничения или требования, и это может помочь контролировать планирование подов в кластере Kubernetes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-9195{{"Команда taint в Kubernetes"}} kubernetes/get -.-> lab-9195{{"Команда taint в Kubernetes"}} kubernetes/uncordon -.-> lab-9195{{"Команда taint в Kubernetes"}} kubernetes/taint -.-> lab-9195{{"Команда taint в Kubernetes"}} kubernetes/apply -.-> lab-9195{{"Команда taint в Kubernetes"}} kubernetes/describe -.-> lab-9195{{"Команда taint в Kubernetes"}} end

Запуск кластера Minikube

Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.

  1. Перейдите в рабочую директорию:

    Откройте терминал и перейдите в папку проекта по умолчанию:

    cd /home/labex/project
  2. Запустите Minikube:

    Запустите Minikube для инициализации кластера Kubernetes:

    minikube start
    • Эта команда настраивает однокузловой кластер Kubernetes на вашем локальном компьютере.
    • В зависимости от производительности вашей системы Minikube может потребовать несколько минут на запуск.
  3. Проверьте, что Minikube запущен:

    Проверьте статус кластера Minikube:

    minikube status
    • Проверьте, чтобы компоненты, такие как kubelet и apiserver, были перечислены как Running (работающие).
    • Если кластер не запущен, запустите команду minikube start снова.

Если у вас возникли проблемы при запуске Minikube, используйте команду minikube delete для сброса среды при необходимости.

Исследование команды kubectl taint

Команда kubectl taint используется для добавления, изменения или удаления маркеров (taints) на узлах Kubernetes. Маркеры представляют собой пары ключ-значение с эффектами, которые влияют на планирование подов, ограничивая, какие поды могут быть размещены на определенных узлах.

Запустите следующую команду, чтобы просмотреть доступные параметры для kubectl taint:

kubectl taint -h

Вы увидите следующий вывод:

Обновить маркеры (taints) на одном или нескольких узлах.

  *  Маркер состоит из ключа, значения и эффекта. В качестве аргумента здесь он выражается как key=value:effect.
  *  Ключ должен начинаться с буквы или цифры и может содержать буквы, цифры, дефисы, точки и подчеркивания, максимум 253 символа.
  *  По желанию ключ может начинаться с префикса DNS - поддомена и одиночного '/', например example.com/my-app.
  *  Значение является необязательным. Если оно задано, оно должно начинаться с буквы или цифры и может содержать буквы, цифры, дефисы, точки и подчеркивания, максимум 63 символа.
  *  Эффект должен быть NoSchedule, PreferNoSchedule или NoExecute.
  *  В настоящее время маркеры могут применяться только к узлам.

Примеры:
  ## Обновить узел 'foo' маркером с ключом 'dedicated', значением 'special - user' и эффектом 'NoSchedule'
  ## Если маркер с таким ключом и эффектом уже существует, его значение заменяется, как указано
  kubectl taint nodes foo dedicated=special-user:NoSchedule

  ## Удалить с узла 'foo' маркер с ключом 'dedicated' и эффектом 'NoSchedule', если он существует
  kubectl taint nodes foo dedicated:NoSchedule-

  ## Удалить с узла 'foo' все маркеры с ключом 'dedicated'
  kubectl taint nodes foo dedicated-

  ## Добавить маркер с ключом 'dedicated' на узлах, имеющих метку mylabel=X
  kubectl taint node -l myLabel=X dedicated=foo:PreferNoSchedule

  ## Добавить на узел 'foo' маркер с ключом 'bar' и без значения
  kubectl taint nodes foo bar:NoSchedule

Добавление маркера (taint) на узел

На этом шаге вы научитесь добавлять маркер на узел с помощью команды kubectl taint. Маркеры используются для пометки узла определенными ограничениями или требованиями, которые могут повлиять на планирование подов на этом узле.

Для добавления маркера на узел вы можете использовать следующую команду:

kubectl taint nodes minikube app=prod:NoSchedule

Эта команда добавит маркер с ключом app и значением prod на узел с именем minikube с эффектом NoSchedule. Это предотвратит планирование подов на узел, если они не могут перенести (tolerate) этот маркер.

Затем вы можете просмотреть маркеры, которые в настоящее время применены к узлам в вашем кластере Kubernetes, используя команду kubectl describe node.

Для просмотра маркеров на узле вы можете использовать следующую команду:

kubectl describe node minikube

Маркеры, примененные к узлу, будут перечислены в разделе "Taints" в выводе. Вы можете использовать эту информацию, чтобы убедиться, что маркер, добавленный на предыдущем шаге, применен к узлу.

Удаление маркера (taint) с узла

На этом шаге вы научитесь удалять маркер с узла с помощью команды kubectl taint. Это может быть полезно, если вам нужно обновить ограничения или требования узла, или если вы хотите разрешить планирование подов на ранее помеченном маркером узле.

Для удаления маркера с узла вы можете использовать следующую команду:

kubectl taint nodes minikube app-

Эта команда удалит маркер app=prod:NoSchedule с узла minikube. Это позволит подам быть запланированными на узле без необходимости перенести (tolerate) ранее примененный маркер.

Изменение маркера (taint) на узле

На этом шаге вы научитесь изменять маркер на узле с помощью команды kubectl taint. Это может быть полезно, если вам нужно обновить ограничения или требования узла, но вы хотите сохранить существующий ключ и эффект маркера.

  1. Добавьте новый маркер со следующим содержанием:
kubectl taint nodes minikube app=uat:NoSchedule
  1. Используйте параметр overwrite для принудительного обновления
kubectl taint nodes minikube app=dev:NoSchedule --overwrite=true

Эта команда обновит значение маркера app с prod на dev на узле minikube. Это обновит маркер на узле, сохранив при этом тот же ключ и эффект маркера.

Резюме

В этом практическом занятии (lab) вы научились использовать команду kubectl taint в Kubernetes. Вы начали с добавления маркера (taint) на узел с помощью команды kubectl taint с определенным ключом, значением и эффектом. Затем вы узнали, как просмотреть маркеры, примененные к узлу, с помощью команды kubectl describe node.