Kubernetes Dashboard представляет собой веб-интерфейс для управления кластером. С его помощью можно развертывать приложения в кластере, а также устранять неполадки в уже работающих приложениях. Кроме того, интерфейс предоставляет информацию о ресурсах кластера. Kubernetes Dashboard официально поддерживается проектом Kubernetes. С помощью панели управления можно создавать, изменять, обновлять и удалять объекты Kubernetes.
В этой статье мы установим официальную панель управления, предоставляемую Kubernetes, и настроим служебную учетную запись для доступа к ней. Перед тем как приступить к чтению этой статьи, предполагается, что вы знакомы с Kubernetes и у вас есть кластер Kubernetes.
Необходимые условия
- Кластер Kubernetes с как минимум 1 рабочим узлом.
Если вы хотите узнать, как создать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 главным и 2 рабочими узлами на инстансах AWS Ubuntu 18.04 EC2. - Базовое понимание Kubernetes.
Что мы будем делать?
- Развернем панель управления Kubernetes.
- Настроим ServiceAccount для доступа к панели управления Kubernetes.
- Войдем в панель управления 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 пришло время создать все объекты, необходимые для развертывания панели управления 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 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

Теперь вам нужно связать 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

Теперь у нас есть «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

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

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

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