Управление Kubernetes Dashboard

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

Введение

Kubernetes Dashboard - это веб-интерфейс пользователя, который упрощает управление и мониторинг кластеров Kubernetes. Он предоставляет интуитивно понятный способ развертывания и управления приложениями, а также просмотра и анализа ресурсов кластера. В этом лабораторном занятии (LabEx) вы научитесь развертывать и получать доступ к Kubernetes Dashboard.

Запустите кластер Kubernetes

Перед развертыванием Kubernetes Dashboard убедитесь, что ваш кластер запущен. В этом лабораторном занятии (LabEx) мы будем использовать Minikube.

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

    cd ~/project
    
  2. Запустите кластер Minikube:

    minikube start
    

    Minikube создает локальный кластер Kubernetes, что позволяет легко тестировать такие функции, как Dashboard. Настройка может занять несколько минут.

  3. Проверьте, запущен ли Minikube, проверив его статус:

    minikube status
    

    Если кластер не запущен, перезапустите его с помощью команды minikube delete, а затем minikube start.

Разверните Kubernetes Dashboard

Kubernetes Dashboard по умолчанию не включен в кластер. Разверните его с использованием официального YAML-файла развертывания.

  1. Выполните следующую команду для развертывания Dashboard:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
    

    Эта команда создает все необходимые ресурсы для Dashboard, включая Deployment, Service и настройки Role-Based Access Control (RBAC, ролевая система контроля доступа).

  2. Проверьте, запущен ли Dashboard:

    kubectl get pods -n kubernetes-dashboard
    

    Найдите под с именем kubernetes-dashboard и убедитесь, что его статус - Running (запущен).

  3. Проверьте пространство имен (namespace) для Dashboard:

    kubectl get ns | grep kubernetes-dashboard
    

    Пространство имен kubernetes-dashboard должно существовать.

Создайте учетную запись сервиса и привязку роли

По умолчанию Kubernetes Dashboard ограничивает доступ. Чтобы войти с административными привилегиями, вам нужно создать учетную запись сервиса и привязать ее к кластерной роли.

  1. Создайте файл с именем dashboard-admin.yaml:

    nano ~/project/dashboard-admin.yaml
    
  2. Добавьте следующее содержимое в файл:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: admin-user
    namespace: kubernetes-dashboard

Этот файл определяет учетную запись сервиса admin-user и предоставляет ей административные привилегии в рамках всего кластера.

Нажмите Ctrl+X, затем Y, а затем Enter, чтобы сохранить файл.

  1. Примените конфигурацию:

    kubectl apply -f dashboard-admin.yaml
    
  2. Проверьте учетную запись сервиса и привязку роли:

    kubectl get sa -n kubernetes-dashboard
    

    Вы должны увидеть учетную запись сервиса admin-user в списке.

    kubectl get clusterrolebinding
    

    Вы должны увидеть привязку кластерной роли admin-user в списке.

Доступ к Kubernetes Dashboard

Теперь, когда Dashboard запущен и разрешения настроены, вы можете получить к нему доступ через браузер.

  1. Сгенерируйте токен для входа:

    kubectl -n kubernetes-dashboard create token admin-user
    

    Скопируйте сгенерированный токен. Он будет использоваться для входа.

  2. Отредактируйте службу (Service) Dashboard, чтобы сделать ее доступной через NodePort:

    kubectl edit service -n kubernetes-dashboard kubernetes-dashboard
    

    Найдите поле type в разделе spec и измените его значение на NodePort. Сохраните изменения и выйдите.

Редактирование NodePort службы Dashboard

  1. Найдите NodePort, назначенный Dashboard:

    kubectl get service -n kubernetes-dashboard
    
    NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
    dashboard-metrics-scraper   ClusterIP   10.104.164.172   <none>        8000/TCP        20m
    kubernetes-dashboard        NodePort    10.108.222.153   <none>        443:30587/TCP   20m
    

    Обратите внимание на номер порта в столбце PORT(S) (например, 30587). Именно этот порт вы будете использовать для доступа к Dashboard.

  2. Получите IP-адрес узла:

    kubectl get node -o wide
    
    NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
    minikube   Ready    control-plane   35m   v1.26.1   192.168.58.2   <none>        Ubuntu 20.04.5 LTS   5.15.0-56-generic   docker://20.10.23
    

    В столбце INTERNAL-IP указан IP-адрес узла.

  3. Откройте браузер Firefox на рабочем столе и перейдите по следующему URL:

    https://<node-ip>:<node-port>
    

    Замените <node-ip> на IP-адрес узла и <node-port> на порт из шага 3.

Браузер Firefox с Kubernetes Dashboard

  1. Если появится предупреждение о безопасности, нажмите "Расширенно" и затем "Принять риск и продолжить".

Экран продолжения после предупреждения о безопасности

  1. На странице входа выберите вариант Token, вставьте (щелкните правой кнопкой мыши) токен из шага 1 и нажмите "Войти".

Страница входа в Kubernetes Dashboard

Теперь вы должны быть авторизованы в Kubernetes Dashboard, где вы можете исследовать ресурсы кластера и управлять рабочими нагрузками.

Интерфейс Kubernetes Dashboard

Резюме

В этом лабораторном занятии (LabEx) вы научились:

  1. Развертывать Kubernetes Dashboard в локальном кластере.
  2. Создавать учетную запись сервиса и связывать ее с кластерной ролью для доступа с административными правами.
  3. Получать доступ к Dashboard через браузер с использованием службы (Service) NodePort.

С помощью Kubernetes Dashboard вы можете визуально управлять приложениями, отслеживать ресурсы и изучать конфигурации кластера. Этот инструмент упрощает операции с Kubernetes, особенно для начинающих, переходящих от командной строки. Продолжайте изучать его функции, чтобы максимально использовать возможности вашей среды Kubernetes!