Créez un objet StatefulSet dans le cluster Kubernetes.
Créez un service sans tête pour fournir la découverte de services et l'équilibrage de charge pour StatefulSet.
Définissez trois conteneurs MySQL dans StatefulSet et configurez-les en mode de réplication maître-esclave.
Utilisez Kubernetes ConfigMap et Secret pour stocker les informations de configuration et les informations d'authentification du conteneur.
Vérifiez si le cluster fonctionne correctement.
Tout d'abord, créez un espace de noms nommé mysql
dans le cluster Kubernetes : #🎜 🎜#
kubectl create namespace mysql
mysql
的命名空间: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
然后,创建一个 ConfigMap 来存储 MySQL 容器的配置信息,例如 MySQL 配置文件 my.cnf
:
apiVersion: v1 kind: Secret metadata: name: mysql-secret namespace: mysql type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
接下来,创建一个 Secret 来存储 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
其中,username
和 password
分别是 base64 编码后的用户名和密码。
然后,创建一个 StatefulSet 对象来定义 MySQL 容器的配置和副本数:
apiVersion: v1 kind: Service metadata: name: mysql-headless namespace: mysql spec: ports: - name: mysql port: 3306 clusterIP: None selector: app: mysql
在上面的 YAML 文件中,我们定义了一个名为 mysql
Ensuite, créez un ConfigMap pour stocker les informations de configuration du conteneur MySQL, telles que le fichier de configuration MySQL my.cnf
:
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;
Parmi eux, username
et password
sont les fichiers codés en base64 nom d'utilisateur et mot de passe respectivement.
Créez un objet StatefulSet pour définir MySQL
#🎜🎜#Ensuite, créez un objet StatefulSet pour définir la configuration et le nombre de réplicas du conteneur MySQL : #🎜🎜#rrreee#🎜🎜 #En haut Dans le fichier YAML, nous définissons un objet StatefulSet nommémysql
, qui contient trois conteneurs MySQL. Chaque conteneur dispose d'un volume persistant pour stocker les données MySQL et le fichier de configuration MySQL stocké par ConfigMap est monté. #🎜🎜##🎜🎜#Créer un service sans tête#🎜🎜##🎜🎜#Ensuite, nous devons créer un service sans tête. Ce service n'attribuera pas ClusterIP, mais créera plusieurs points de terminaison, chaque point de terminaison correspondant à un IP. L'adresse du Pod peut être utilisée pour accéder directement au Pod : #🎜🎜#rrreee#🎜🎜#Enfin, nous devons vérifier si la réplication maître-esclave MySQL fonctionne correctement. Utilisez l'outil de ligne de commande kubectl pour saisir le conteneur dans Kubernetes et exécuter les commandes correspondantes. Si vous souhaitez accéder au pod et vous connecter au nœud maître du conteneur MySQL pour créer la table, vous pouvez le faire en exécutant la commande suivante : #🎜🎜#rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!