【发布时间】:2021-09-25 16:26:36
【问题描述】:
我在 gke 上有一个带有 apache、mysql 和 keyrock 的集群,我想使用水平 pod 自动缩放器对其进行扩展。
对于 mysql,我使用的是 statefulset,代码在这里:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
serviceName: mysql
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7.21
imagePullPolicy: Always
resources:
requests:
memory: 50Mi
cpu: 50m
limits:
memory: 500Mi
cpu: 400m #65
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
subPath: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
- name: MYSQL_ROOT_HOST
valueFrom:
secretKeyRef:
name: mysql-secret
key: host
volumeClaimTemplates:
- metadata:
name: mysql-storage
spec:
accessModes:
- ReadWriteOnce
storageClassName: standard
resources:
requests:
storage: 5Gi
和mysql-service代码:
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql
问题:当 hpa 扩展 mysql 数据库时,第二个副本是空,我不知道如何同步 2 个副本!
有什么想法吗?
【问题讨论】:
-
请仅在 SO 上提出 programming 相关问题!
-
@alex 你检查过mysql是一种可以在多个实例中运行的软件吗?如果有,你检查过它是如何在分布式模式下运行的吗?
-
不确定你是否已经参考过这个页面kubernetes.io/docs/tasks/run-application/…你需要写一个init容器来为你完成复制任务,最好使用Kubernetes操作员github.com/mysql/mysql-operator
-
@hellodk 你相信如果我写下一个init容器就可以了吗?
-
@Jonas 谢谢你的回答!!我已经检查过 mysql 可以在多个实例中运行,但我不明白这如何解决我的问题..
标签: mysql kubernetes replication hpa statefulset