Kubernetes 클러스터에 StatefulSet 객체를 생성합니다.
StatefulSet에 대한 서비스 검색 및 로드 밸런싱을 제공하는 헤드리스 서비스를 만듭니다.
StatefulSet에서 3개의 MySQL 컨테이너를 정의하고 마스터-슬레이브 복제 모드에서 구성합니다.
Kubernetes ConfigMap과 Secret을 사용하여 컨테이너의 구성 정보와 인증 정보를 저장합니다.
클러스터가 제대로 작동하는지 확인하세요.
먼저 Kubernetes 클러스터에 mysql
라는 네임스페이스를 생성합니다. mysql
的命名空间:
kubectl create namespace mysql
然后,创建一个 ConfigMap 来存储 MySQL 容器的配置信息,例如 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
接下来,创建一个 Secret 来存储 MySQL 容器的认证信息,例如用户名和密码:
apiVersion: v1 kind: Secret metadata: name: mysql-secret namespace: mysql type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
其中,username
和 password
分别是 base64 编码后的用户名和密码。
然后,创建一个 StatefulSet 对象来定义 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
在上面的 YAML 文件中,我们定义了一个名为 mysql
apiVersion: v1 kind: Service metadata: name: mysql-headless namespace: mysql spec: ports: - name: mysql port: 3306 clusterIP: None selector: app: 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;
rrreee
그 중사용자 이름
및 비밀번호
는 각각 base64로 인코딩된 사용자 이름과 비밀번호입니다. MySQL을 정의하기 위한 StatefulSet 객체 생성🎜🎜그런 다음 StatefulSet 객체를 생성하여 MySQL 컨테이너의 구성 및 복제본 수를 정의합니다. 🎜rrreee🎜위 YAML 파일에서 mysql이라는 파일을 정의했습니다. code > 3개의 MySQL 컨테이너가 포함된 StatefulSet 객체입니다. 각 컨테이너에는 MySQL 데이터를 저장하기 위한 영구 볼륨이 있으며 ConfigMap에 저장된 MySQL 구성 파일을 마운트합니다. 🎜🎜헤드리스 서비스 생성🎜🎜다음으로 헤드리스 서비스를 생성해야 합니다. 이 서비스는 ClusterIP를 할당하지 않지만 여러 엔드포인트를 생성합니다. 각 엔드포인트는 포드의 IP 주소에 해당하며 포드에 직접 액세스하는 데 사용할 수 있습니다. : 🎜rrreee🎜마지막으로 MySQL 마스터-슬레이브 복제가 제대로 작동하는지 확인해야 합니다. kubectl 명령줄 도구를 사용하여 Kubernetes에 컨테이너를 입력하고 해당 명령을 실행합니다. 포드로 이동하여 MySQL 컨테이너의 마스터 노드에 연결하여 테이블을 생성하려면 다음 명령을 실행하면 됩니다. 🎜rrreee
위 내용은 Statefulset을 사용하여 Kubernetes에서 MySQL 클러스터를 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!