當前位置: 妍妍網 > 碼農

KubeSphere 使用實踐

2024-05-30碼農

容器化部署,尤其是利用 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、使用客戶端工具連線: