快速部署KubeSphere容器平臺
1.環境描述
- master :10.10.12.171
- worker1:10.10.12.172
- worker2:10.10.12.173
- Kubeoperator:10.10.12.170(安裝ansible并通過Kubeoperator對kubesphere集群部署kubesphere軟件,要求根目錄至少需要200G用于儲存所需的安裝包)
所有服務器均采用centos7.6版本,最小安裝模式,每個服務器均有一個空余磁盤用于部署ceph
這里使用的是/dev/sdb磁盤,用于安裝ceph集群
2. 環境準備(所有節點)
2.1 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
2.2 關閉swap
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
2.3 關閉Selinux
setenforce 0
sed -i '/=enforcing/ s/enforcing/disabled/' /etc/selinux/config
2.4 安裝所需軟件
yum -y install net-tools sshpass unzip lrzsz vim
2.5 設置服務器hostname
hostnamectl set-hostname ***(對應每個服務器)
3. 安裝相關組件
kubeoperator描述:在kubeoperator上面安裝ansible工具并通過kubeoperator工具對kubesphere集群的三臺初始服務器安裝Kubernetes和Kubesphere容器平臺。
3.1 登錄kubeoperator服務器
ssh 10.10.12.170
3.2 將所需軟件拷貝到kubeoperator下的/tmp/tmp目錄中
3.3 給shell腳本文件添加執行權限
chmod +x prepare.sh
3.4 根據實際環境情況對應修改prepare.sh內容
vim /tmp/tmp/prepare.sh
- installerIp:kubeoperatorIP地址
- cephPublicNetwork:ceph網段
- cephPublicNetworkCard:ceph集群物理機網卡名稱
- cephDisk:ceph盤符名稱
備注:ceph集群統一使用root登錄,密碼為Changeme_123
3.5 執行prepare.sh
sh /tmp/tmp/prepare.sh
前期準備完成(整個過程大概1分鐘)
3.6 執行deploy-docker.sh,安裝docker
cd /tmp/tmp/devops/
sh deploy-docker.sh
3.7 執行deploy-harbor.sh,安裝Harbor鏡像倉庫
sh deploy-harbor.sh
整個過程大概持續10分鐘左右
當ansible腳本完成后,打開網頁瀏覽器輸入:https://10.10.12.170
- 賬號:admin
- 密碼:Harbor12345
Harbor里面包含了所需要的相關kubesphere的安裝包
3.8 執行deploy-kubeoperator.sh,安裝kubeoperator
sh deploy-kubeoperator.sh
當ansible腳本完成后,打開網頁瀏覽器輸入:http://172.16.12.249:8888
- 賬號:admin
- 密碼:kubeoperator@admin123
3.9 執行deploy-ceph.sh,安裝ceph
cd /tmp/tmp/ceph/
sh deploy-ceph.sh
(大概持續18分鐘左右)
如果 TASK [ceph-dashboard : create dashboard admin user] 執行報錯,請忽略此異常
ceph dashboard 賬戶密碼可以使用以下命令進行創建,創建后可以使用admin/admin登錄dashboard查看和管理ceph
echo "admin" > /tmp/file
ceph dashboard ac-user-create admin -i /tmp/file administrator
另外需要注意的是安裝結束時Install Ceph Dashboard : In Progress (0:02:20)表明當前dashboard還在初始化,需要等待9443端口啟動后(使用以下命令檢查)再進行下一步操作
netstat -ntpl | grep 9443
4. 配置kubeoperator
4.1 設置系統IP
填寫kubeoperatorIP地址
4.2 創建主機登錄憑據
創建主機登錄所需的登錄憑據
4.3 創建主機
- 名稱:填寫主機名稱
- ip:填寫主機物理IP
- 端口: 填寫SSH端口
- 憑據: 選擇root的密碼憑據
填寫三臺主機以后等待初始化,初始化完成后顯示正常狀態
4.3 創建kubesphere集群
4.3.1 創建資源
點擊項目-單擊kubeoperator管理員
添加資源主機
4.3.2 創建集群
集群-->添加
4.3.3 集群信息
4.3.4 高級選項
圖片參數僅供參考,可以根據實際情況部署
4.3.5 節點信息
4.3.6 確認信息
等待集群安裝,大概持續50分鐘左右
如果有報錯可以點擊重試再試一次
4.3.7 查看日志
可以在這里面查到安裝進度日志
4.4 登錄kubesphere
http://10.10.12.171:30880
- 賬號:admin
- 密碼:P@88w0rd
5.KubeSphere配置
5.1 創建企業空間、項目、帳戶和角色
本快速入門演示如何創建企業空間、角色和用戶帳戶。
5.1.1 創建賬戶
安裝 KubeSphere 之后,您需要向平臺添加具有不同角色的用戶,以便他們可以針對自己授權的資源在不同的層級進行工作。一開始,系統默認只有一個帳戶 admin,具有 platform-admin 角色。在本步驟中,您將創建一個帳戶 user-manager,然后使用 user-manager 創建新帳戶。
1.使用默認帳戶和密碼 (admin/P@88w0rd) 以 admin 身份登錄 Web 控制臺。
- 出于安全考慮,強烈建議您在首次登錄控制臺時更改密碼。若要更改密碼,在右上角的下拉菜單中選擇個人設置,在密碼設置中設置新密碼,您也可以在個人設置中修改控制臺語言。
- image.png
2.登錄控制臺后,點擊左上角的平臺管理,然后選擇訪問控制。
在帳戶角色中,有如下所示四個可用的內置角色。接下來要創建的第一個帳戶將被分配 users-manager 角色。
內置角色 | 描述 |
---|---|
workspaces-manager | 企業空間管理員,管理平臺所有企業空間。 |
users-manager | 用戶管理員,管理平臺所有用戶。 |
platform-regular | 平臺普通用戶,在被邀請加入企業空間或集群之前沒有任何資源操作權限 |
platform-admin | 平臺管理員,可以管理平臺內的所有資源。 |
內置角色由 KubeSphere 自動創建,無法編輯或刪除。
3.在帳戶管理中,點擊創建。在彈出窗口中,提供所有必要信息(帶有*標記),然后在角色字段選擇 users-manager。請參考下圖示例。
完成后,點擊確定。新創建的帳戶將顯示在帳戶管理中的帳戶列表中。
4.切換帳戶使用 user-manager 重新登錄,創建如下四個新帳戶,這些帳戶將在其他的教程中使用。
帳戶登出請點擊右上角的用戶名,然后選擇登出。
帳戶 | 角色 | 描述 |
---|---|---|
ws-manager | workspaces-manager | 創建和管理所有企業空間。 |
ws-admin | platform-regular | 管理指定企業空間中的所有資源(在此示例中,此帳戶用于邀請新成員加入該企業空間)。 |
platform-admin | platform-regular | 創建和管理項目以及 DevOps 工程,并邀請新成員加入項目。 |
project-regular | platform-regular | project-regular 將由 project-admin 邀請至項目或 DevOps 工程。該帳戶將用于在指定項目中創建工作負載、流水線和其他資源。 |
5.查看創建的四個帳戶。
5.1.2 創建企業空間
您需要使用上一個步驟中創建的帳戶 ws-manager 創建一個企業空間。作為管理項目、DevOps 工程和組織成員的基本邏輯單元,企業空間是 KubeSphere 多租戶系統的基礎。
-
1.以 ws-manager 身份登錄 KubeSphere,它具有管理平臺上所有企業空間的權限。點擊左上角的平臺管理,選擇訪問控制。在企業空間中,可以看到僅列出了一個默認企業空間 system-workspace,即系統企業空間,其中運行著與系統相關的組件和服務,您無法刪除該企業空間。
image.png -
2.點擊右側的創建,將新企業空間命名為 demo-workspace,并將用戶 ws-admin 設置為企業空間管理員,如下圖所示:
image.png完成后,點擊創建。
如果您已啟用多集群功能,您需要為企業空間分配一個或多個可用集群,以便項目可以在集群中創建。
- 3.登出控制臺,然后以 ws-admin 身份重新登錄。在企業空間設置中,選擇企業成員,然后點擊 邀請成員。
- 4.邀請 project-admin 和 project-regular 進入企業空間,分別授予他們 workspace-self-provisioner 和 workspace-viewer 角色。
實際角色名稱的格式:<workspace name>-<role name>。例如,在名為 demo-workspace 的企業空間中,角色 viewer 的實際角色名稱為 demo-workspace-viewer。
- 5.將 project-admin 和 project-regular 都添加到企業空間后,點擊確定。在企業成員中,您可以看到列出的三名成員。
帳戶 | 角色 | 描述 |
---|---|---|
ws-admin | workspace-admin | 管理指定企業空間中的所有資源(在此示例中,此帳戶用于邀請新成員加入該企業空間)。 |
platform-admin | workspace-self-provisioner | 創建和管理項目以及 DevOps 工程,并邀請新成員加入項目。 |
project-regular | workspace-viewer | project-regular 將由 project-admin 邀請至項目或 DevOps 工程。該帳戶將用于在指定項目中創建工作負載、流水線和其他資源。 |
5.1.3 創建項目
在此步驟中,您需要使用在上一步驟中創建的帳戶 project-admin 來創建項目。KubeSphere 中的項目與 Kubernetes 中的命名空間相同,為資源提供了虛擬隔離。有關更多信息,請參見命名空間。
- 1.以 project-admin 身份登錄 KubeSphere,在項目管理中,點擊創建。
- 2.輸入項目名稱(例如 demo-project),然后點擊確定完成,您還可以為項目添加別名和描述。
- 3.在項目管理中,點擊剛創建的項目查看其詳細信息。
- 4.在項目的概覽頁面,默認情況下未設置項目配額。您可以點擊設置并根據需要指定資源請求和限制(例如:CPU 和內存的限制分別設為 1 Core 和 1000 Gi)。
- 5.邀請 project-regular 至該項目,并授予該用戶 operator 角色。請參考下圖以了解具體步驟。
具有 operator 角色的用戶是項目維護者,可以管理項目中除用戶和角色以外的資源。
- 6.在創建路由(即 Kubernetes 中的 Ingress)之前,需要啟用該項目的網關。網關是在項目中運行的 NGINX Ingress 控制器。若要設置網關,請轉到項目設置中的高級設置,然后點擊設置網關。此步驟中仍使用帳戶 project-admin。
- 7.選擇訪問方式 NodePort,然后點擊保存。
- 8.在外網訪問下,可以在頁面上看到網關地址以及 http/https 的端口。
5.1.4 創建角色
完成上述步驟后,您已了解可以為不同級別的用戶授予不同角色。先前步驟中使用的角色都是 KubeSphere 提供的內置角色。在此步驟中,您將學習如何創建自定義角色以滿足工作需求。
1.再次以 admin 身份登錄控制臺,然后轉到訪問控制。
2.帳戶角色中列出了四個系統角色,無法刪除或編輯。點擊創建并設置角色標識符。在本示例將創建一個名為 roles-manager 的角色。
點擊編輯權限繼續。
- 3.在訪問控制中,選擇該角色所擁有的權限。例如,本示例選擇帳戶查看、角色管理和角色查看。點擊確定完成創建。
- 4.新創建的角色將列于帳戶角色中,可以點擊右側的三個點對其進行編輯。
- 5.在帳戶管理中,添加一個新帳戶并授予其 roles-manager 角色,您也可以通過編輯將現有帳戶的角色更改為 roles-manager。
5.2 創建并部署WordPress
WordPress 簡介
WordPress(使用 PHP 語言編寫)是免費、開源的內容管理系統,用戶可以使用 WordPress 搭建自己的網站。完整的 WordPress 應用程序包括以下 Kubernetes 對象,由 MySQL 作為后端數據庫。
準備工作
您需要準備一個 project regular 帳戶,并在一個項目中賦予該帳戶 operator 角色(該用戶已被邀請參加該項目)。有關更多信息,請參見5.1創建企業空間、項目、帳戶和角色。
5.2.1 創建密鑰
創建 MySQL 密鑰
環境變量 WORDPRESS_DB_PASSWORD 是連接到 WordPress 數據庫的密碼。在此步驟中,您需要創建一個密鑰來保存將在 MySQL Pod 模板中使用的環境變量。
- 1.使用 project-regular 帳戶登錄 KubeSphere 控制臺,訪問 demo-project 的詳情頁并導航到配置中心。在密鑰中,點擊右側的創建。
- 2.輸入基本信息(例如,將其命名為 mysql-secret)并點擊下一步。在下一頁中,選擇類型為默認,然后點擊添加數據來添加鍵值對。輸入如下所示的鍵 (Key) MYSQL_ROOT_PASSWORD 和值 (Value) 123456,點擊右下角 √ 進行確認。完成后,點擊創建按鈕以繼續。
創建 WordPress 密鑰
按照以上相同的步驟創建一個名為 wordpress-secret 的 WordPress 密鑰,輸入鍵 (Key) WORDPRESS_DB_PASSWORD 和值 (Value) 123456。創建的密鑰顯示在列表中,如下所示:
5.2.2 創建存儲卷
- 1.訪問存儲管理下的存儲卷,點擊創建。
2.輸入卷的基本信息(例如,將其命名為 wordpress-pvc),然后點擊下一步。
3.在存儲卷設置中,需要選擇一個可用的存儲類型,并設置訪問模式和存儲卷容量。您可以直接使用如下所示的默認值,點擊下一步繼續。
- 4.對于高級設置,您無需為當前步驟添加額外的配置,點擊創建完成即可。
5.2.3 創建應用程序
添加 MySQL 后端組件
- 1.導航到應用負載下的應用,選擇自制應用,再點擊構建自制應用。
- 2.輸入基本信息(例如,在應用名稱一欄輸入 wordpress),然后點擊下一步。
- 3.在服務組件中,點擊添加服務以在應用中設置組件。
4.設置組件的服務類型為有狀態服務。
5.輸入有狀態服務的名稱(例如 mysql)并點擊下一步。
- 6.在容器鏡像中,點擊添加容器鏡像。
- 7.在搜索框中輸入 mysql:5.6,按下回車鍵,然后點擊使用默認端口。由于配置還未設置完成,請不要點擊右下角的 √ 按鈕。
在高級設置中,請確保內存限制不小于 1000 Mi,否則 MySQL 可能因內存不足而無法啟動。
- 8.下滾動到環境變量,點擊引用配置文件或密匙。輸入名稱 MYSQL_ROOT_PASSWORD,然后選擇資源 mysql-secret 和前面步驟中創建的密鑰 MYSQL_ROOT_PASSWORD,完成后點擊 √ 保存配置,最后點擊下一步繼續。
- 9.選擇掛載存儲中的添加存儲卷模板,輸入存儲卷名稱 (mysql) 和掛載路徑(模式:讀寫,路徑:/var/lib/mysql)的值,如下所示:
完成后,點擊 √ 保存設置并點擊下一步繼續。
- 10.在高級設置中,可以直接點擊添加,也可以按需選擇其他選項。
- 11.現在,MySQL 組件已經添加完成,如下所示:
添加 WordPress 前端組件
- 12.再次點擊添加服務,這一次選擇無狀態服務。輸入名稱 wordpress 并點擊下一步。
- 13.與上述步驟類似,點擊添加容器鏡像,在搜索欄中輸入 wordpress:4.8-apache 并按下回車鍵,然后點擊使用默認端口。
- 14.向下滾動到環境變量,點擊引用配置文件或密匙。這里需要添加兩個環境變量,請根據以下截圖輸入值:
- 對于 WORDPRESS_DB_PASSWORD,請選擇在步驟 1 中創建的 wordpress-secret 和 WORDPRESS_DB_PASSWORD。
- 點擊添加環境變量,分別輸入 WORDPRESS_DB_HOST 和 mysql 作為鍵 (Key) 和值 (Value)。
點擊 √ 保存配置,再點擊下一步繼續。
- 15.在掛載存儲中,點擊添加存儲卷,并選擇已有存儲卷。
- 16.選擇上一步創建的 wordpress-pvc,將模式設置為讀寫,并輸入掛載路徑 /var/www/html。點擊 √ 保存,再點擊下一步繼續。
- 17.在高級設置中,可以直接點擊添加創建服務,也可以按需選擇其他選項。
- 18.現在,前端組件也已設置完成。點擊下一步繼續。
- 19.您可以在這里設置路由規則(應用路由 Ingress),也可以直接點擊創建。
- 20.創建后,應用將顯示在下面的列表中。
5.2.4 驗證資源
在工作負載中,分別檢查部署和有狀態副本集中 wordpress-v1 和 mysql-v1 的狀態。如果它們的運行狀態如下圖所示,就意味著 WordPress 已經成功創建。
5.2.5 通過NodePort 訪問WordPress
- 1.若要在集群外訪問服務,請首先導航到服務。點擊 wordpress 右側的三個點后,選擇編輯外網訪問。
- 2.在訪問方式中選擇 NodePort,然后點擊確定。
- 3.點擊服務進入詳情頁,可以看到暴露的端口。
- 4.通過 {Node IP}:{NodePort} 訪問此應用程序,可以看到下圖: