以下是清晰、結構化的操作流程優化說明,按步驟梳理從部署到配置持久化、暴露服務的完整過程:
一、基礎部署:快速驗證 MySQL 可用性
創建有狀態工作負載
進入 KubeSphere 項目 →?工作負載?→?有狀態副本集?→?創建,選擇?通過鏡像創建,填寫:- 名稱:
mysql-5.7
(自定義,便于識別) - 鏡像:
docker.1ms.run/bitnami/mysql:5.7.26
(Bitnami 封裝的 5.7.26 版本) - 容器端口:暴露?
3306
(TCP 協議,MySQL 默認端口) - 環境變量:設置?
MYSQL_ROOT_PASSWORD=123456
(Root 密碼,測試場景簡化配置)
無需額外存儲 / 配置,快速部署驗證容器啟動是否正常。
- 名稱:
二、數據持久化:掛載卷防止數據丟失
理解核心需求
Bitnami MySQL 鏡像的數據目錄為?/bitnami/mysql/data
,刪除容器時該路徑數據會丟失。需掛載?持久卷(PV/PVC)?留存數據。配置存儲掛載
編輯工作負載 →?存儲設置?→?添加存儲卷:- 類型:選擇?PVC(持久卷聲明),若集群無可用 PVC,可直接創建新 PVC(如?
mysql-data-pvc
)。 - 掛載路徑:
/bitnami/mysql/data
(嚴格匹配 Bitnami 數據目錄,確保數據持久化)。
說明:若掛載空目錄,首次啟動會自動初始化數據庫;若已有數據備份,可提前寫入 PVC 路徑,容器啟動會直接加載。
- 類型:選擇?PVC(持久卷聲明),若集群無可用 PVC,可直接創建新 PVC(如?
三、配置自定義:注入 my.cnf 覆蓋 / 擴展配置
配置字典(ConfigMap)準備
項目內 →?配置中心?→?配置字典?→?創建,通過 YAML 或表單添加?my.cnf
?內容:yaml
data:my.cnf: |[mysqld]lower_case_table_names=1max_connections=1000# 其他自定義參數...
掛載配置到容器
編輯工作負載 →?存儲設置?→?掛載配置字典:- 選擇剛創建的?
ConfigMap
(如?mysql-config
)。 - 掛載路徑:
- 若需覆蓋默認配置,掛載到?
/opt/bitnami/mysql/conf/my.cnf
(替換鏡像原生配置文件)。 - 若需擴展默認配置,掛載到?
/opt/bitnami/mysql/conf.d/custom.cnf
(Bitnami 鏡像會自動加載?conf.d
?目錄下的?.cnf
?文件)。
- 若需覆蓋默認配置,掛載到?
- 選擇剛創建的?
四、對外暴露服務:從集群外訪問 MySQL
創建 NodePort 服務
項目內 →?服務?→?創建?→?無 selector 服務 / 關聯工作負載,選擇:- 關聯工作負載:
mysql-5.7
(匹配之前創建的有狀態副本集) - 端口設置:
- 協議:TCP
- 服務端口:
3306
(集群內訪問端口,可自定義) - 目標端口:
3306
(容器內 MySQL 監聽端口) - NodePort:自動分配(范圍?
30000-32767
,或手動指定)。
- 關聯工作負載:
驗證外部訪問
通過集群節點 IP + NodePort 訪問,使用?mysql -h IP地址 -P 30000 -u root -p
?測試連接,輸入密碼?123456
?驗證登錄。
五、完整流程總結
- 快速驗證:用最簡配置部署有狀態工作負載,確認容器啟動正常。
- 數據安全:掛載 PVC 到?
/bitnami/mysql/data
,保障數據不隨容器刪除丟失。 - 配置定制:通過 ConfigMap 掛載?
my.cnf
?到?conf
?或?conf.d
?目錄,靈活覆蓋 / 擴展 MySQL 配置。 - 外部訪問:創建 NodePort 服務,通過集群節點 IP + 端口對外提供 MySQL 訪問,完成部署閉環。
此流程適配 Bitnami 鏡像的特殊路徑要求(數據目錄、配置加載邏輯),確保每一步配置都能精準生效,避免因路徑不匹配導致的配置失效問題。