Аутентификация панели управления Kubernetes на атомарном хосте

Я новичок в кубернете / атомарном хосте, поэтому мой вопрос может быть действительно тривиальным или уже хорошо обсужденным - но, к сожалению, я не смог найти никаких подсказок, как достичь своей цели - вот почему я здесь.

Я установил кластер Kubernetes на атомарных хостах (сейчас у меня только один мастер и один узел). Я работаю в облачной сети, на виртуальных машинах.

[root@master ~]# kubectl get node
NAME          STATUS    AGE
192.168.2.3   Ready     9d

После долгой суеты мне удалось настроить пользовательский интерфейс панели управления kubernetes на моем мастере.

[root@master ~]# kubectl describe pod  --namespace=kube-system
Name:           kubernetes-dashboard-3791223240-8jvs8
Namespace:      kube-system
Node:           192.168.2.3/192.168.2.3
Start Time:     Thu, 07 Sep 2017 10:37:31 +0200
Labels:         k8s-app=kubernetes-dashboard
                pod-template-hash=3791223240
Status:         Running
IP:             172.16.43.2
Controllers:    ReplicaSet/kubernetes-dashboard-3791223240
Containers:
  kubernetes-dashboard:
    Container ID:       docker://8fddde282e41d25c59f51a5a4687c73e79e37828c4f7e960c1bf4a612966420b
    Image:              gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
    Image ID:           docker-pullable://gcr.io/google_containers/kubernetes-dashboard-amd64@sha256:2c4421ed80358a0ee97b44357b6cd6dc09be6ccc27dfe9d50c9bfc39a760e5fe
    Port:               9090/TCP
    Args:
      --apiserver-host=http://192.168.2.2:8080
    Limits:
      cpu:      100m
      memory:   300Mi
    Requests:
      cpu:                      100m
      memory:                   100Mi
    State:                      Running
      Started:                  Fri, 08 Sep 2017 10:54:46 +0200
    Last State:                 Terminated
      Reason:                   Error
      Exit Code:                2
      Started:                  Thu, 07 Sep 2017 10:37:32 +0200
      Finished:                 Fri, 08 Sep 2017 10:54:44 +0200
    Ready:                      True
    Restart Count:              1
    Liveness:                   http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
    Volume Mounts:              <none>
    Environment Variables:      <none>
Conditions:
  Type          Status
  Initialized   True
  Ready         True
  PodScheduled  True
No volumes.
QoS Class:      Burstable
Tolerations:    <none>
Events:
  FirstSeen     LastSeen        Count   From                    SubObjectPath                           Type            Reason                  Message
  ---------     --------        -----   ----                    -------------                           --------        ------                  -------
  1d            32m             3       {kubelet 192.168.2.3}                                           Warning         MissingClusterDNS       kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
  1d            32m             2       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Pulled                  Container image "gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3" already present on machine
  32m           32m             1       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Created                 Created container with docker id 8fddde282e41; Security:[seccomp=unconfined]
  32m           32m             1       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Started                 Started container with docker id 8fddde282e41

также

[root@master ~]# kubectl cluster-info
Kubernetes master is running at http://localhost:8080
kubernetes-dashboard is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard

Теперь, когда я попытался подключиться к панели управления (я попытался получить доступ к панели управления через браузер на виртуальной машине Windows в той же облачной сети), используя адрес: https://192.168.218.2:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard Я получаю "неавторизованный". Я считаю, что это доказывает, что панель управления действительно работает под этим адресом, но мне нужно настроить какой-то способ доступа к нему?

Чего я хочу достичь в долгосрочной перспективе: я хочу включить подключение к панели управления с использованием логина / пароля (позже, когда я узнаю немного больше, я подумаю об аутентификации с помощью сертификатов или чего-то более безопасного, чем пароль) извне облачной сети. На данный момент можно подключиться к панели управления вообще.

Я знаю, что есть темы об аутентификации, но в большинстве из них упоминается что-то вроде:

Обычная проверка подлинности включается путем передачи параметра --basic-auth-file = SOMEFILE серверу API.

И это та часть, с которой я не могу справиться - я понятия не имею, как передавать параметры на сервер API. На атомарном хосте api-server, kube-controller-manager и kube-scheduler работают в контейнерах, поэтому я попадаю в контейнер api-server с помощью команды:

docker exec -it kube-apiserver.service bash

Я несколько раз видел, что мне нужно отредактировать файл .json в каталоге / etc / kubernetes / manifest, но, к сожалению, такого файла (или даже каталога) нет.

Прошу прощения, если моя проблема слишком тривиальна или недостаточно хорошо описана, но я новичок в (обоих) ИТ-мире и stackoverflow.

Я хотел бы предоставить больше информации, но боюсь, что в конечном итоге включу много бесполезной информации, поэтому я решил дождаться ваших инструкций по этому поводу.


person mstempniewicz    schedule 08.09.2017    source источник
comment
Может быть, мой ответ на аналогичный вопрос поможет вам   -  person user3151902    schedule 08.09.2017
comment
Как вы установили Kubernetes? Это повлияет на расположение файлов конфигурации.   -  person FuzzyChef    schedule 03.10.2017


Ответы (1)


Посетите вики-страницы панели управления kubernetes, они описывают, как чтобы получить доступ к панели управления и как пройти аутентификацию. Для быстрого доступа можно запустить:

kubectl proxy

А затем перейдите по следующему адресу:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

Вы увидите два варианта, один из них загружает ваш ~/.kube/config файл, а другой использует token. Вы можете получить токен, выполнив следующую команду:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep service-account-token | head -n 1 | awk '{print $1}')

Теперь просто скопируйте и вставьте длинную строку токена в приглашение на панели инструментов, и все готово.

person Keyvan Hedayati    schedule 08.02.2018