问题解决思路
最近由于工作需要我又重新部署了一遍 K8S,这次我使用了最新版本 1.16.2 来部署。
刚开始都顺风顺水,最后节点起来了,我想把仪表盘给装了,结果就出问题了。
首先是发现创建完用户登录进去后出现 404 NOT FOUND,请求的资源尚未找到,错误截图如下:
于是我去官方的 dashboard 的 issue 寻找答案,我在官方 issue 里发现有一些人遇到和我一样的问题,是因为现在官方的 dashboard 的 yaml 文件已经升级到了 2.X 版本,很多人拿着 1.X 的版本部署 dashboard 导致和 1.16.2 版本的 K8S 出现不兼容现象(ps: 官方主页更新真慢)。
于是我根据官方的给出的教程,我部署了官方最新的 dashboard yaml 文件,并且 pod 和 service 都是处于 running 状态。
接着我跟着以下步骤:
IMPORTANT: Read the Access Control guide before performing any further steps. The default Dashboard deployment contains a minimal set of RBAC privileges needed to run.
$ kubectl proxy
Now access Dashboard at:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
.
然而不幸的是还是无法访问 dashboard 界面,甚至连登录界面都进不了了。
issue 里有许多人都和我一样的情况,然而其他人给了好多意见,但是还是无法有效解决,而且官方匆匆把这些 issue 给关闭了(摊手)。
最后我通过在群里询问,有一位大佬给出意见叫我把 dashboard 通过 nodeport 的方式进行访问才解决问题。
具体如下:
记得填添加 admin 用户:
kubectl create -f admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin-user
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
已经创建好的 admin.yaml:
admin.zip
首先修改官方的 2.X 版本的 yaml,在这个地方修改加粗部分,添加 nodeport 部分:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
type: NodePort
---
这是一份改好的 danshboard yaml 文件:
recommended.zip
然后我们重新部署 dashboard,接着重新访问,发现可以成功登录且能够查看 pod:
哎 就这么坑爹:(
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于