K8S-1.16.5 部署 dashboard 出现 404 NOT FOUND 以及无法访问网页的问题

问题解决思路

最近由于工作需要我又重新部署了一遍 K8S,这次我使用了最新版本 1.16.2 来部署。
刚开始都顺风顺水,最后节点起来了,我想把仪表盘给装了,结果就出问题了。
首先是发现创建完用户登录进去后出现 404 NOT FOUND,请求的资源尚未找到,错误截图如下:

图片.png

于是我去官方的 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,不需要kubectl proxy命令,接着重新访问,发现可以成功登录且能够查看 pod:
访问地址: https://localhost:30000

图片.png

你可能感兴趣的:(K8S-1.16.5 部署 dashboard 出现 404 NOT FOUND 以及无法访问网页的问题)