Kubernetes安裝Dashboard的方法和思路

Kubernetes(下面簡(jiǎn)稱K8s)一直在持續(xù)的開(kāi)發(fā)中,更新非常快胳徽,網(wǎng)上有很多信息雖然有翔實(shí)的安裝步驟,但是很快就變得陳舊和不合時(shí)宜烙心,因此強(qiáng)烈建議從官網(wǎng)入口膜廊,網(wǎng)上的文章只把它當(dāng)成做一個(gè)參考乏沸。

本文也有可能很快過(guò)時(shí)淫茵,因此我盡量說(shuō)明安裝的思路和參考文章的引用來(lái)源,以提供授人以漁的方法蹬跃。如果有過(guò)時(shí)的地方匙瘪,也請(qǐng)?jiān)谖恼孪旅嫣砑釉u(píng)論,我看到會(huì)盡快進(jìn)行更新蝶缀。

先說(shuō)明一下當(dāng)前的設(shè)備環(huán)境:
三臺(tái)安裝Ubuntu16.04 amd64虛機(jī)丹喻,一臺(tái)master node,兩臺(tái)worker nodes翁都。K8s的版本為V1.13.1
整個(gè)環(huán)境放在一臺(tái)透明代理的路由器后面碍论,因此無(wú)需設(shè)置加速器(該路由器的DIY方法,見(jiàn)我的博客文章 DIY: 基于OpenWRT和小米路由器的透明代理 以及姊妹篇 DIY: 基于OpenWRT和小米路由器的透明代理(SSR))

root@ha40:kubectl# kubectl get nodes
NAME   STATUS   ROLES    AGE   VERSION
ha40   Ready    master   8d    v1.13.1
ha41   Ready    <none>   8d    v1.13.1
ha42   Ready    <none>   8d    v1.13.1

官網(wǎng)安裝Web UI(Dashboard)的入口為 https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/柄慰,安裝方法非常簡(jiǎn)單鳍悠,只有兩個(gè)步驟:

  1. 安裝
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  1. 啟動(dòng)代理
kubectl proxy

然后可以通過(guò)下面的URL訪問(wèn) dashboard http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

這種方法確實(shí)簡(jiǎn)單有效,但是在大多數(shù)環(huán)境中會(huì)存在一個(gè)很大的問(wèn)題坐搔。那就是我們?cè)诎惭bk8s服務(wù)器時(shí)藏研,基本都選擇Ubuntu的server版本,而不是Ubuntu的desktop版本概行。Server版本沒(méi)有圖形桌面蠢挡,無(wú)法使用瀏覽器。因此我們需要一個(gè)從外部訪問(wèn)k8s cluster的dashboard方法凳忙。

除了上面k8s官網(wǎng)推薦的kubectl proxy方法业踏,Dashboard的官網(wǎng) https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above 還提到了其他三種方法 :

1: NodePort,這種方法只推薦使用在一個(gè)node節(jié)點(diǎn)的方案涧卵,在大多數(shù)的環(huán)境都需要多個(gè)node節(jié)點(diǎn)堡称,因此這種方法沒(méi)有什么實(shí)用價(jià)值,不建議使用艺演。
2: API Server却紧,這個(gè)是本文的推薦方法桐臊,在下文詳細(xì)列出。
3: Ingress晓殊,這個(gè)方法我沒(méi)有試過(guò)断凶,后續(xù)再更新。

API Server方法:
安裝完成Dashboard后巫俺,就可以訪問(wèn) https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 就可以了认烁。但是瀏覽器會(huì)提示下面的錯(cuò)誤:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
  },
  "status": "Failure",
  "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"kube-system\"",
  "reason": "Forbidden",
  "details": {
    "name": "https:kubernetes-dashboard:",
    "kind": "services"
  },
  "code": 403
}

這個(gè)錯(cuò)誤的原因是k8s基于安全性的考慮,瀏覽器必須要安裝一個(gè)根證書介汹,防止中間人攻擊(k8s官網(wǎng)的說(shuō)明在此 https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/

下面是一系列和證書相關(guān)的操作:(參考Jose的博客 http://www.joseluisgomez.com/containers/kubernetes-dashboard/
a. 生成crt文件

grep 'client-certificate-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt

b. 生成key文件

grep 'client-key-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key

c. 生成p12證書文件(證書的生成和導(dǎo)入需要一個(gè)密碼)

openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

d. 將該證書文件導(dǎo)入到chrome瀏覽器中(這里就不細(xì)講了却嗡,不清楚的同學(xué)可以用搜索引擎查一下)

再次訪問(wèn)https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/,瀏覽器顯示為:


Screen-Shot-2018-02-18-at-15.09.52-300x208.png

這是網(wǎng)站提示你需要認(rèn)證(否則任何人都能直接訪問(wèn)了)嘹承,有兩種方式可以認(rèn)證窗价,我用的是Token方式:

Token的方法,可以參考Dashboard官網(wǎng)的做法叹卷,https://github.com/kubernetes/dashboard/wiki/Creating-sample-user 只需要三個(gè)命令即可:
a. Create Service Account 創(chuàng)建一個(gè)服務(wù)帳號(hào)

cat <<EOF | kubectl create -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
EOF

b. Create ClusterRoleBinding 創(chuàng)建ClusterRoleBinding

cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1
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
EOF

c. Bearer Token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

將生成的token填入撼港,即可進(jìn)入dashboard的主頁(yè)面


2018-12-20 17-24-03屏幕截圖.png

大功告成!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末骤竹,一起剝皮案震驚了整個(gè)濱河市帝牡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒙揣,老刑警劉巖靶溜,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異懒震,居然都是意外死亡罩息,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挎狸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扣汪,“玉大人,你說(shuō)我怎么就攤上這事锨匆≌副穑” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵恐锣,是天一觀的道長(zhǎng)茅主。 經(jīng)常有香客問(wèn)我,道長(zhǎng)土榴,這世上最難降的妖魔是什么诀姚? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮玷禽,結(jié)果婚禮上赫段,老公的妹妹穿的比我還像新娘呀打。我一直安慰自己,他們只是感情好糯笙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布贬丛。 她就那樣靜靜地躺著,像睡著了一般给涕。 火紅的嫁衣襯著肌膚如雪豺憔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天够庙,我揣著相機(jī)與錄音恭应,去河邊找鬼。 笑死耘眨,一個(gè)胖子當(dāng)著我的面吹牛昼榛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毅桃,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼褒纲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼准夷!你這毒婦竟也來(lái)了钥飞?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衫嵌,失蹤者是張志新(化名)和其女友劉穎读宙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楔绞,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡结闸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酒朵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桦锄。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔫耽,靈堂內(nèi)的尸體忽然破棺而出结耀,到底是詐尸還是另有隱情,我是刑警寧澤匙铡,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布图甜,位于F島的核電站,受9級(jí)特大地震影響鳖眼,放射性物質(zhì)發(fā)生泄漏黑毅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一钦讳、第九天 我趴在偏房一處隱蔽的房頂上張望矿瘦。 院中可真熱鬧枕面,春花似錦、人聲如沸缚去。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)病游。三九已至唇跨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衬衬,已是汗流浹背买猖。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滋尉,地道東北人玉控。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像狮惜,于是被迫代替她去往敵國(guó)和親高诺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容