KubeSphere 使用實(shí)踐,幫助用戶輕松構(gòu)建、部署和管理云原生應(yīng)用
容器化部署,尤其是利用 Docker 技術(shù),已成為現(xiàn)代軟件部署的標(biāo)配。我們可以通過簡單的命令如 run 直接啟動容器,或者使用編排工具如 docker-compose 和 Kubernetes(簡稱 k8s)等來簡化操作。
Kubernetes 是一個開源的容器編排平臺,最初由 Google 設(shè)計開發(fā),目前由 Cloud Native Computing Foundation(CNCF)維護(hù)。它旨在簡化容器化應(yīng)用的部署、擴(kuò)展、管理和自動化,幫助用戶更高效地構(gòu)建、交付和運(yùn)行應(yīng)用程序。雖然 Kubernetes 功能強(qiáng)大,但其復(fù)雜性對一些用戶來說是個挑戰(zhàn)。
接下來,讓我們引入本文的主角——KubeSphere。
KubeSphere 介紹
KubeSphere 可以理解為 Kubernetes 的擴(kuò)展和增強(qiáng),它提供了更多功能和解決方案,以簡化和優(yōu)化 Kubernetes 的使用。KubeSphere 提供了豐富的工具和服務(wù),包括 DevOps、多租戶管理、服務(wù)網(wǎng)格、存儲、日志監(jiān)控等,幫助用戶輕松構(gòu)建、部署和管理云原生應(yīng)用。
KubeSphere 能在 Kubernetes 基礎(chǔ)上構(gòu)建的更完整的云原生全棧解決方案,它進(jìn)一步簡化和增強(qiáng)了 Kubernetes 的功能,提供更廣泛的支持和服務(wù)。
以下是 KubeSphere 官網(wǎng)對其的定義:
KubeSphere 的愿景是打造一個以 Kubernetes 為內(nèi)核的云原生分布式操作系統(tǒng)。它的架構(gòu)支持第三方應(yīng)用與云原生生態(tài)組件的即插即用(plug-and-play)集成,實(shí)現(xiàn)多云與多集群環(huán)境下云原生應(yīng)用的統(tǒng)一分發(fā)和運(yùn)維管理。
更多關(guān)于 KubeSphere 的信息,請訪問其官方網(wǎng)站:KubeSphere 官網(wǎng)。
安裝準(zhǔn)備
對于剛接觸 KubeSphere 并想快速上手該容器平臺的用戶,All-in-One 安裝模式是最佳的選擇,它能夠幫助您零配置快速部署 KubeSphere 和 Kubernetes 。
環(huán)境準(zhǔn)備
- CentOS:7.4.1708/7.9,8 GB 內(nèi)存、4 核 CPU
- Docker:23.0.5
- Kubernetes:1.22.12
- KubeSphere:3.4.0
節(jié)點(diǎn)要求
節(jié)點(diǎn)必須能夠通過 SSH 連接。2、節(jié)點(diǎn)上可以使用 sudo/cur1/openss1 命令。
安裝 Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-edge
sudo yum -y install docker-ce
systemctl start docker
chkconfig docker on
安裝完成 docker 后,需要對 docker 進(jìn)行配置,執(zhí)行下面命令:
tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
然后執(zhí)行:systemctl restart docker ,重啟 docker 讓配置生效。
安裝依賴項(xiàng)
Kubekey 是用 Go 語言開發(fā)的一款全新的安裝工具,代替了以前基于 ansible 的安裝程序。KubeKey 為用戶提供了靈活的安裝選擇,可以分別安裝 KubeSphere 和 Kubernetes 或二者同時安裝,既方便又高效。
KubeKey 可以將 Kubernetes 和 KubeSphere 一同安裝。針對不同的 Kubernetes 版本,需要安裝的依賴項(xiàng)可能有所不同。
執(zhí)行下面命令安裝相關(guān)依賴:
yum -y install socat conntrack ebtables ipset
網(wǎng)絡(luò)和 DNS 要求
請確保 /etc/resolv.conf 中的 DNS 地址可用,否則,可能會導(dǎo)致集群中的 DNS 出現(xiàn)問題。使用命令:cat /etc/resolv.conf 查看:
也可以使用命令 nslookup www.baidu.com 進(jìn)行測試,出現(xiàn)下圖說明正常:
關(guān)閉防火墻。
先用命令 firewall-cmd --state 查看防火墻的狀態(tài),如果是 running ,就使用下面命令進(jìn)行關(guān)閉:
systemctl stop firewalld
systemctl disable firewalld
檢查 SELinux 是否關(guān)閉,輸入命令 sestatus 進(jìn)行查看:
上圖中是開啟狀態(tài),編輯配置文件:vi /etc/selinux/config :
修改完成后,重啟服務(wù)器生效。
下載 kubekey
k8s 和 kubesphere 的安裝是使用 kubekey 這個工具,所以先安裝 kubekey 。不管你是否能訪問 Github 和 Google ,先執(zhí)行下面命令切換區(qū)域,會省去很多麻煩:
export KKZONE=cn
從 GitHub Release Page 下載 KubeKey 或直接使用以下命令。
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
成功后如下圖,并在當(dāng)前目錄中有一個綠色的 kk 目錄:
如果 kk 目錄的權(quán)限不夠,需要使用下面命令進(jìn)行授權(quán):
chmod +x kk
安裝
在 root 目錄中輸入 ./kk ,可以看到一些常用的命令和不同的安裝方式說明:
下面命令是同時安裝 k8s 和 kubesphere,安裝前會先進(jìn)行環(huán)境的檢查:
./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.4.0
安裝中:
最后的安裝 kubesphere 要等待很久:
關(guān)鍵是等了很長的時間,也沒有得到安裝成功的提示,查詢后得知可能是 CentOS 系統(tǒng)版本中的依賴跟 KubeKey 有沖突導(dǎo)致,我使用的是:CentOS Linux release 7.4.1708 (Core) ,**建議使用 CentOS 7.9 **。
創(chuàng)建新的虛擬機(jī),安裝 CentOS 7.9 系統(tǒng),我是在 Mac 上使用 Parallels 進(jìn)行虛擬機(jī)的安裝,安裝過程中出現(xiàn)下面問題:
- 紅屏
- Not asking for VNC because we don't have a network 提示的錯誤信息。
可以通過下面設(shè)置解決:
CentOS 7.9 安裝好后,按照上面的步驟重新安裝了一遍,這一次安裝成功,kubesphere 的訪問地址和用戶名密碼都會在安裝成功的提示中輸出:
登錄后如下圖:
特別注意,虛擬機(jī)的配置至少 4 核、8gb 內(nèi)存,我一開始只給了 2 核(默認(rèn)),運(yùn)行后,監(jiān)控中的有些節(jié)點(diǎn)是不能正常啟動的,當(dāng)調(diào)整為 4 核后,就都正常了:
KubeSphere 使用
常用命令
# 查看哪些 pod 啟動了,使用 -A 參數(shù)表示獲取所有命名空間下的 Pod
kubectl get pod -A
# 詳細(xì)描述指定命名空間中特定 Pod 的信息
kubectl describe pod pod名稱 -n 命名空間
# 獲取指定命名空間(這里是 kube-system 命名空間)中的所有 Pod 列表
kubectl get pods -n kube-system
# 獲取 Kubernetes 集群中所有節(jié)點(diǎn)(Node)的列表
kubectl get nodes
創(chuàng)建工作負(fù)載
在工作負(fù)載中添加有狀態(tài)副本集,填寫基本信息:
進(jìn)行容器設(shè)置,首先選擇容器,可以直接輸入 mysql 進(jìn)行搜索,然后選擇需要安裝的數(shù)據(jù)庫版本:
設(shè)置環(huán)境變量,時區(qū)、root 密碼等:
配置存儲掛載:
掛載配置文件:
使用前需要創(chuàng)建服務(wù),當(dāng)我們創(chuàng)建一個有狀態(tài)的副本集后,默認(rèn)創(chuàng)建了一個服務(wù):
默認(rèn)是集群內(nèi)部訪問,在容器的控制臺使用 DNS 名稱,可以進(jìn)行登錄:
如果需要外部訪問,需要創(chuàng)建一個服務(wù),選擇指定工作負(fù)載:
按照下圖所示找到有狀態(tài)副本集進(jìn)行指定:
配置服務(wù)名稱和端口:
設(shè)置訪問模式:
外部訪問,注意服務(wù)創(chuàng)建后,會生成一個外部訪問的端口。
使用客戶端工具連接: