K8s Dashboard не входит в систему (k8s версия 1.11)

Я сделал кластер K8s (1.11) с помощью инструмента kubeadm. Это 1 мастер и один узел в кластере.

  1. Я применил там интерфейс дашборда. kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml.

  2. Создан сервисный аккаунт (перешел по этой ссылке: https://github.com/kubernetes/dashboard/wiki/Creating-sample-user)

apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system

а также

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

Запустить прокси-сервер kube: kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

И получите доступ к панели управления с удаленного хоста, используя этот URL: http://<k8s master node IP>:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

Он запрашивает токен для входа: получил токен с помощью этой команды: kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

После копирования и применения токена в браузере ... он не входит в систему. Он также не показывает ошибку аутентификации ... Не уверен, что с этим не так? Мой токен неверен или моя команда прокси-сервера kube неверна?


person Tushar De    schedule 09.07.2018    source источник
comment
А как насчет журналов?   -  person Konstantin Vustin    schedule 10.07.2018


Ответы (1)


Я воссоздал все шаги в соответствии с тем, что вы опубликовали.

Оказывается, проблема в <k8s master node IP>, в этом случае вам следует использовать localhost. Итак, чтобы получить доступ к соответствующей панели инструментов, вы должны использовать:

http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

Когда вы запускаете прокси kubectl - вы создаете туннель к своему apiserver на главном узле. По умолчанию Dashboard начинается с ServiceType: ClusterIP. Порт на главном узле в этом режиме не открыт, и по этой причине вы не можете связаться с ним по «IP-адресу главного узла». Если вы хотите использовать IP-адрес главного узла, вам необходимо изменить ServiceType на NodePort.

Вам необходимо удалить старую службу и обновить конфигурацию, изменив тип службы на NodePort, как в приведенном ниже примере (обратите внимание, что ClusterIP отсутствует, поскольку он предполагается по умолчанию).

Создайте новое имя файла yaml newservice.yaml

---
# ------------------- Dashboard Service ------------------- #

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

Удалить старую службу

 kubectl delete service kubernetes-dashboard -n kube-system

Применить новую услугу

kubectl apply -f newservice.yaml

Запустить описать сервис

kubectl describe svc kubernetes-dashboard -n kube-system | grep "NodePort"

и вы можете использовать этот порт с IP-адресом главного узла

Type:                   NodePort
NodePort:           <unset> 30518/TCP

http://<k8s master node IP>:30518/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

Обратите внимание, что номер порта генерируется случайным образом, и ваш, вероятно, будет другим.

person aurelius    schedule 10.07.2018
comment
Большое спасибо за ответ; Кстати, этот вариант у меня не сработал. Я создал установку KUBECTL на своем локальном ноутбуке и настроил для подключения удаленного кластера. Теперь я могу открыть панель управления в моем локальном. Ваша идея действительно помогла мне так думать. Теперь я установил инструмент kube-shell на своем ноутбуке. Это очень помогает мне в работе с командной строкой. - person Tushar De; 11.07.2018
comment
Я пробовал это. и http: // ‹IP-адрес главного узла k8s›: 32260 / api / v1 / namespaces / kube-system / services / https: kubernetes-dashboard: / proxy / #! / login не загружается. Я убедился, что использую правильный порт. Как отлаживать? - person Karthikeyan; 28.09.2018