Kubernetes - 如何为我的有状态数据库使用有状态集?
Kubernetes - How to use statefulsets for my Stateful database?
我在 gke 上有一个带有 apache、mysql 和 keyrock 的集群,我想用 horizontal pod autoscaler 扩展它。
对于 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-服务代码:
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql
问题:当hpa扩展mysql数据库时,第二个副本是空,我不知道如何同步 2 个副本!
有什么想法吗?
默认的 kubernetes pod 创建,不在扩展 pods 之间同步数据。您可以使用 kubernetes init 容器或公共存储或任何脚本来执行此操作
默认情况下,StatefulSet 不会处理复制问题。
您将不得不求助于 MySQL kubernetes 运算符来处理特定于应用程序的逻辑,例如您正在寻找的逻辑。
我在 gke 上有一个带有 apache、mysql 和 keyrock 的集群,我想用 horizontal pod autoscaler 扩展它。
对于 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-服务代码:
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql
问题:当hpa扩展mysql数据库时,第二个副本是空,我不知道如何同步 2 个副本!
有什么想法吗?
默认的 kubernetes pod 创建,不在扩展 pods 之间同步数据。您可以使用 kubernetes init 容器或公共存储或任何脚本来执行此操作
默认情况下,StatefulSet 不会处理复制问题。
您将不得不求助于 MySQL kubernetes 运算符来处理特定于应用程序的逻辑,例如您正在寻找的逻辑。