K8S-1.16.9 部署 dashboard 出現 404 NOT FOUND 以及無法訪問網頁的問題
問題解決思路
最近由於工作需要我又重新部署了一遍 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:
哎 就這么坑爹:(