> 原文連接:Kubernetes Dashboard 終結者:KubeSpherenode
2018 年 7 月份,青雲在 Cloud Insight 雲計算峯會上推出了一款全新的容器平臺——KubeSphere
,旨在幫助企業快速低成本管理容器。而且 KubeSphere
自己是開源的,它是基於 Kubernetes 構建的分佈式、多租戶、企業級開源容器平臺,具備強大且完善的網絡與存儲能力,並經過極簡的人機交互提供完善的多集羣管理、CI / CD 、微服務治理、應用管理等功能,幫助企業在雲、虛擬化及物理機等異構基礎設施上快速構建、部署及運維容器架構,實現應用的敏捷開發與全生命週期管理。git
KubeSphere 目前最新的版本爲高級版 2.0.2
,而且全部版本 100% 開源。它的 Dashboard 是這個樣子的:github
<center><p id="small">KubeSphere 主界面</p></center>redis
<center><p id="small">Istio 微服務治理界面</p></center>docker
<center><p id="small">多維度監控界面</p></center>api
這個顏值,比 Kubernetes Dashboard 不知道高到哪裏去了,感興趣的小夥伴能夠給一個 Github Star 鼓勵一下開發小哥。訪問官網請戳這裏:kubesphere.io瀏覽器
KubeSphere 官網大體提供了兩種安裝方式,一種是安裝 k8s 集羣和 KubeSphere,一種是在現有的 k8s 集羣上安裝 KubeSphere。我想大多數用戶的需求確定是在現有的集羣上安裝,但官方文檔給出的部署方案有不少奇怪的坑,本文就來爲你們一一填平這些坑。bash
固然,還有些同窗可能會和我同樣有強迫症,即便目前沒有現成的 Kubernetes 環境,我也不想讓 KubeSphere 給我來個全家桶,仍是想本身搭建 k8s 集羣,怎麼辦,二進制部署好煩啊,像我這種菜鳥沒有半天搞不定,有沒有簡單快捷的方法,十分鐘就能建好集羣?固然有,用 sealos 就行了,只需一條命令便可跨主機安裝全部依賴,不須要 ansible
,不須要 ssh 登陸到其餘機器,安裝以前須要作一些準備工做:微信
個人機器規劃是這樣的:網絡
Hostname | IP | Role |
---|---|---|
sealos-node1 | 192.168.0.2 | master |
sealos-node2 | 192.168.0.3 | node |
sealos-node3 | 192.168.0.4 | node |
安裝步驟分爲如下幾步:
一、在 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
二、沒有了。
真沒有了,若是想了解原理,請查看 sealos 的官方文檔。
下面就正式進入 KubeSphere 的安裝環節。
一、首先將 ks-installer
倉庫克隆到 master 節點上:
$ git clone https://github.com/kubesphere/ks-installer -b advanced-2.0.2
二、在 Kubernetes 集羣中建立名爲 kubesphere-system
和 kubesphere-monitoring-system
的 namespace。
三、建立 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
四、建立 etcd 的證書 Secret。
> 注:根據集羣實際 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
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
我這裏是使用 sealos 搭建的集羣,能夠經過查看 etcd 的資源清單文件來獲取它的證書:
五、修改部署文件
因爲 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。
六、自定義 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 了。
默認的集羣管理員帳號爲:
詳細的使用方式能夠參考官方文檔:https://kubesphere.io/docs/zh-CN/
掃一掃下面的二維碼關注微信公衆號,在公衆號中回覆◉加羣◉便可加入咱們的雲原生交流羣,和孫宏亮、張館長、陽明等大佬一塊兒探討雲原生技術