KubeSphere 使用實踐,幫助用戶輕松構建、部署和管理云原生應用
容器化部署,尤其是利用 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
節點要求
節點必須能夠通過 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 要求
請確保 /etc/resolv.conf 中的 DNS 地址可用,否則,可能會導致集群中的 DNS 出現問題。使用命令:cat /etc/resolv.conf 查看:
也可以使用命令 nslookup www.baidu.com 進行測試,出現下圖說明正常:
關閉防火墻。
先用命令 firewall-cmd --state 查看防火墻的狀態,如果是 running ,就使用下面命令進行關閉:
systemctl stop firewalld
systemctl disable firewalld
檢查 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
安裝
在 root 目錄中輸入 ./kk ,可以看到一些常用的命令和不同的安裝方式說明:
下面命令是同時安裝 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 **。
創建新的虛擬機,安裝 CentOS 7.9 系統,我是在 Mac 上使用 Parallels 進行虛擬機的安裝,安裝過程中出現下面問題:
- 紅屏
- Not asking for VNC because we don't have a network 提示的錯誤信息。
可以通過下面設置解決:
CentOS 7.9 安裝好后,按照上面的步驟重新安裝了一遍,這一次安裝成功,kubesphere 的訪問地址和用戶名密碼都會在安裝成功的提示中輸出:
登錄后如下圖:
特別注意,虛擬機的配置至少 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
創建工作負載
在工作負載中添加有狀態副本集,填寫基本信息:
進行容器設置,首先選擇容器,可以直接輸入 mysql 進行搜索,然后選擇需要安裝的數據庫版本:
設置環境變量,時區、root 密碼等:
配置存儲掛載:
掛載配置文件:
使用前需要創建服務,當我們創建一個有狀態的副本集后,默認創建了一個服務:
默認是集群內部訪問,在容器的控制臺使用 DNS 名稱,可以進行登錄:
如果需要外部訪問,需要創建一個服務,選擇指定工作負載:
按照下圖所示找到有狀態副本集進行指定:
配置服務名稱和端口:
設置訪問模式:
外部訪問,注意服務創建后,會生成一個外部訪問的端口。
使用客戶端工具連接: