Rumah > Artikel > pangkalan data > Cara menggunakan statefulset untuk membina kluster MySQL dalam kubernetes
Buat objek StatefulSet dalam gugusan Kubernetes.
Buat perkhidmatan tanpa kepala untuk menyediakan penemuan perkhidmatan dan pengimbangan beban untuk StatefulSet.
Tentukan tiga bekas MySQL dalam StatefulSet dan konfigurasikannya dalam mod replikasi induk-hamba.
Gunakan Kubernetes ConfigMap dan Secret untuk menyimpan maklumat konfigurasi dan maklumat pengesahan bekas.
Semak sama ada kluster berfungsi dengan betul.
Mula-mula, buat ruang nama bernama mysql
dalam kelompok Kubernetes:
kubectl create namespace mysql
Kemudian, cipta Peta Konfig untuk Menyimpan konfigurasi maklumat bekas MySQL, seperti fail konfigurasi 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
Seterusnya, cipta Rahsia untuk menyimpan maklumat pengesahan bekas MySQL, seperti nama pengguna dan kata laluan:
apiVersion: v1 kind: Secret metadata: name: mysql-secret namespace: mysql type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
di mana, username
dan password
ialah nama pengguna dan kata laluan berkod base64 masing-masing.
Kemudian, cipta objek StatefulSet untuk menentukan konfigurasi dan bilangan replika bekas MySQL:
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
Dalam fail YAML di atas , kami Objek StatefulSet bernama mysql
ditakrifkan, yang mengandungi tiga bekas MySQL. Setiap bekas mempunyai volum yang berterusan untuk menyimpan data MySQL dan memasang fail konfigurasi MySQL yang disimpan oleh ConfigMap.
Seterusnya, kita perlu mencipta perkhidmatan tanpa kepala Perkhidmatan ini tidak akan menetapkan ClusterIP, tetapi akan mencipta berbilang Titik Akhir, setiap Titik Akhir sepadan dengan alamat IP Pod , boleh digunakan untuk mengakses Pod secara terus:
apiVersion: v1 kind: Service metadata: name: mysql-headless namespace: mysql spec: ports: - name: mysql port: 3306 clusterIP: None selector: app: mysql
Akhir sekali, kita perlu menyemak sama ada replikasi tuan-hamba MySQL berfungsi dengan betul. Gunakan alat baris arahan kubectl untuk memasukkan bekas dalam Kubernetes dan laksanakan arahan yang sepadan. Jika anda ingin pergi ke pod dan menyambung ke nod induk bekas MySQL untuk mencipta jadual, anda boleh melakukan ini dengan menjalankan arahan berikut:
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;
Atas ialah kandungan terperinci Cara menggunakan statefulset untuk membina kluster MySQL dalam kubernetes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!