K8s Dashboard 未登录(k8s 版本 1.11)

K8s Dashboard not logging in (k8s version 1.11)

我使用 kubeadm 工具做了 K8s(1.11) 集群。它在集群中有 1 个主节点和一个节点。

  1. 我在那里应用了仪表板 UI。 kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

  2. 已创建服务帐户(跟随此 link: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 }')

在浏览器中复制并应用令牌后..它没有登录。它也没有显示身份验证错误......不确定这有什么问题?是我的令牌错误还是我的 kube 代理命令错误?

我根据您发布的内容重新创建了所有步骤。

原来问题出在 <k8s master node IP>,在这种情况下您应该使用 localhost。因此,要访问正确的仪表板,您必须使用:

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

当你启动 kubectl proxy 时——你在主节点上创建了一个到你的 apiserver 的隧道。默认情况下,Dashboard 以 ServiceType: ClusterIP 开头。这种模式下master节点上的端口没有打开,这就是你在'master node 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

请注意,端口号是随机生成的,您的可能会有所不同。