Исследование узлов с помощью Kubectl

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

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

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("Annotate") kubernetes/BasicCommandsGroup -.-> kubernetes/cordon("Cordon") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/label("Label") subgraph Lab Skills kubernetes/initialization -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/get -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/annotate -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/cordon -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/uncordon -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/taint -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/cluster_info -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/describe -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} kubernetes/label -.-> lab-9790{{"Исследование узлов с помощью Kubectl"}} 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 для сброса среды, если это необходимо.

Базовая информация о узлах

Первое, что вы сделаете, - это получить базовую информацию о узлах в вашем кластере.

  1. Чтобы просмотреть список узлов в вашем кластере, выполните следующую команду:

    kubectl get nodes

    Это отобразит список всех узлов в вашем кластере вместе с их статусом.

  2. Чтобы получить более подробную информацию о конкретном узле, выполните следующую команду:

    kubectl describe node minikube

    Замените minikube именем узла, который вы хотите проверить. Это даст вам подробную информацию о статусе, емкости и использовании узла.

Метки (Labels) и аннотации (Annotations)

Метки (labels) и аннотации (annotations) можно использовать для добавления метаданных к узлам в вашем кластере. Эти метаданные могут быть использованы для выбора узлов для конкретных задач или для фильтрации узлов на основе определенных критериев.

  1. Чтобы просмотреть метки (labels) и аннотации (annotations) для конкретного узла, выполните следующую команду:

    kubectl get node minikube --show-labels=true

    Это отобразит метки (labels) и аннотации (annotations) для указанного узла.

  2. Чтобы добавить метку (label) к узлу, выполните следующую команду:

    kubectl label node minikube org=labex
  3. Чтобы добавить аннотацию (annotation) к узлу, выполните следующую команду:

    kubectl annotate node minikube environment=production
  4. Используйте следующую команду для проверки меток (labels) на узле:

    kubectl get nodes --show-labels

    Это выведет список всех узлов в кластере вместе с их метками (labels). Узлы могут быть помечены метками (labels), чтобы помочь определить их назначение или характеристики.

Taints и Tolerations

Taints и tolerations можно использовать для управления тем, какие поды (pods) могут быть запланированы на каких узлах в вашем кластере. Taint - это специальная метка (label), которая помечает узел как не подходящий для определенных типов подов (pods), а toleration - это настройка, которая позволяет поду (pod) быть запланированным на узле с соответствующим taint.

  1. Чтобы просмотреть taints для конкретного узла, выполните следующую команду:

    kubectl describe node minikube | grep Taints

    Это отобразит taints для указанного узла.

  2. Чтобы добавить taint к узлу, выполните следующую команду:

    kubectl taint node minikube app=backend:NoSchedule
  3. Чтобы создать 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 именем узла, по которому вы хотите выполнить запрос. Эта команда выведет список всех событий, связанных с этим узлом, таких как перезапуски, обновления и так далее.

Cordon и Uncordon узла

В некоторых случаях вам может понадобиться временно исключить узел из работы для проведения технического обслуживания или по другим причинам. 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 узлов для проведения технического обслуживания и обновлений.