您好,登錄后才能下訂單哦!
總算在成功的部署了k8s之后,我打算再部署一下k8s的web UI:dashboard.
網上主要的部署方法都是一些IT用yaml文件去生成的dashboard服務。然后所有的文章或多或少的都有點問題,不是步驟不一樣了進行不下去了,內容或文件過期,或都就是作者認為某些內容是大家都懂的于是怱略了一些步驟,但是我已經進行不下去了。
首先是拉鏡像的問題,dashboard的鏡像依舊是在“某個外國知名搜索引擎”服務器上的沒法直接拉下來,所以依舊使用從鏡像服務器上下載之后再用docker tag命令更改名稱的方法來解決問題。
官方的鏡像地址是:k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
我找了一個鏡像的地址:mirrorgooglecontainers? (下載命令為: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
然后有了鏡像之后,開啟dashboard的pod。網上也有各種yaml文件版本,我試下來最靠譜的是以下文件。將它命名為kubernetes-dashboard.yaml。
kind:?Service apiVersion:?v1 metadata: ??labels: ????k8s-app:?kubernetes-dashboard ??name:?kubernetes-dashboard ??namespace:?kube-system spec: ??type:?NodePort ??ports: ????-?port:?443 ??????targetPort:?8443 ??????nodePort:?30001 ??selector: ????k8s-app:?kubernetes-dashboard
其中30001可以自己改,在k8s允許的范圍內內改成自己想要的端口。這個端口是應用于物理機上的而不是pod網絡。非k8s集群的集群可以通過這個端口去訪問(畢竟還是給瀏覽器去訪問的。)我已開始沒改端口,但是沒有意識到30001端口已經被其他的服務給占掉了,所以yaml文件運行后沒有起到起到什么作用。我在這里選了一個30012端口。
用這個文件來安裝dashboard
kubectl?create?-f?kubernetes-dashboard.yaml
接下來是用瀏覽器登陸,首先找到dashboard是在那個節點上運行的,
kubectl?get?pods?--all-namespaces?-o?wide?|?grep?dashboard?|?awk?'{print?$8}'
然后在瀏覽器里訪問這個node節點。網址要加上https://<節點的ip或域名>:<前面yaml文件中的nodePort的值>。我用的瀏覽器是chrome,立即顯示了“證書不受信任”的頁面,而且高級選項里繼續選項也沒有,就無法訪問了。上網查了一下這個問題的解決方法,原因是證書過期了(0001年1月3日開的證書,整整過期2000+年),只有firefox能夠添加例外。而真正的解決方法是替換證書。在網上找到最好的方法如下文。
mkdir?key?&&?cd?key openssl?genrsa?-out?dashboard.key?2048? openssl?req?-new?-out?dashboard.csr?-key?dashboard.key?-subj?'/CN=172.19.0.48' openssl?x509?-req?-in?dashboard.csr?-signkey?dashboard.key?-out?dashboard.crt? kubectl?delete?secret?kubernetes-dashboard-certs?-n?kube-system kubectl?create?secret?generic?kubernetes-dashboard-certs?--from-file=dashboard.key?--from-file=dashboard.crt?-n?kube-system??#新的證書 kubectl?delete?pod?kubernetes-dashboard-746dfd476-b2r5f?-n?kube-system????#重啟服務
其中有一些地方要根據實際情況改動,例如第三句的IP地址要改成node節點的,還有最后一句刪除pod名字也得改一下。獲取的命令為
kubectl?get?pods?--all-namespaces?-o?wide?|?grep?dashboard?|?awk?'{print?$2}'
然后在瀏覽器里就可以跳過證書受信問題了。接下來的問題是登陸界面,有兩種登陸的方式,個人覺得還是token這種方便一點。網上也有高手總結了一下獲取token命令的方法。
kubectl?-n?kube-system?describe?$(kubectl?-n?kube-system?get?secret?-n?kube-system?-o?name?|?grep?namespace)?|?grep?token
將獲取的token復制到瀏覽器的界面中,就可以登陸dashboard了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。