本文來自于我的公眾號程序猿天璇:基于Kubernetes部署安裝KubeSphere珠增,轉載請保留鏈接 ;)
KubeSphere簡介
Kubernetes官方有提供一套Dashboard超歌,但是我這里選擇功能更強大的KubeSphere,以下內容引用自KubeSphere官網:
KubeSphere
是在Kubernetes
之上構建的以應用為中心的企業(yè)級分布式容器平臺蒂教,提供簡單易用的操作界面以及向導式操作方式巍举,在降低用戶使用容器調度平臺學習成本的同時,極大減輕開發(fā)凝垛、測試懊悯、運維的日常工作的復雜度,旨在解決 Kubernetes 本身存在的存儲梦皮、網絡炭分、安全和易用性等痛點。除此之外剑肯,平臺已經整合并優(yōu)化了多個適用于容器場景的功能模塊捧毛,以完整的解決方案幫助企業(yè)輕松應對敏捷開發(fā)與自動化運維、DevOps让网、微服務治理呀忧、灰度發(fā)布、多租戶管理溃睹、工作負載和集群管理而账、監(jiān)控告警、日志查詢與收集因篇、服務與網絡泞辐、應用商店、鏡像構建與鏡像倉庫管理和存儲管理等多種業(yè)務場景惜犀。后續(xù)版本還將提供和支持多集群管理铛碑、大數據狠裹、人工智能等更為復雜的業(yè)務場景虽界。
KubeSphere 從項目初始階段就采用開源的方式來進行項目的良性發(fā)展,相關的項目源代碼和文檔都在GitHub
可見涛菠。KubeSphere 支持部署和運行在包括公有云莉御、私有云撇吞、VM、BM 和 Kubernetes 等任何基礎設施之上礁叔,并且支持在線安裝與離線安裝牍颈,目前已在阿里云、騰訊云琅关、華為云煮岁、青云、AWS涣易、Kubernetes上進行過部署測試
画机。
KubeSphere 2.1 提供了全棧化容器部署與管理平臺新症,支持在生產環(huán)境安裝與使用步氏,它的核心功能可以概括在以下的功能架構圖中,了解 2.1 的具體功能說明徒爹,可以在產品功能進行查看荚醒。
安裝要求
KubeSphere支持直接在Linux上部署集群,也支持在Kubernetes上部署隆嗅,我這里選擇后者界阁,基本的要求如下:
-
Kubernetes
版本:1.15.x ≤ K8s version ≤ 1.17.x
; -
Helm
版本:2.10.0 ≤ Helm Version < 3.0.0
(不支持 helm 2.16.0#6894
)胖喳,且已安裝了 Tiller铺董,參考如何安裝與配置 Helm
(預計 3.0 支持 Helm v3); - 集群已有默認的存儲類型(StorageClass)禀晓,若還沒有準備存儲請參考安裝 OpenEBS 創(chuàng)建
LocalPV 存儲類型
用作開發(fā)測試環(huán)境精续。 - 集群能夠訪問外網,若無外網請參考在
Kubernetes
離線安裝KubeSphere
粹懒。
安裝Helm
Helm簡介
helm基本思想如圖所示
以下內容引用自 此篇文章
為什么要用Helm重付?
首先在原來項目中都是基于yaml文件來進行部署發(fā)布的,而目前項目大部分微服務化或者模塊化凫乖,會分成很多個組件來部署确垫,每個組件可能對應一個deployment.yaml,一個service.yaml,一個Ingress.yaml還可能存在各種依賴關系,這樣一個項目如果有5個組件帽芽,很可能就有15個不同的yaml文件删掀,這些yaml分散存放,如果某天進行項目恢復的話导街,很難知道部署順序披泪,依賴關系等,而所有這些包括
- 基于yaml配置的集中存放
- 基于項目的打包
- 組件間的依賴
- 都可以通過helm來進行解決搬瑰。
Helm 基本概念
Helm 可以理解為 Kubernetes 的包管理工具款票,可以方便地發(fā)現控硼、共享和使用為Kubernetes構建的應用,它包含幾個基本概念
- Chart:一個 Helm 包艾少,其中包含了運行一個應用所需要的鏡像卡乾、依賴和資源定義等,還可能包含 Kubernetes 集群中的服務定義
- Release: 在 Kubernetes 集群上運行的 Chart 的一個實例缚够。在同一個集群上幔妨,一個 Chart 可以安裝很多次。每次安裝都會創(chuàng)建一個新的 release谍椅。例如一個 MySQL Chart陶冷,如果想在服務器上運行兩個數據庫,就可以把這個 Chart 安裝兩次毯辅。每次安裝都會生成自己的 Release埂伦,會有自己的 Release 名稱。
- Repository:用于發(fā)布和存儲 Chart 的倉庫思恐。
Helm 組件及架構
Helm 采用客戶端/服務器架構沾谜,有如下組件組成:
- Helm CLI 是 Helm 客戶端,可以在本地執(zhí)行
- Tiller 是服務器端組件胀莹,在 Kubernetes 群集上運行基跑,并管理 Kubernetes 應用程序的生命周期
- Repository 是 Chart 倉庫,Helm客戶端通過HTTP協議來訪問倉庫中Chart的索引文件和壓縮包描焰。
Helm安裝
安裝過程如下
# 創(chuàng)建部署目錄并下載Helm
mkdir tiller
cd tiller
# 先使用官方的方式安裝媳否,如果安裝不了,可以看到下載文件的地址荆秦,然后手動下載解壓
curl -L https://git.io/get_helm.sh | bash
# 獲取到下載地址后篱竭,想辦法下載
wget https://get.helm.sh/helm-v2.16.3-linux-amd64.tar.gz
tar zxf helm-v2.16.3-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# 驗證
helm version
部署tiller,對于tiller的官方的解釋如下
Tiller is the server component for helm. Tiller will be present in the kubernetes cluster and the helm client talks to it for deploying applications using helm charts.
先創(chuàng)建 SA
# yaml文件如下
$ cat /root/tiller/helm-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
創(chuàng)建ac
kubectl apply -f helm-rbac.yaml
初始化步绸,這個過程可能不會成功掺逼,具體接著往下看
helm init --service-account=tiller --history-max 300
檢查初始化的情況,不出意外的話瓤介,墻內用戶看pod詳情可以看到獲取不到鏡像的錯誤吕喘。
kubectl get deployment tiller-deploy -n kube-system
如果一直獲取不到鏡像,可以通過更換到Azure中國鏡像源來解決刑桑,操作步驟如下:
# 編輯 deploy
kubectl edit deploy tiller-deploy -n kube-system
# 查找到image地址氯质,替換為如下地址,保存退出
gcr.azk8s.cn/kubernetes-helm/tiller:v2.16.3
接下來稍等片刻祠斧,再次查看deployment和pod詳情闻察,就正常了
kubectl get deployment tiller-deploy -n kube-system
安裝StorageClass
Kubernetes支持多種StorageClass,我這選擇NFS作為集群的StorageClass。
參考地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client
下載所需文件
下載所需文件蜓陌,并進行內容調整
mkdir nfsvolume && cd nfsvolume
for file in class.yaml deployment.yaml rbac.yaml ; do wget https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/$file ; done
修改deployment.yaml中的兩處NFS服務器IP和目錄
...
env:
- name: PROVISIONER_NAME
value: fuseim.pri/ifs
- name: NFS_SERVER
value: 192.168.115.50
- name: NFS_PATH
value: /data/k8s
volumes:
- name: nfs-client-root
nfs:
server: 192.168.115.50
path: /data/k8s
部署創(chuàng)建
具體的說明可以去官網查看觅彰。
kubectl create -f rbac.yaml
kubectl create -f class.yaml
kubectl create -f deployment.yaml
如果日志中看到“上有壞超級塊”吩蔑,請在集群內所有機器上安裝nfs-utils并啟動钮热。
yum -y install nfs-utils
systemctl start nfs-utils
systemctl enable nfs-utils
rpcinfo -p
查看storageclass
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
managed-nfs-storage fuseim.pri/ifs Delete Immediate false 10m
標記一個默認的StorageClass
操作命令格式如下
kubectl patch storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
請注意,最多只能有一個 StorageClass 能夠被標記為默認烛芬。
驗證標記是否成功
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
managed-nfs-storage (default) fuseim.pri/ifs Delete Immediate false 12m
部署kubesphere
過程很簡單隧期,如果你的機器資源足夠,建議你進行完整安裝赘娄,操作步驟如下仆潮。如果你的資源不是很充足,則可以進行最小化安裝遣臼,參考地址性置。我當然是選擇完整安裝了,香揍堰!
# 下載yaml文件
mkdir kubesphere && cd kubesphere
wget https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-complete-setup.yaml
# 部署 kubesphere
kubectl apply -f kubesphere-complete-setup.yaml
這個過程根據你實際網速鹏浅,實際使用時間長度有所不同。你可以通過如下命令查看實時的日志輸出屏歹。當你在日志充看到 http://192.168.115.49:30880 字樣的輸出時隐砸,證明你的集群安裝成功。
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
當你看到如下日志輸出蝙眶,證明你的 KubeSphere 部署成功
**************************************************
task monitoring status is successful
task notification status is successful
task devops status is successful
task alerting status is successful
task logging status is successful
task openpitrix status is successful
task servicemesh status is successful
total: 7 completed:7
**************************************************
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://192.168.115.49:30880
Account: admin
Password: P@88w0rd
NOTES:
1\. After logging into the console, please check the
monitoring status of service components in
the "Cluster Status". If the service is not
ready, please wait patiently. You can start
to use when all components are ready.
2\. Please modify the default password after login.
#####################################################
確認 Pod 都正常運行后季希,可使用IP:30880訪問 KubeSphere UI 界面,默認的集群管理員賬號為admin/P@88w0rd幽纷,Enjoy it式塌,??!