写在前面
dashboard的安装非常简单。但按照官网建议的方式安装完成后,输入token登录时会没有反应。
这个问题困扰了我一整天,最终在这里找到了答案。
原因如下:
按官方文档建议的方式安装完dashboard后,使用kubectl proxy
代理的方式来访问webUI。使用这个代理的方式访问就会导致登录无响应的问题。
我们需要将dashboard的service类型改为NodePort,将端口映射到虚拟机上,然后直接通过虚拟机的ip地址登录
安装dashboard
首先下载官网提供的dashboard.yaml
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
修改yaml,添加NodePort.
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
# 添加Service的type为NodePort
type: NodePort
ports:
- port: 443
targetPort: 8443
# 添加映射到虚拟机的端口,k8s只支持30000以上的端口
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
安装dashboard
kubectl create -f kubernetes-dashboard.yaml
获取token
这里有一个简单的命令:
kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
也可以自己手动查询:
# 输入下面命令查询kube-system命名空间下的所有secret
kubectl get secret -n kube-system
# 然后获取token。只要是type为service-account-token的secret的token都可以使用。
# 比如我们获取replicaset-controller-token-wsv4v的touken
kubectl -n kube-system describe replicaset-controller-token-wsv4v
访问dashboard
通过node节点的ip,加刚刚我们设置的nodePort就可以访问了。
https://<node-ip>:<node-port>
认证有两种方式:
- 通过我们刚刚获取的token直接认证
-
通过Kubeconfig文件认证
只需要在kubeadm生成的admin.conf文件末尾加上刚刚获取的token就好了。- name: kubernetes-admin user: client-certificate-data: xxxxxxxx client-key-data: xxxxxx token: "在这里加上token"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。