安裝KubeSphere
- 2020 年 5 月 4 日
- 筆記
- Kubernetes
1. KubeSphere 是什麼

1.1. 官方解釋
KubeSphere是一個分散式作業系統,提供以Kubernetes為核心的雲原生堆棧,旨在成為第三方應用程式的即插即用架構,以促進其生態系統的發展。 KubeSphere還是一個多租戶企業級容器平台,具有全棧自動IT操作和簡化的DevOps工作流程。它提供了開發人員友好的嚮導Web UI,可幫助企業構建更健壯且功能豐富的平台,其中包括企業Kubernetes戰略所需的最常用功能,例如Kubernetes資源管理,DevOps(CI / CD),應用程式生命周期管理、監控、日誌記錄、服務網格、多租戶、報警和通知,存儲和網路、自動定量、訪問控制、GPU的支援等,以及多集群管理、網路策略、註冊表管理,更多即將發布的安全增強特性。
KubeSphere提供了整合的視圖,同時圍繞Kubernetes集成了廣泛的生態系統工具,並提供一致的用戶體驗以降低複雜性,並開發了上游Kubernetes中尚不可用的新功能,以減輕Kubernetes的痛苦之處,包括存儲,網路 ,安全性和易用性。 KubeSphere不僅允許開發人員和DevOps團隊在統一控制台中使用他們喜歡的工具,而且最重要的是,由於這些功能是可插拔和可選的,因此它們與平台鬆散地結合在一起。
Kubernetes平台,專為DevOps團隊量身訂製
KubeSphere,以應用為中心的容器平台
極簡、易用、靈活、高效
關於KubeSphere,最好最全面最通俗易懂的一篇文章是《一文說清 KubeSphere 容器平台的價值》
//kubesphere.io/zh-CN/blog/kubesphere-values/

1.2. 個人理解
KubeSphere,這是中國唯一一個開源的Kubernetes(k8s)發行版,它的開源不涉及任何商業意圖,它不屬於青雲而屬於社區,它極大地降低了使用Kubernetes的門檻,它的出現將加速中國企業向雲原生邁進的步伐。
「發行版」的說法常用於Linux作業系統。比如,雖有Linux內核,而Ubuntu、CentOS等等叫做Linux發行版,對應的,Kubernetes就相當於內核,KubeSphere就是Kubernetes的發行版,正常人類是很難使用Linux內核和Kubenetes的,為了讓大家用起來,要基於Linux內核和Kubernetes做很多周邊配套,Linux和Kubenetes就好像一台光禿禿的汽車發動機,為了把它當車開,你起碼得有車架子、輪胎、方向盤、剎車、……等等。
所以,開源KubeSphere的青雲就像一個汽車廠,負責KubeSphere牌汽車各個組件的組裝搭配,不過,這個汽車不需要花錢就能獲取到,這就是青雲開源KubeSphere的實質。它的意義在於加快了大家使用k8s發動機的進程,讓大家都能開上KubeSphere牌汽車。
雲原生能幫助企業做數字化轉型,幫助企業用數字化轉型獲取競爭力。而KubeSphere可以讓企業更快地上原生,開上汽車。
以上摘抄自//tech.ifeng.com/c/7u6tUXwXbJU
我覺得,讀完以後,醍醐灌頂,茅塞頓開
我們使用Linux的各種發行版(比如:CentOS、Ubuntu等)與Linux內核交互,極大地降低了使用Linux的門檻,而且像Ubuntu還提供了特別漂亮的桌面版,影像介面式的操作使用起來更方便。
我們當然可以使用CMD命令行窗口同Windows系統交互,所有在圖形介面上完成的操作都可以通過命令行完成,但是這種操作方式的門檻極高,不利於微軟推行Windows桌面作業系統。
同樣的,Kubenetes就相當於內核,而KubeSphere就相當於是Kubernetes的發行版。KubeSphere提供極簡體驗,嚮導式UI,極大的降低了使用Kubenetes的門檻。
記不住Kubenetes命令不要緊,不會寫Dockerfile也沒關係,使用KubeSphere影像介面以後一起都變得簡單了,而且它是以應用為中心的,極大地解放了運維和開發人員的生產力。
KubeSphere就是Java編程界的Spring。想想看,用了Spring以後你不需要關心各種資料庫的連接,各種各樣的組件都幫你集成好了,拿來就用。KubeSphere也是一樣,開箱即用。
2. 安裝
就一條命令,挺簡單的,但是我裝了兩天兩夜。期間,虛擬機裝了好幾遍,KubeSphere也重裝了很多遍,一遍就是幾個小時……
話不多說,官方文檔(中/英文版)都寫的非常清楚,開始安裝
由於資源限制,我只能在虛擬機里裝,這裡選擇All-in-One模式
首先,一定一定要看清楚系統要求,之前用CentOS沒裝成功,試了很多版本,最後老老實實用Ubuntu18.04
//ubuntu.com/download/alternative-downloads

下載安裝包
curl -L //kubesphere.io/download/stable/v2.1.1 > installer.tar.gz \ && tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/scripts
在安裝前一定一定要記得配置鏡像加速器
例如阿里雲容器鏡像加速器服務 //cr.console.aliyun.com/cn-hangzhou/instances/mirrors
docker_registry_mirrors: - //docker.mirrors.ustc.edu.cn - //registry.docker-cn.com - //mirror.aliyuncs.com
~/kubesphere-all-v2.1.1/conf/common.yaml


執行./install.sh就等著吧(如果要重新安裝建議先執行./uninstall.sh)
安裝了兩天,終於看到期待已久的畫面了:
各種驗證
//kubesphere.io/docs/installation/verify-components/
//kubesphere.io/docs/zh-CN/installation/verify-components/




安裝完以後,一看資源佔用情況,嚇一跳,果然只適合企業用戶



3. 遇到的問題
//kubesphere.io/docs/troubleshooting/installation/
1、container in pod is not available
Error from server (BadRequest): container "installer" in pod "ks-installer-7d9fb945c7-6tnl9" is not available
檢查安裝日誌 ~/kubesphere-all-v2.1.1/logs
有一個非常好用的命令是 journalctl -xefu kubelet
2、如何重啟
3、如何重啟Kubernetes集群
我一直有個疑問,如果物理機或者Kubernetes的宿主機宕機或重啟以後Kubernetes集群會自動重啟嗎?如果掛的是master所在的機器,很顯然是不會的, 但如果是非master的節點的話不知道沒試過。所以,Kubernetes集群的高可用就非常重要了。
//kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
//kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/
ReplicationController確保在任何時候都運行指定數量的pod副本。換句話說,ReplicationController確保一個pod或一組同類的pod總是處於可用狀態。
我忽略了Kubernetes有很強的自愈能力
自愈(自我修復):重新啟動失敗的容器,在節點死亡時替換和重新調度容器,殺死那些不響應用戶定義的健康檢查的容器,並且在它們準備好提供服務之前不會向客戶端通知它們。
在後面安裝KubeSphere可插拔的功能組件時,更改common.yaml配置文件後,不需要做什麼操作,過一會兒會自動更新容器以應用這些改變。
備忘錄
kubectl get pods --all-namespaces kubectl get pod -n <namespace> kubectl logs <pod_name> -n <namespace> kubectl delete pod <pod_name> -n <namespace> # 查詢systemd日誌 journalctl -xefu kubelet kubectl get services kubectl get deployments kubectl cluster-info
4. 文檔
//kubesphere.io/docs/installation/intro/
//kubesphere.io/docs/zh-CN/installation/intro/
//kubesphere.io/zh-CN/blog/kubesphere-values/
//kubesphere.io/docs/zh-CN/introduction/what-is-kubesphere/
//www.kubernetes.org.cn/author/kubesphere


