KubeSphere介紹
它是一款全棧的 Kubernetes 容器云 PaaS 解決方案(來源于官網(wǎng)),而我覺得它是一款強大的Kubernetes圖形界面,它繼承了如下組件 (下面這段內(nèi)容來自官網(wǎng)):
- Kubernetes DevOps 系統(tǒng)
- 基于 Jenkins 為引擎打造的 CI/CD,內(nèi)置 Source-to-Image 和 Binary-to-Image 自動化打包部署工具
- 基于 Istio 的微服務(wù)治理
- 提供細粒度的流量管理、流量監(jiān)控、灰度發(fā)布、分布式追蹤,支持可視化的流量拓撲
- 豐富的云原生可觀測性
- 提供多維度與多租戶的監(jiān)控、日志、事件、審計搜索,支持多種告警策略與通知渠道,支持日志轉(zhuǎn)發(fā)
- 云原生應(yīng)用商店
- 提供基于 Helm 的應(yīng)用商店與應(yīng)用倉庫,內(nèi)置多個應(yīng)用模板,支持應(yīng)用生命周期管理
- Kubernetes 多集群管理
- 跨多云與多集群統(tǒng)一分發(fā)應(yīng)用,提供集群高可用與災(zāi)備的最佳實踐,支持跨級群的可觀測性
- Kubernetes 邊緣節(jié)點管理
- 基于 KubeEdge 實現(xiàn)應(yīng)用與工作負載在云端與邊緣節(jié)點的統(tǒng)一分發(fā)與管理,解決在海量邊、端設(shè)備上完成應(yīng)用交付、運維、管控的需求
當(dāng)然他的功能遠不止這些,歡迎各位來到KubeSphere的官網(wǎng)了解更多內(nèi)容:https://www.kubesphere.io/zh/
環(huán)境準(zhǔn)備
KubeSphere
(摘自官網(wǎng))
- 您的 Kubernetes 版本必須為:v1.20.x、v1.21.x、* v1.22.x、* v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。帶星號的版本可能出現(xiàn)邊緣節(jié)點部分功能不可用的情況。因此,如需使用邊緣節(jié)點,推薦安裝 v1.21.x。
- 確保您的機器滿足最低硬件要求:CPU > 1 核,內(nèi)存 > 2 GB。
- 在安裝之前,需要配置 Kubernetes 集群中的默認存儲類型(這篇文章會介紹安裝)。
我已經(jīng)準(zhǔn)備好了一個Kubernetes集群,如圖:
符合KubeSphere的支持邊緣節(jié)點的最高版本要求,但建議你版本號不要超過 v1.26.x
。
NFS動態(tài)供給
首先你需要準(zhǔn)備一臺NFS服務(wù)器,為了方便,我這次就以我的主服務(wù)器 k8s-master
來擔(dān)任這個NFS服務(wù)器了。
安裝NFS動態(tài)供給
搭建NFS
首先我們需要在NFS服務(wù)器(我的NFS服務(wù)器和master是同一臺)和所有k8s節(jié)點當(dāng)中安裝 nfs-utils
軟件包(master和node都需要安裝),可執(zhí)行下面這行命令:
yum install -y nfs-utils
安裝如圖:
然后確定一個nfs共享的目錄,這次我就使用 /data/nfs/dynamic-provisioner
這個目錄作為nfs的共享目錄了。所以我們來執(zhí)行下面命令創(chuàng)建并共享這個目錄:
# 創(chuàng)建這個目錄
mkdir -p /data/nfs/dynamic-provisioner
# 執(zhí)行這行命令將這個目錄寫到寫到 /etc/exports 文件當(dāng)中去,這樣NFS會對局域網(wǎng)暴露這個目錄
cat >> /etc/exports << EOF
/data/nfs/dynamic-provisioner *(rw,sync,no_root_squash)
EOF
# 啟動NFS服務(wù)
systemctl enable --now nfs-server
執(zhí)行后如圖:
檢查是否暴露成功:
showmount -e {nfs服務(wù)器地址}
可以看到是暴露成功的:
下載動態(tài)供給驅(qū)動
因為Kubernetes自己不自帶NFS動態(tài)供給的驅(qū)動,所以我們需要下載第三方的NFS動態(tài)供給驅(qū)動。Kubernetes官方推薦了兩個第三方的驅(qū)動可供選擇,如圖:
個人覺得這個 NFS subdir
驅(qū)動比較好用,這次就用這個驅(qū)動來搭建動態(tài)供給了。我們可以來到它的官網(wǎng):https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner,并找到最新的release:
目前最新的發(fā)行版是 4.0.18
我們就下載這個版本:
也可直接通過命令下載:
wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/archive/refs/tags/nfs-subdir-external-provisioner-4.0.18.tar.gz
下載成功如圖:
我們直接解壓它:
tar -zxvf nfs-subdir-external-provisioner-4.0.18.tar.gz
解壓之后會獲得一個特別長的文件夾:
修改驅(qū)動文件
我們來到這個文件夾下的deploy目錄:
cd nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18/deploy/
可以看到這里面有一些yaml,我們需要修改一部分:
首先我們需要修改的就是 deployment.yaml
,我們直接用vim修改:
vim deployment.yaml
首先就是這個鏡像是在谷歌的k8s官方鏡像倉庫拉取的,國內(nèi)拉取不到,所以我們要修改一下:
我已經(jīng)通過一些方法將它拉取下來并且上傳到了國內(nèi)的阿里云鏡像倉庫,我們可以直接用下面這個鏡像來替換:
# 這個鏡像是在谷歌上的,國內(nèi)拉取不到
# image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
# 使用這個我先在谷歌上拉取下來再上傳到阿里云上的鏡像
image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/nfs-subdir-external-provisioner:v4.0.2
修改后如圖:
然后我們還需要修改一下下面的nfs服務(wù)器地址和nfs服務(wù)器內(nèi)共享的目錄:
我的nfs服務(wù)器地址為 172.18.0.2
,且按照上面的安裝步驟,我nfs服務(wù)器暴露的共享目錄為 /data/nfs/dynamic-provisioner
,所以我修改文件為(你的有可能和我不一樣,根據(jù)自己設(shè)置的共享目錄和nfs服務(wù)器地址修改此文件):
執(zhí)行下面這一段腳本我們可以看到還是有很多資源是存放在默認命名空間下:
yamls=$(grep -rl 'namespace: default' ./)
for yaml in ${yamls}; do
echo ${yaml}
cat ${yaml} | grep 'namespace: default'
done
執(zhí)行結(jié)果:
我們可以新創(chuàng)建一個命名空間專門裝這個驅(qū)動,也方便以后管理,所以我決定創(chuàng)建一個名為 nfs-provisioner
命名空間,為了方便就不用yaml文件了,直接通過命令創(chuàng)建:
kubectl create namespace nfs-provisioner
執(zhí)行后可以看到這個命名空間創(chuàng)建成功:
涉及命名空間這個配置的文件還挺多的,所以我們干脆通過一行腳本更改所有:
sed -i 's/namespace: default/namespace: nfs-provisioner/g' `grep -rl 'namespace: default' ./`
這行批量替換腳本直接將所有文件的命名空間都改過來了:
安裝動態(tài)供給
之前我們已經(jīng)修改好了所有的yaml資源清單文件,接下來我們直接執(zhí)行安裝。安裝也是非常簡單,直接通過下面一行命令就可以安裝完成:
kubectl apply -k .
執(zhí)行結(jié)果如圖:
可以執(zhí)行下面這個行命令查看是否部署完成:
kubectl get all -o wide -n nfs-provisioner
看到READY為 1/1
并且STATUS狀態(tài)為 Running
那么動態(tài)供給就已經(jīng)部署完畢:
可以執(zhí)行下面命令查詢安裝的動態(tài)供應(yīng)存儲類的名字:
kubectl get storageclass
可以看到動態(tài)供應(yīng)類的名字為 nfs-client
:
nfs動態(tài)供應(yīng)就已經(jīng)安裝完畢了
如果你只打算安裝動態(tài)供給的存儲類,那么到這里就結(jié)束了哦,接下來是KubeSphere相關(guān)的內(nèi)容
安裝KubeSphere
下載KubeSphere的yaml資源清單文件
此次安裝的是最新的 v3.4.0
的 KubeSphere,可以通過以下命令下載資源清單文件(共兩個):
wget \
https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml \
https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml
可以看到一共下載了兩個文件:
其中這兩個文件的作用:
- kubesphere-installer.yaml: KubeSphere的安裝器
- cluster-configuration.yaml: KubeSphere的集群配置文件
我們需要修改一下 cluster-configuration.yaml
文件,還記得我們之前的那個存儲類嗎?我們記住這個名字:
然后我們開始修改這個文件:
vim cluster-configuration.yaml
可以看到后面注釋的說明,所以我們將 nfs-client
這個存儲類的名字寫在后面:
安裝KubeSphere
然后我們先創(chuàng)建 kubesphere-installer.yaml
里面的資源:
kubectl apply -f kubesphere-installer.yaml
可以看到創(chuàng)建了一些資源:
然后我們檢查這個資源是否創(chuàng)建成功:
kubectl get pod -o wide -n kubesphere-system
同樣當(dāng)READY為 1/1
并且STATUS狀態(tài)為 Running
的時候這個文件就執(zhí)行完畢了:
接下來我們來執(zhí)行 cluster-configuration.yaml
文件:
kubectl apply -f cluster-configuration.yaml
它雖然只有一個資源,但是里面還是要做很多事的:
執(zhí)行下面命令檢查KubeSphere的執(zhí)行日志:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f
一段時間之后看到這個就是安裝成功了:
因為我使用的是云服務(wù)器,所以我使用任何一個云服務(wù)器的公網(wǎng)IP地址+端口就能訪問KubeSphere了,默認的用戶名/密碼是 admin/P@88w0rd
:
初次登陸需要修改admin用戶的密碼:
隨后即可以登錄到KubeSphere的首頁了:
同時我們來到NFS服務(wù)器共享的目錄,可以看到KubeSphere的持久化數(shù)據(jù)存儲在這:
使用KubeSphere部署應(yīng)用
創(chuàng)建項目
因為KubeSphere的管理是基于項目的,所以我們先要創(chuàng)建一個項目,先點擊企業(yè)空間:
選擇這個默認企業(yè)(一般是新建一個企業(yè),這里就簡化了):
然后點擊項目->創(chuàng)建:
創(chuàng)建一個測試項目:
創(chuàng)建一個項目其實就是創(chuàng)建了一個命名空間:
部署MySQL
現(xiàn)在我們開始部署MySQL了,點擊這個剛創(chuàng)建的項目:
然后依次點擊 工作負載->有狀態(tài)副本集->創(chuàng)建
:
填寫部署一個測試的數(shù)據(jù)庫然后點擊下一步:
點擊添加容器:
搜索指定的鏡像并填寫要創(chuàng)建的容器名字:
網(wǎng)下面拉可以設(shè)置CPU和內(nèi)存限制還有需要使用的端口:
然后我們往下拉勾選環(huán)境變量,然后點擊創(chuàng)建保密字典:
我們來設(shè)置mysql的密碼,這個名字可以隨便寫,但是自己要記住:
類型選擇默認后點擊添加數(shù)據(jù):
在這里設(shè)置mysql的root用戶密碼:
然后點擊創(chuàng)建:
最后創(chuàng)建的Secret會自動填充,但是注意MySQL設(shè)置root用戶密碼的環(huán)境變量名不能自定義,是由Docker規(guī)定死的 MYSQL_ROOT_PASSWORD
:
點擊勾選同步主機時區(qū):
點擊下面的對勾?:
最后點擊下一步:
到了下一步點擊添加持久卷聲明模版:
然后按照提示輸入內(nèi)容:
最后點擊下一步:
點擊創(chuàng)建:
點擊部署的這個mysql進來:
可以看到容器狀態(tài)并且可以快速伸縮容器:
當(dāng)這個變綠了就代表創(chuàng)建好了:
然后點擊容器右邊的向下的小箭頭,最后點擊終端:
最后在終端中即可運行mysql相關(guān)的命令了:文章來源:http://www.zghlxwxcb.cn/news/detail-703844.html
這篇文章就先寫到這里,更多的KubeSphere操作,可以登錄KubeSphere的官網(wǎng)了解,關(guān)注我,我以后一會寫更多相關(guān)知識的哦!
KubeSphere官網(wǎng):https://www.kubesphere.io/zh/文章來源地址http://www.zghlxwxcb.cn/news/detail-703844.html
到了這里,關(guān)于Kubernetes(k8s)安裝NFS動態(tài)供給存儲類并安裝KubeSphere的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!