Kubernetes に MySQL クラスタをデプロイして永続ストレージを作成
KubernetesでMySQLクラスターをデプロイし、永続ストレージを永続化するには、StatefulSetとPersistentVolumeClaim(PVC)を使用できます。 1. 永続ストレージの種類と属性を定義するストレージクラス(StorageClass)を作成します。たとえば、`mysql-storage`という名前のストレージクラスを作成するには、次のコマンドを使用します。 “`apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: mysql-storage provisioner: kubernetes.io/gce-pd parameters: type: pd-standard “` 2. 永続ストレージをリクエストするPersistentVolumeClaim(PVC)を作成します。たとえば、`mysql-pvc`という名前のPVCを作成するには、次のコマンドを使用します。 “`apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc spec: storageClassName: mysql-storage accessModes: – ReadWriteOnce resources: requests: storage: 10Gi “` 3. MySQLの構成ファイルを格納するConfigMapを作成します。たとえば、`mysql-config`という名前のConfigMapを作成し、MySQLの構成ファイルを`my.cnf`に格納するには、次のコマンドを使用します。 “`apiVersion: v1 kind: ConfigMap metadata: name: mysql-config data: my.cnf: | [mysqld] server-id=1 log-bin=mysql-bin binlog-format=row “` 4. MySQLクラスターのPodを作成して管理するStatefulSetを作成します。たとえば、`mysql-cluster`という名前のStatefulSetを作成するには、次のコマンドを使用します。 “`apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-clusterspec: replicas: 3 selector: matchLabels: app: mysql serviceName: mysql template: metadata: labels: app: mysql spec: containers: – name: mysql image: mysql:5.7 env: – name: MYSQL_ROOT_PASSWORD value: mysecretpassword ports: – containerPort: 3306 volumeMounts: – name: mysql-data mountPath: /var/lib/mysql – name: mysql-config mountPath: /etc/mysql/conf.d volumes: – name: mysql-data persistentVolumeClaim: claimName: mysql-pvc – name: mysql-config configMap: name: mysql-config “` この設定では、MySQLのデータディレクトリ`/var/lib/mysql`が`mysql-data`という名前のPVCにマウントされ、MySQLの構成ファイル`my.cnf`は`mysql-config`という名前のConfigMapにマウントされます。 5. kubectl applyコマンドを使用して、StatefulSet、PVC、およびConfigMapをデプロイします。 “`kubectl apply -f mysql-cluster.yaml kubectl apply -f mysql-pvc.yaml kubectl apply -f mysql-config.yaml “` 6. StatefulSetのPodが実行されて初期化が完了するのを待ちます。次のコマンドを使用してPodの実行ステータスを確認できます。 “`kubectl get pods “` 7. MySQLクラスターのPodの1つに接続し、必要な設定と操作を行います。次のコマンドを使用して、MySQLクラスターの最初のPodに接続できます。 “`kubectl exec -it mysql-cluster-0 — mysql -uroot -pmysecretpassword “` 8. 上記の手順が完了すると、KubernetesでMySQLクラスターがデプロイされ、永続ストレージを使用してデータが格納されます。