Доступ к веб-интерфейсу kubernetes с удаленного клиента

Я получил кластер, работающий на сервере Ubuntu. Я предоставляю веб-контент на сервере, работающем в кластере, через порт 80/443. Сам сервер, к которому я получаю доступ через ssh только, поэтому нет графического интерфейса вообще.

Теперь я хочу получить доступ к веб-интерфейсу kubernetes для этого кластера. Во время исследования я нашел источники, которые говорят, что доступ к web ui Для удаленного доступа не рекомендуется использовать удаленный доступ. Руководства только об использовании kubectl proxy выставить панель управления для localhost.

Есть ли решение или более или менее распространенный способ доступа к панели мониторинга кластера, работающего на сервере?

5 ответов

...
spec:
  clusterIP: 10.104.126.244
  externalIPs:
  - 192.168.64.1
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31180
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: LoadBalancer
status:

Вышеупомянутая служба kubernetes-dashboard-service будет работать, перейдя по https://192.168.64.1:31180/, где 192.168.64.1 - это IP-адрес вашего контроллера Kubernetes, однако есть предостережения.

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

тогда беги

kubectl -n kube-system get secret

И ищи свой replicaset-controller-token-kzpmc

Тогда беги

$ kubectl -n kube-system describe secrets replicaset-controller-token-kzpmc

И скопируйте длинный жетон внизу.

Name:       replicaset-controller-token-kzpmc
Namespace:  kube-system
Labels:     <none>
Annotations:    kubernetes.io/service-account.name=replicaset-controller
        kubernetes.io/service-account.uid=d0d93741-96c5-11e7-8245-901b0e532516

Type:   kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3 

Предполагая, что панель мониторинга K8s уже развернута в вашем кластере, перенаправьте все запросы с порта localhost вашего экземпляра Amazon EC2 на порт панели мониторинга Kubernetes, выполнив следующую команду:

      kubectl port-forward svc/kubernetes-dashboard -n kubernetes-dashboard 6443:443

А затем, чтобы получить доступ к порту с вашего локального компьютера с помощью туннеля SSH, выполните следующую команду:

      ssh -i <EC2KeyPair.pem> ec2-user@<IP> -L 6443:127.0.0.1:6443

Укажите имя файла PEM и IP-адрес, если вы осуществляете доступ из AWS EC2. Например, ssh -i "demo.pem" ec2-user@ec2-34-207-214-53.compute-1.amazonaws.com -L 6443:127.0.0.1:6443

После этого, exit из вашего экземпляра EC2 и запустите:

      ssh -i "demo.pem" ec2-user@ec2-34-207-214-53.compute-1.amazonaws.com -L 6443:127.0.0.1:6443

А теперь можно открыть https://127.0.0.1:6443 в окне браузера, чтобы получить доступ к панели управления k8s

Для получения подробной информации перейдите по ссылке https://aws.amazon.com/premiumsupport/knowledge-center/eks-cluster-kubernetes-dashboard/

2 вещи; 1. Для прямого доступа через браузер (локальный компьютер) кластер k8s должен находиться в одном сетевом домене. 2. если у вас нет пункта № 1, получите к нему доступ через Windows RDP и используйте браузер.

Если вы хотите получить доступ к своей панели мониторинга через внешний IP-адрес, вы можете отредактировать службу панели мониторинга и изменить тип на LoadBalancer, если у вас есть внешний поставщик LB, такой как GCP или AWS. Для этого Править kubernetes-dashboard оказание услуг.

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

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

# 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 # <-- Change to LoadBalancer
status:
  loadBalancer: {}

Затем выполните команду ниже, чтобы увидеть внешний ip-адрес службы Dashboard Kubernetes.

# kubectl -n kube-system get service kubernetes-dashboard
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)         AGE
kubernetes-dashboard   LoadBalancer   10.23.252.164   <external-ip>   443:31720/TCP   26d

Затем просмотрите https://<external-ip> чтобы увидеть веб-интерфейс

Также вы можете выставить свой сервис как NodePort для доступа к веб-интерфейсу через вашу подсеть.

kubectl proxy работает довольно хорошо В противном случае вы также можете изменить kubernetes-dashboard в loadbalancer/nodeport и получить доступ к кластеру через него.

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

Но я скажу kubectl proxy достаточно хорош в большинстве случаев.

Другие вопросы по тегам