K8s Dashboard 未登录(k8s 版本 1.11)
K8s Dashboard not logging in (k8s version 1.11)
我使用 kubeadm 工具做了 K8s(1.11) 集群。它在集群中有 1 个主节点和一个节点。
我在那里应用了仪表板 UI。
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
已创建服务帐户(跟随此 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。因此,要访问正确的仪表板,您必须使用:
当你启动 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
请注意,端口号是随机生成的,您的可能会有所不同。
我使用 kubeadm 工具做了 K8s(1.11) 集群。它在集群中有 1 个主节点和一个节点。
我在那里应用了仪表板 UI。 kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
已创建服务帐户(跟随此 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。因此,要访问正确的仪表板,您必须使用:
当你启动 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
请注意,端口号是随机生成的,您的可能会有所不同。