在使用 Kubernetes 部署 MySQL 數據庫時,需要創建表來存儲數據。下面是創建表的具體步驟。
apiVersion: v1
kind: ConfigMap
metadata:
name: create-table
data:
create-table.sql: |
CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
);
首先,需要創建一個 ConfigMap,將 MySQL 的創建表語句寫入其中。在上面的代碼中,創建了一個名為“create-table”的 ConfigMap,包含了一個名為“create-table.sql”的鍵值對,其中寫入了創建表的 SQL 語句。
apiVersion: batch/v1
kind: Job
metadata:
name: create-table
spec:
template:
spec:
containers:
- name: create-table
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root-password
command: ["/bin/sh", "-c", "mysql -h mysql-service -uroot -p${MYSQL_ROOT_PASSWORD}< /config/create-table.sql"]
volumeMounts:
- name: config-volume
mountPath: /config
restartPolicy: Never
volumes:
- name: config-volume
configMap:
name: create-table
然后,創建一個 Job 對象來運行 SQL 語句,這里使用的是 MySQL 官方提供的 5.7 版本鏡像。在上面的代碼中,創建了一個名為“create-table”的 Job,必須在同一 namespace 內運行。在 template.spec.containers 中,指定了容器的名稱(create-table)、鏡像(mysql:5.7)、環境變量(MYSQL_ROOT_PASSWORD,來自于之前創建的 Secret 對象)、命令(使用 /bin/sh -c 執行指定的命令)和掛載卷(將之前創建的 ConfigMap 掛載到容器內的 /config 目錄下)。在 restartPolicy 中,指定了重啟策略為 Never,即任務完成后不會重啟容器。
最后,使用 kubectl apply 命令創建 Job。
kubectl apply -f create-table.yaml
執行完這條命令后,Kubernetes 會自動啟動一個 Pod 來運行 Job。如果創建表成功,可以通過 MySQL 客戶端驗證表是否已經創建完成。