Поиск по сайту:

Панель управления веб-интерфейсом для Kubernetes


На этой странице

  1. Предварительные условия
  2.  Что мы будем делать?
  3. Развертывание панели мониторинга Kubernetes
  4. Настройте учетную запись службы для доступа к панели управления Kubernetes.
  5. Доступ к панели управления Kubernetes
  6. Заключение

Панель инструментов Kubernetes предоставляет веб-интерфейс для кластера. Можно развертывать приложения в кластере с помощью панели управления, а также устранять неполадки в существующих приложениях в кластере. Панель мониторинга также дает представление о ресурсах в кластере. Панель инструментов официально предоставлена 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, пришло время создать все объекты, отвечающие за развертывание панели мониторинга Kubernetes.

kubectl apply -f kubernetes-dashboard-deployment.yml

Проверьте развертывание, модуль и службу, созданные с помощью приведенной выше команды. Приведенная выше команда также создает пространство имен, 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 с типом \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 \IP-адрес узла:NodePort\, вы увидите следующий экран. Здесь выберите параметр «Токен», введите токен, который мы получили на предыдущем шаге, и нажмите кнопку «Войти».

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

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

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

Заключение

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