Введение
В этом практическом занятии (lab) вы научитесь использовать kubectl для проверки узлов в вашем кластере Kubernetes. Вы начнете с базовой информации о узлах и постепенно перейдете к более сложным темам, таким как taints и tolerations. В этом практическом занятии предполагается, что у вас уже настроен кластер Kubernetes и установлен kubectl.
Запустить кластер Minikube
Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.
Перейдите в рабочую директорию:
Откройте терминал и перейдите в папку проекта по умолчанию:
cd /home/labex/projectЗапустите Minikube:
Запустите Minikube для инициализации кластера Kubernetes:
minikube start- Эта команда настраивает однокузловой кластер Kubernetes на вашем локальном компьютере.
- В зависимости от производительности вашей системы Minikube может запускаться несколько минут.
Проверьте, что Minikube запущен:
Проверьте статус кластера Minikube:
minikube status- Проверьте, чтобы компоненты, такие как
kubeletиapiserver, были перечислены какRunning(работающие). - Если кластер не запущен, запустите команду
minikube startснова.
- Проверьте, чтобы компоненты, такие как
Если у вас возникли проблемы при запуске Minikube, используйте minikube delete для сброса среды, если это необходимо.
Основная информация о узлах
Первое, что вы сделаете, - это получить базовую информацию о узлах в вашем кластере.
Чтобы просмотреть список узлов в вашем кластере, выполните следующую команду:
kubectl get nodesЭто отобразит список всех узлов в вашем кластере вместе с их статусом.
Чтобы получить более подробную информацию о конкретном узле, выполните следующую команду:
kubectl describe node minikubeЗамените
minikubeименем узла, который вы хотите проверить. Это даст вам подробную информацию о статусе, емкости и использовании узла.
Метки (Labels) и аннотации (Annotations)
Метки (labels) и аннотации (annotations) можно использовать для добавления метаданных к узлам в вашем кластере. Эти метаданные могут быть использованы для выбора узлов для конкретных задач или для фильтрации узлов на основе определенных критериев.
Чтобы просмотреть метки (labels) и аннотации (annotations) для конкретного узла, выполните следующую команду:
kubectl get node minikube --show-labels=trueЭто отобразит метки (labels) и аннотации (annotations) для указанного узла.
Чтобы добавить метку (label) к узлу, выполните следующую команду:
kubectl label node minikube org=labexЧтобы добавить аннотацию (annotation) к узлу, выполните следующую команду:
kubectl annotate node minikube environment=productionИспользуйте следующую команду для проверки меток (labels) на узле:
kubectl get nodes --show-labelsЭто выведет список всех узлов в кластере вместе с их метками (labels). Узлы могут быть помечены метками (labels), чтобы помочь определить их назначение или характеристики.
Taints и Tolerations
Taints и tolerations можно использовать для управления тем, какие поды (pods) могут быть запланированы на каких узлах в вашем кластере. Taint - это специальная метка (label), которая помечает узел как не подходящий для определенных типов подов (pods), а toleration - это настройка, которая позволяет поду (pod) быть запланированным на узле с соответствующим taint.
Чтобы просмотреть taints для конкретного узла, выполните следующую команду:
kubectl describe node minikube | grep TaintsЭто отобразит taints для указанного узла.
Чтобы добавить taint к узлу, выполните следующую команду:
kubectl taint node minikube app=backend:NoScheduleЧтобы создать toleration для пода (pod), выполните следующую команду:
cat << EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx tolerations: - key: app operator: Exists effect: NoSchedule EOFЭтот под (pod) использует
appв качестве имени taint иNoScheduleв качестве эффекта, который должен иметь этот taint.
Просмотр емкости узла и использования ресурсов
Чтобы просмотреть доступные ресурсы на узле, используйте следующую команду:
kubectl describe node minikube | grep -A 8 "Allocated resources"
Замените minikube именем узла, который вы хотите проверить.
Это предоставит подробную информацию о узле, включая его емкость и текущее использование ресурсов.
Просмотр событий узла
В Kubernetes вы можете использовать следующую команду для фильтрации всех событий, связанных с определенным узлом:
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube
Замените minikube именем узла, по которому вы хотите выполнить запрос. Эта команда выведет список всех событий, связанных с этим узлом, таких как перезапуски, обновления и так далее.
Блокировка и разблокировка узла
В некоторых случаях вам может понадобиться временно исключить узел из работы для проведения технического обслуживания или по другим причинам. Kubernetes позволяет пометить узел как недоступный для планирования, чтобы на него не запускались новые поды (pods). Это называется "cordon".
Чтобы выполнить cordon узла, используйте следующую команду:
kubectl cordon minikube
Замените minikube именем узла, который вы хотите пометить как недоступный для планирования.
Затем используйте следующую команду для проверки статуса узла:
kubectl get node
Чтобы отменить cordon узла и разрешить запуск новых подов (pods) на нем, используйте следующую команду:
kubectl uncordon minikube
Замените minikube именем узла, для которого вы хотите отменить cordon.
Обратите внимание, что выполнение cordon узла не приводит к автоматическому удалению существующих подов (pods) с этого узла. Вы должны вручную удалить или переместить поды (pods) перед выполнением cordon узла, чтобы избежать любых нарушений работы.
Поздравляем! Вы научились выполнять cordon и uncordon узла в Kubernetes.
Резюме
В этом практическом занятии (lab) вы научились исследовать узлы в кластере Kubernetes с помощью kubectl. Вы узнали, как выводить список узлов, проверять их статус, просматривать метки (labels) и изучать их емкость и использование ресурсов. Вы также научились выполнять процедуры drain и uncordon узлов для проведения технического обслуживания и обновлений.


