安裝kubernetes dashboard前,默認(rèn)k8s已經(jīng)安裝成功但金!需要安裝的可以轉(zhuǎn)上一篇查看晴及。
下面開始安裝kubernetes dashboard:
1、在Master節(jié)點(diǎn)上面執(zhí)行
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
2美侦、查看dashboard Pod節(jié)點(diǎn)運(yùn)行情況
kubectl get pod -n kube-system
注意:如果kubernetes dashboard 已經(jīng)是 Running的話,那就說明安裝成功了魂奥。但一般情況下在不進(jìn)行翻墻的狀況下菠剩,都會(huì)是:
kubernetes-dashboard-57df4db6b-9qxn5 0/1 ErrImagePull 0 25s
3、使用命令查看問題
kubectl describe pod kubernetes-dashboard-57df4db6b-9qxn5 -n kube-system
.... #此處省略其他信息主要看下面
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 41s default-scheduler Successfully assigned kube-system/kubernetes-dashboard-57df4db6b-9qxn5 to k8s2
Warning Failed 39s kubelet, k8s2 Failed to pull image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Warning Failed 39s kubelet, k8s2 Error: ErrImagePull
Normal BackOff 39s kubelet, k8s2 Back-off pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
Warning Failed 39s kubelet, k8s2 Error: ImagePullBackOff
Normal Pulling 27s (x2 over 54s) kubelet, k8s2 pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
很明顯錯(cuò)誤原因是在K8s2上面無法獲取鏡像文件耻煤,那么既然我們無法從Google獲取就是用docker直接拉取具壮。
docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
如果你讀了上一篇文章此處應(yīng)該知道是干啥的准颓。
注意:鏡像的拉取一定是在查看錯(cuò)誤里面的From 所在的節(jié)點(diǎn),如果在你的Master上面進(jìn)行鏡像拉取或者其他節(jié)點(diǎn)的話棺妓,問題依然還是無法解決的攘已。
4、回到Master節(jié)點(diǎn) 查看dashboard Pod 節(jié)點(diǎn)狀態(tài)
kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-j9g8d 1/1 Running 0 7h24m
coredns-86c58d9df4-pg45w 1/1 Running 0 7h24m
etcd-k8s1 1/1 Running 0 7h24m
kube-apiserver-k8s1 1/1 Running 0 7h24m
kube-controller-manager-k8s1 1/1 Running 0 7h24m
kube-flannel-ds-amd64-7btlw 1/1 Running 0 6h47m
kube-flannel-ds-amd64-9vq42 1/1 Running 0 7h3m
kube-flannel-ds-amd64-kdf42 1/1 Running 0 6h47m
kube-proxy-dtmfs 1/1 Running 0 7h24m
kube-proxy-p76tc 1/1 Running 0 6h47m
kube-proxy-xgw28 1/1 Running 0 6h47m
kube-scheduler-k8s1 1/1 Running 0 7h24m
kubernetes-dashboard-57df4db6b-9qxn5 1/1 Running 0 27s
不出意外會(huì)啟動(dòng)成功了怜跑,如果依舊出現(xiàn)錯(cuò)誤: 請(qǐng)先刪除pod样勃,然后重新創(chuàng)建(注意有可能創(chuàng)建的節(jié)點(diǎn)發(fā)生了變化,從k8s2變成了k8s3性芬,所以還是需要手動(dòng)拉取鏡像)
kubectl delete pod kubernetes-dashboard-57df4db6b-9qxn5 -n kube-system #刪除節(jié)點(diǎn)命令
5峡眶、訪問kubernetes dashboard ,兩種方式進(jìn)行訪問:
1植锉、NodePort 方式訪問
創(chuàng)建NodePort 方式訪問可以兩種方式:
①是將kubernetes-dashboard.yaml文件下載到本地(使用 wget 命令將上面第一條命令的連接下載文件)
然后在Service 中添加 type: NodePort
②不用下載文件 辫樱,在dashboard搭建成功后 進(jìn)行動(dòng)態(tài)修改命令如下:
kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system
查看可訪問的接口
kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 7h26m
kubernetes-dashboard NodePort 10.109.189.52 <none> 443:30346/TCP 6h37m
即訪問地址為:https://192.168.10.202:30346
此處有坑:切忌 是HTTPS協(xié)議 你用HTTP訪問是無法訪問地,被此地坑慘了汽煮。
2搏熄、kubectl proxy 方式訪問
訪問地址:(沒錯(cuò)這次是http協(xié)議不是https IP地址為master的IP地址)
http://192.168.10.202:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
如果你是在kubernetes dashboard的github上面看到 只需要執(zhí)行kubectl proxy 就能訪問 你可以嘗試 一下,你能不能訪問我不知道暇赤,我只知道這家伙坑慘我了心例,說啥也不能訪問。
原因在于:
[root@k8s1 ~]# kubectl proxy
[root@k8s1 ~]# Starting to serve on 127.0.0.1:8001 #原因在這個(gè)127.0.0.1 上面 鞋囊,外部訪問是無法訪問到這個(gè)地址的
#修改如下
[root@k8s1 ~]# kubectl proxy --address=0.0.0.0
[root@k8s1 ~]# Starting to serve on [::]:8001
#這回應(yīng)該可以了吧止后,訪問地址 提示“Forbidden ” 啥意思 禁止訪問 咋整繼續(xù)修改命令
[root@k8s1 ~]# kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
[root@k8s1 ~]# Starting to serve on [::]:8001
#這會(huì)訪問終于見到了自己想要的界面
6、登陸kubernetes dashboard 這里只介紹Token登陸方式
①使用默認(rèn)的賬號(hào)kubernetes-dashboard的Token登陸
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard | awk '{print $1}')
.... #此處省略
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1qeGQ3aCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjBlOTYxODk1LTBiMGYtMTFlOS1hOGZlLTA4MDAyNzk4MGYxNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.QeIQ4T3EikE9ZIWkv4lInxuQ-TZmJT6XBEBaNTsL-bKQ7XQENKESqo0VtUHEngtYYs4qf8Z_U2_0c5gOHiVrkak_OqSAbUW8UwI9DOXygDvjmZyYdkpVH5iF06TWCEjMISPC6m4d9_czcXkGVPMlICJs-5C1tuJgReT7v4sspW8OUTfBezC1KMbvpuPYGNoE1d9WCQmNo75XU0vV9ie0r_YFhd-0irqU45RzvXM7HDrzvdBJotNpxgp-lNRDuz0V5HHf8NYThKWocFSxbJlz3MorXU8bRuXUE2SSwXIR4lmCIWZw1IzGGzziWknbxEdBFSGVnUz5ZFFvU3vnW5Fqdw
#token就是登陸所需要的內(nèi)容
但是這里填進(jìn)去后登陸你會(huì)發(fā)現(xiàn)問題:
黃色啥意思.....啥意思.....
就是禁止訪問的意思溜腐,別多想译株。
出現(xiàn)這個(gè)問題是因?yàn)橘~戶權(quán)限不足,因?yàn)閗ubernetes使用了RBAC用戶角色訪問控制挺益,如果你查看kubernetes-dashboard.yaml文件中創(chuàng)建的kubernetes-dashboard是RoleBinding而不是ClusterRoleBinding就知道問題所在了歉糜。
那咋辦,涼拌二
②自己創(chuàng)建賬號(hào)
# ------------------- Dashboard Service Account ------------------- #
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
# ------------------- Dashboard ClusterRoleBinding ------------------- #
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
將上面內(nèi)容 保存到文件 cluster-admin.yaml中望众。
kubectl apply -f cluster-admin.yaml #創(chuàng)建成功后獲取它的token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep cluster-admin | awk '{print $1}')
#用對(duì)應(yīng)的token登陸 即可匪补。
7、至此kubernetes dashboard 安裝完畢烂翰,遇到的坑真的不少夯缺,如果你也遇到了,可以跟大家分享一下甘耿。