容器化部署,尤其是利用 Docker 技術,已成為現代軟體部署的標配。我們可以透過簡單的命令如
run
直接啟動容器,或者使用編排工具如
docker-compose
和
Kubernetes
(簡稱
k8s
)等來簡化操作。
Kubernetes 是一個開源的容器編排平台,最初由 Google 設計開發,目前由 Cloud Native Computing Foundation (CNCF)維護。它旨在簡化容器化套用的部署、擴充套件、管理和自動化,幫助使用者更高效地構建、交付和執行應用程式。雖然 Kubernetes 功能強大,但其復雜性對一些使用者來說是個挑戰。
接下來,讓我們引入本文的主角—— KubeSphere 。
KubeSphere 介紹
KubeSphere 可以理解為 Kubernetes 的擴充套件和增強,它提供了更多功能和解決方案,以簡化和最佳化 Kubernetes 的使用。KubeSphere 提供了豐富的工具和服務,包括 DevOps、多租戶管理、服務網格、儲存、日誌監控等,幫助使用者輕松構建、部署和管理雲原生套用。
KubeSphere 能在 Kubernetes 基礎上構建的更完整的雲原生全棧解決方案,它進一步簡化和增強了 Kubernetes 的功能,提供更廣泛的支持和服務。
以下是 KubeSphere 官網對其的定義:
KubeSphere 的願景是打造一個以 Kubernetes 為內核的雲原生分散式作業系統。它的架構支持第三方套用與雲原生生態元件的隨插即用(plug-and-play)整合,實作多雲與多集群環境下雲原生套用的統一分發和運維管理。
更多關於 KubeSphere 的資訊,請存取其官方網站:KubeSphere 官網。
安裝準備
對於剛接觸 KubeSphere 並想快速上手該容器平台的使用者,All-in-One 安裝模式是最佳的選擇,它能夠幫助您零配置快速部署 KubeSphere 和 Kubernetes 。
環境準備
CentOS:7.4.1708/7.9,8 GB 記憶體、4 核 CPU
Docker:23.0.5
Kubernetes:1.22.12
KubeSphere:3.4.0
節點要求
1、節點必須能夠透過 SSH 連線。2、節點上可以使用 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 進行配置,執行下面命令:
tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
然後執行:systemctl restart docker ,重新開機 docker 讓配置生效。
安裝依賴項
Kubekey 是用 Go 語言開發的一款全新的安裝工具,代替了以前基於 ansible 的安裝程式。KubeKey 為使用者提供了靈活的安裝選擇,可以分別安裝 KubeSphere 和 Kubernetes 或二者同時安裝,既方便又高效。
KubeKey 可以將 Kubernetes 和 KubeSphere 一同安裝。針對不同的 Kubernetes 版本,需要安裝的依賴項可能有所不同。
執行下面命令安裝相關依賴:
yum -y install socat conntrack ebtables ipset
網路和 DNS 要求
1、請確保 /etc/resolv.conf 中的 DNS 地址可用,否則,可能會導致集群中的 DNS 出現問題。使用命令:cat /etc/resolv.conf 檢視:
也可以使用命令 nslookup www.baidu.com 進行測試,出現下圖說明正常:
2、關閉防火墻。
先用命令 firewall-cmd --state 檢視防火墻的狀態,如果是 running ,就使用下面命令進行關閉:
systemctl stop firewalld
systemctl disable firewalld
3、檢查 SELinux 是否關閉,輸入命令 sestatus 進行檢視:
上圖中是開啟狀態,編輯配置檔:vi /etc/selinux/config :
修改完成後,重新開機伺服器生效。
下載 kubekey
k8s 和 kubesphere 的安裝是使用 kubekey 這個工具,所以先安裝 kubekey 。不管你是否能存取 Github 和 Google ,先執行下面命令切換區域,會省去很多麻煩:
export KKZONE=cn
從 GitHub Release Page 下載 KubeKey 或直接使用以下命令。
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
成功後如下圖,並在當前目錄中有一個綠色的 kk 目錄:
如果 kk 目錄的許可權不夠,需要使用下面命令進行授權:
chmod +x kk
安裝
1、在 root 目錄中輸入 ./kk ,可以看到一些常用的命令和不同的安裝方式說明:
2、下面命令是同時安裝 k8s 和 kubesphere,安裝前會先進行環境的檢查:
./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.4.0
安裝中:
最後的安裝 kubesphere 要等待很久:
關鍵是等了很長的時間,也沒有得到安裝成功的提示,查詢後得知可能是 CentOS 系統版本中的依賴跟 KubeKey 有沖突導致,我使用的是:CentOS Linux release 7.4.1708 (Core) ,**建議使用 CentOS 7.9 **。
3、建立新的虛擬機器,安裝 CentOS 7.9 系統,我是在 Mac 上使用 Parallels 進行虛擬機器的安裝,安裝過程中出現下面問題:
紅屏
Not asking for VNC because we don't have a network 提示的錯誤資訊
可以透過下面設定解決:
4、CentOS 7.9 安裝好後,按照上面的步驟重新安裝了一遍,這一次安裝成功,kubesphere 的存取地址和使用者名稱密碼都會在安裝成功的提示中輸出:
5、登入後如下圖:
6、特別註意,虛擬機器的配置至少 4 核、8gb 記憶體,我一開始只給了 2 核(預設),執行後,監控中的有些節點是不能正常啟動的,當調整為 4 核後,就都正常了:
KubeSphere 使用
常用命令
# 檢視哪些 pod 啟動了,使用 -A 參數列示獲取所有名稱空間下的 Pod
kubectl get pod -A
# 詳細描述指定名稱空間中特定 Pod 的資訊
kubectl describe pod pod名稱 -n 名稱空間
# 獲取指定名稱空間(這裏是 kube-system 名稱空間)中的所有 Pod 列表
kubectl get pods -n kube-system
# 獲取 Kubernetes 集群中所有節點(Node)的列表
kubectl get nodes
建立工作負載
1、在工作負載中添加有狀態副本集,填寫基本資訊:
2、進行容器設定,首先選擇容器,可以直接輸入 mysql 進行搜尋,然後選擇需要安裝的資料庫版本:
3、設定環境變量,時區、root 密碼等:
4、配置儲存掛載:
5、掛載配置檔:
6、使用前需要建立服務,當我們建立一個有狀態的副本集後,預設建立了一個服務:
預設是集群內部存取,在容器的控制台使用 DNS 名稱,可以進行登入:
7、如果需要外部存取,需要建立一個服務,選擇指定工作負載:
8、按照下圖所示找到有狀態副本集進行指定:
9、配置服務名稱和埠:
10、設定存取模式:
11、外部存取,註意服務建立後,會生成一個外部存取的埠
12、使用客戶端工具連線: