Kubernetes クラスターに StatefulSet オブジェクトを作成します。
StatefulSet のサービス検出と負荷分散を提供するヘッドレス サービスを作成します。
StatefulSet で 3 つの MySQL コンテナを定義し、マスター/スレーブ レプリケーション モードで構成します。
Kubernetes ConfigMap と Secret を使用して、コンテナーの構成情報と認証情報を保存します。
mysql という名前の名前空間を作成します。
kubectl create namespace mysql
my.cnf:
apiVersion: v1 kind: ConfigMap metadata: name: mysql-config namespace: mysql data: my.cnf: | [mysqld] server-id=1 log-bin=mysql-bin binlog_format=row innodb_flush_log_at_trx_commit=1
apiVersion: v1 kind: Secret metadata: name: mysql-secret namespace: mysql type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
username と
password は、それぞれ Base64 でエンコードされたユーザー名とパスワードです。
apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql namespace: mysql spec: replicas: 3 serviceName: mysql-headless selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: password volumeMounts: - name: mysql-data mountPath: /var/lib/mysql - name: mysql-config mountPath: /etc/mysql/conf.d/my.cnf subPath: my.cnf volumes: - name: mysql-data persistentVolumeClaim: claimName: mysql-data - name: mysql-config configMap: name: mysql-config volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi
mysql という名前の StatefulSet オブジェクトが定義されており、これには 3 つの MySQL コンテナが含まれています。各コンテナには MySQL データを保存するための永続ボリュームがあり、ConfigMap によって保存された MySQL 構成ファイルをマウントします。
apiVersion: v1 kind: Service metadata: name: mysql-headless namespace: mysql spec: ports: - name: mysql port: 3306 clusterIP: None selector: app: mysql
kubectl exec -it mysql-0 --namespace=mysql -- /bin/bash mysql -u root -p create database testdb; use testdb; create table testtable (id int, name varchar(255)); insert into testtable values (1, 'test'); exit;
以上がstatefulset を使用して Kubernetes で MySQL クラスターを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。