Доступ к веб-интерфейсу 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
достаточно хорош в большинстве случаев.