Как открыть панель управления Kubernetes для всех пользователей в моем vp c, используя stati c DNS в AWS EKS? - PullRequest
1 голос
/ 21 апреля 2020

Я хочу предоставить панель управления kubernetes нескольким пользователям, имеющим доступ к моему vp c, я видел несколько примеров использования внутреннего балансировщика нагрузки с внешним DNS, но я просто хочу знать, есть ли еще предложения.

1 Ответ

1 голос
/ 22 апреля 2020

Когда вы устанавливаете панель мониторинга, сервис устанавливается как ClusterIP. Чтобы предоставить пользователям с той же VP C доступ к нему, вам нужно изменить службу на NodePort.

$ kubectl get service kubernetes-dashboard -n kube-system
NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   ClusterIP   10.0.184.227   <none>        80/TCP          15m

Чтобы изменить ее, вам нужно отредактировать службу:

kubectl edit service kubernetes-dashboard -n kube-system

И измените значение .spec.type с ClusterIP на NodePort.

Другой вариант - установить исправление службы с помощью следующей команды:

$ kubectl patch service -n kube-system kubernetes-dashboard --patch '{"spec": {"type": "NodePort"}}'

После того, как вы отредактируете или исправите услуга готова к подключению по мере необходимости.

$ kubectl get service kubernetes-dashboard -n kube-system
NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   NodePort   10.0.184.227   <none>        80:30334/TCP   18m
...

Теперь, чтобы подключиться к панели мониторинга, вы должны указать своему браузеру http://master-node-ip: nodePort

$ kubectl describe service kubernetes-dashboard -n kube-system
...
NodePort:                 <unset>  30334/TCP
...
$ kubectl get node -o wide
NAME                                STATUS   ROLES   AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
aks-agentpool-20139558-vmss000000   Ready    agent   16m   v1.15.10   10.240.0.5    <none>        Ubuntu 16.04.6 LTS   4.15.0-1071-azure   docker://3.0.10+azure
...

Таким образом, на основе этого примера это выглядит следующим образом: http://10.240.0.5:30334

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

$ curl http://10.240.0.5:30334
 <!doctype html> <html ng-app="kubernetesDashboard"> <head> <meta charset="utf-8"> <title ng-controller="kdTitle as $ctrl" ng-bind="$ctrl.title()"></title> <link rel="icon" type="image/png" href="assets/images/kubernetes-logo.png"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="static/vendor.93db0a0d.css"> <link rel="stylesheet" href="static/app.ddd3b5ec.css"> </head> <body ng-controller="kdMain as $ctrl"> <!--[if lt IE 10]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser.
      Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your
      experience.</p>
    <![endif]--> <kd-login layout="column" layout-fill ng-if="$ctrl.isLoginState()"> </kd-login> <kd-chrome layout="column" layout-fill ng-if="!$ctrl.isLoginState()"> </kd-chrome> <script src="static/vendor.bd425c26.js"></script> <script src="api/appConfig.json"></script> <script src="static/app.91a96542.js"></script> </body> </html>

Чтобы узнать подробнее о различиях между всеми типами услуг Kubernetes смотрите по следующим ссылкам:

Службы публикации (ServiceTypes) Kubernetes - Служба публикации

...