Веб-интерфейс Kubernetes Dashboard

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

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

Необходимые условия

  1. Кластер Kubernetes с как минимум 1 рабочим узлом.
    Если вы хотите узнать, как создать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 главным и 2 рабочими узлами на инстансах AWS Ubuntu 18.04 EC2.
  2. Базовое понимание Kubernetes.

Что мы будем делать?

  1. Развернем панель управления Kubernetes.
  2. Настроим ServiceAccount для доступа к панели управления Kubernetes.
  3. Войдем в панель управления Kubernetes.

Развернем панель управления Kubernetes

Чтобы развернуть панель управления Kubernetes, мы можем загрузить ее объектный файл с Github. Используйте следующую команду для загрузки объектного файла. Этот файл содержит определения для Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment и Service.

pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

Загрузка шаблонов

Переименуйте файл и измените тип службы на NodePort. См. следующий скриншот.

mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml

Изменение типа службы на NodePort

После изменения типа службы на NodePort пришло время создать все объекты, необходимые для развертывания панели управления Kubernetes.

kubectl apply -f kubernetes-dashboard-deployment.yml

Проверьте развертывание, Pod и службу, которые были созданы с помощью приведенной выше команды. Эта команда также создает Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment и Service.

kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

Создание объектов Kubernetes для панели управления

На приведенном выше снимке экрана видно, что был создан сервис Kubernetes Dashboard с типом «NodePort». Это означает, что панель управления будет доступна по любому из IP-адресов узлов на NodePort «32304». В вашем кластере для этого сервиса может быть указан другой порт.

Используйте следующую команду, чтобы получить IP-адреса ваших узлов, которые понадобятся вам в последующих шагах.

kubectl get nodes -o wide

Настройте ServiceAccount для доступа к панели управления Kubernetes

Для доступа к панели управления Kubernetes вам понадобится токен. Чтобы создать токен, сначала необходимо создать ServiceAccount

Создайте новый файл и добавьте в него следующее содержимое, чтобы создать ServiceAccount. Вы также можете скачать файл объекта с моего Github репозитория.

vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rahul-admin
  namespace: kube-system

Как только у вас будет файл объекта, выполните следующую команду, чтобы создать ServiceAccount.

kubectl apply -f admin-sa.yml

Создать Service Account

Теперь вам нужно связать ServiceAccount «rahul-admin» с ролью кластера «cluster-admin». Создайте новый файл со следующим содержанием, чтобы создать ClusterRoleBinding, или нажмите здесь , чтобы загрузить объектный файл из моего репозитория на Github.

vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rahul-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: rahul-admin
    namespace: kube-system

Выполните следующую команду, чтобы создать «ClusterRoleBinding».

kubectl apply -f admin-rbac.yml

Создание ClusterRoleBinding

Теперь у нас есть «ClusterRole» —> «cluster-admin», привязанный к «ServiceAccount» —> «rahul-admin».

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

SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

Получить токен

На скриншоте выше вы можете увидеть токен, который будет использоваться для входа в панель управления Kubernetes. Скопируйте этот токен и перейдите по URL-адресу панели управления в формате «NodeIP:NodePort».

Здесь NodeIP — это IP-адрес любого из узлов в кластере, а NodePort — порт (в данном случае это 32304, у вас может быть другой порт) созданного нами сервиса.

После перехода по URL-адресу «NodeIP:NodePort» вы увидите следующий экран. Здесь выберите опцию «Token», введите токен, полученный на предыдущем шаге, и нажмите кнопку «Sign in».

Доступ к панели управления Kubernetes

Доступ к панели управления по IP:NodePort

После успешного входа вы должны увидеть панель управления Kubernetes, как показано ниже.

Панель управления — пространство имен по умолчанию

В верхней части экрана вы можете даже изменить пространство имен и просмотреть ресурсы в нем. Теперь вы готовы к изучению панели управления Kubernetes.

Панель управления — пространство имен kubernetes-dashboard

Заключение

В этой статье мы развернули все необходимые объекты Kubernetes для работы панели управления в кластере. Мы создали ServiceAccount и ClusterRoleBinding, чтобы получить токен для доступа к панели управления Kubernetes, поскольку доступ к ней невозможен напрямую. Панель управления поможет вам понять структуру кластера и увидеть все объекты, которые в нем находятся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *