K8s仪表板未登录(k8s版本1.11)

时间:2018-07-09 19:48:06

标签: kubernetes kubectl kubeadm

我使用kubeadm工具进行了K8s(1.11)集群。它是集群中的1个主节点和1个节点。

  1. 我在那里应用了仪表板UI。 kubectl创建-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 '.*'

然后使用以下网址从远程主机访问仪表板: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 proxy命令错误?

1 个答案:

答案 0 :(得分:4)

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

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

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

启动kubectl代理时-在主节点上创建到apiserver的隧道。默认情况下,仪表板以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

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

相关问题