Как получить доступ к канонической панели приборов кубернетов извне?

Как получить доступ к канонической панели управления кубернетами из внешней сети / IP? Есть ли способ открыть службы панели мониторинга, внешне доступные для доступа из локального браузера, где находится узел канонического k8s-кластера?

В документации есть руководство о том, как это сделать.

Использование прокси-сервера kubectl

kubectl proxy создает прокси-сервер между вашей машиной и сервером API Kubernetes. По умолчанию он доступен только локально (с компьютера, который его запустил). Запустить локальный прокси-сервер:

 $ kubectl proxy Starting to serve on 127.0.0.1:8001 

После запуска прокси-сервера вы можете получить доступ к панели мониторинга из своего браузера.

Чтобы получить доступ к конечной точке HTTPS панели управления, перейдите по http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ : http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

ПРИМЕЧАНИЕ. Панель управления не должна публично публиковаться с помощью команды kubectl proxy, поскольку она разрешает только HTTP-соединение. Для доменов, отличных от localhost и 127.0.0.1, войти в систему невозможно. Ничего не произойдет после нажатия кнопки «Войти» на странице входа.

Использование NodePort

Этот способ доступа к Dashboard рекомендуется только для сред разработки в настройке с одним узлом. Отредактируйте kubernetes-dashboard службу kubernetes-dashboard .

 $ kubectl -n kube-system edit service kubernetes-dashboard 

Вы должны увидеть yaml-представление службы. Тип изменения: ClusterIP для ввода: NodePort и сохранения файла. Если он уже изменен, перейдите к следующему шагу.

 # Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 ... name: kubernetes-dashboard namespace: kube-system resourceVersion: "343478" selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-head uid: 8e48f478-993d-11e7-87e0-901b0e532516 spec: clusterIP: 10.100.124.90 externalTrafficPolicy: Cluster ports: - port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: kubernetes-dashboard sessionAffinity: None type: ClusterIP status: loadBalancer: {} 

Затем нам нужно проверить порт, на котором была открыта панель.

 $ kubectl -n kube-system get service kubernetes-dashboard NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard 10.100.124.90  443:31707/TCP 21h 

Панель приборов была выставлена ​​на порт 31707 (HTTPS). Теперь вы можете получить доступ к нему из своего браузера по адресу: https://:31707 . master-ip можно найти, выполнив kubectl cluster-info . Обычно это либо 127.0.0.1, либо IP вашего устройства, предполагая, что ваш кластер работает непосредственно на компьютере, на котором выполняются эти команды.

Если вы пытаетесь открыть Dashboard с помощью NodePort в многоузловом кластере, вам нужно узнать IP узла, на котором работает панель мониторинга, для доступа к ней. Вместо доступа к https://: вам нужно получить доступ к https://: .

Сервер API

Если сервер API Kubernetes открыт и доступен извне, вы можете напрямую обращаться к панели мониторинга по адресу: https://:/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

вход

Панель инструментов также может быть открыта с использованием ресурса Ingress. Например

 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: kubernetes-dashboard-ingress namespace: kube-system spec: rules: — host: kubernetes http: paths: — path: /ui backend: serviceName: kubernetes-dashboard servicePort: 80 

Есть (по крайней мере) два способа доступа к панели управления из внешнего мира:

1) запуск kubectl proxy в вашей машине разработки и посещение адреса: http: // localhost: 8001 / api / v1 / namespaces / kube-system / services / kubernetes-dashboard / proxy / #! / Pod? Namespace = default

2) выставлять свою службу панели мониторинга так же, как и для любой другой службы в вашем кластере, используя LoadBalancer, IngressController, NodePort или другой метод.