原文鏈接:Kubernetes Dashboard 終結者:KubeSphere
2018 年 7 月份,青云在 Cloud Insight 云計算峰會上推出了一款全新的容器平臺——KubeSphere,旨在幫助企業快速低成本管理容器,并且 KubeSphere 本身是開源的,它是基于 Kubernetes 構建的分布式、多租戶、企業級開源容器平臺,具有強大且完善的網路與存盤能力,并通過極簡的人機互動提供完善的多集群管理、CI / CD 、微服務治理、應用管理等功能,幫助企業在云、虛擬化及物理機等異構基礎設施上快速構建、部署及運維容器架構,實作應用的敏捷開發與全生命周期管理,
KubeSphere 目前最新的版本為高級版 2.0.2,并且所有版本 100% 開源,它的 Dashboard 是這個樣子的:

KubeSphere 主界面

Istio 微服務治理界面

多維度監控界面
這個顏值,比 Kubernetes Dashboard 不知道高到哪里去了,感興趣的小伙伴可以給一個 Github Star 鼓勵一下開發小哥,訪問官網請戳這里:kubesphere.io
KubeSphere 官網大致提供了兩種安裝方式,一種是安裝 k8s 集群和 KubeSphere,一種是在現有的 k8s 集群上安裝 KubeSphere,我想大多數用戶的需求肯定是在現有的集群上安裝,但官方檔案給出的部署方案有很多奇怪的坑,本文就來為大家一一填平這些坑,
1. 環境準備
當然,還有些同學可能會和我一樣有強迫癥,即使目前沒有現成的 Kubernetes 環境,我也不想讓 KubeSphere 給我來個全家桶,還是想自己搭建 k8s 集群,怎么辦,二進制部署好煩啊,像我這種菜鳥沒有半天搞不定,有沒有簡單快捷的方法,十分鐘就能建好集群?當然有,用 sealos 就好了,只需一條命令即可跨主機安裝所有依賴,不需要 ansible,不需要 ssh 登錄到其他機器,安裝之前需要做一些準備作業:
- 所有節點安裝并啟動 docker
- 下載 kubernetes 離線安裝包
- 下載最新版本 sealos(目前穩定版是 2.0.4)
我的機器規劃是這樣的:
| Hostname | IP | Role |
|---|---|---|
| sealos-node1 | 192.168.0.2 | master |
| sealos-node2 | 192.168.0.3 | node |
| sealos-node3 | 192.168.0.4 | node |
安裝步驟分為以下幾步:
1、在 master 上執行以下命令:
$ sealos init --master 192.168.0.2 \
--node 192.168.0.3 \
--node 192.168.0.4 \
--user root \
--passwd password \
--version v1.14.5 \
--pkg-url /root/kube1.14.5.tar.gz
2、沒有了,
真沒有了,如果想了解原理,請查看 sealos 的官方檔案,
下面就正式進入 KubeSphere 的安裝環節,
2. 安裝 KubeSphere
1、首先將 ks-installer 倉庫克隆到 master 節點上:
$ git clone https://github.com/kubesphere/ks-installer -b advanced-2.0.2
2、在 Kubernetes 集群中創建名為 kubesphere-system 和 kubesphere-monitoring-system 的 namespace,

3、創建 Kubernetes 集群 CA 證書的 Secret,
注:按照當前集群 ca.crt 和 ca.key 證書路徑創建(Kubeadm 創建集群的證書路徑一般為
/etc/kubernetes/pki)
$ kubectl -n kubesphere-system create secret generic kubesphere-ca \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt \
--from-file=ca.key=/etc/kubernetes/pki/ca.key
4、創建 etcd 的證書 Secret,
注:根據集群實際 etcd 證書位置創建;
- 若 etcd 已經配置過證書,則參考如下創建:
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs \
--from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt \
--from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
--from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
- 若 etcd 沒有配置證書,則創建空 Secret(以下命令適用于 Kubeadm 創建的 Kubernetes 集群環境):
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
我這里是使用 sealos 搭建的集群,可以通過查看 etcd 的資源清單檔案來獲取它的證書:

5、修改部署檔案
由于 KubeSphere 部署程序中涉及的組件非常多,安裝程序中會有很多莫名其妙的坑,你可能會遇到以下幾個問題:
問題 1:如果現有集群中已經安裝有 metrics-server,需要在組態檔中將 metrics_server_enable 設定為 False,我的集群中沒有安裝這個組件,所以不用設為 False,
問題 2:在安裝程序中卡死在 Waitting for ks-sonarqube port to become open 部分,節點上通過 NodePort 已經可以正常訪問 sonarqube ,該問題沒有解決,由于是一個不影響全域安裝的一個操作,所以同樣在組態檔中將 sonarqube_enable 設定為 False,
問題 3:如果當前的集群資源不是很足,可以臨時取消掉 istio 的安裝,后續再開啟 istio 的支持,
問題 4:KubeSphere 的組件默認情況下使用持久化存盤,需要確保集群中有一個默認的 StorageClass 資源物件,如果確實沒有,只是想臨時部署一個 demo,可以在組態檔中將 persistence 里面的 enable 設定為 false,
我最終用于安裝 KubeSphere 的組態檔如下:

只需要修改 ConfigMap 的值即可,其中 kube_apiserver_host 就是現有集群的 APIServer 地址,etcd_endpoint_ips 就是 etcd 的所在節點 IP,默認埠為 2379,如果你是集群模式 etcd,這里可以填寫多個節點 IP,中間用 , 隔開,下面就是不需要安裝的組件設定為 False,
6、自定義 Docker 鏡像,
因為目前 ConfigMap 中不能禁用日志,所以只能強行修改 ansible playbook 了,進入 ks-installer 的根目錄,將 kubesphere.yaml 中的 ks-logging 洗掉:

然后修改 Dockerfile,將 Helm v2 替換為 Helm v3,原因你懂得,我可不想裝 tiller,修改后的 Dockerfile 內容如下:

最后重新構建鏡像,將部署檔案中 Deployment 的鏡像改為自定義的鏡像,就可以直接部署了:
$ kubectl apply -f deploy/kubesphere.yaml
$ kubectl -n kubesphere-system get pod
NAME READY STATUS RESTARTS AGE
ks-account-585846bd44-mt7ss 1/1 Running 0 3h9m
ks-apigateway-7d77cb9495-hxgz8 1/1 Running 0 3h9m
ks-apiserver-697c5f4859-dsbmm 1/1 Running 0 3h7m
ks-console-5b8fbf45c4-7hxrw 1/1 Running 0 3h8m
ks-console-5b8fbf45c4-hj4bj 1/1 Running 0 3h8m
ks-controller-manager-7497f6c944-4k8wd 1/1 Running 0 3h8m
ks-docs-65999c97c9-5f9z7 1/1 Running 0 3h37m
kubesphere-installer-6j49s 0/1 Completed 0 3h10m
openldap-78df9f7b47-wvs5n 1/1 Running 0 3h38m
redis-99f5985b8-2d62q 1/1 Running 0 3h38m
$ kubectl -n kubesphere-system get job
NAME COMPLETIONS DURATION AGE
kubesphere-installer 1/1 2m9s 3h10m
如果上面用于安裝的 Job 是完成狀態的話,證明 KubeSphere 已經安裝成功了,
可以創建一個 IngressRoute 物件來訪問 KubeSphere:

將域名資訊加入本地電腦的 hosts 中,就可以在瀏覽器中訪問 KubeSphere 的 Dashboard 了,

默認的集群管理員賬號為:
- 用戶名:admin
- 密碼:P@88w0rd

詳細的使用方式可以參考官方檔案:https://kubesphere.io/docs/zh-CN/
3. 參考資料
- 在現有 Kubernetes 集群上安裝 KubeSphere
微信公眾號
掃一掃下面的二維碼關注微信公眾號,在公眾號中回復?加群?即可加入我們的云原生交流群,和孫宏亮、張館長、陽明等大佬一起探討云原生技術

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/65574.html
標籤:其他
