跨多个 worker 的 Kubernetes HA 数据
Kubernetes HA data across several workers
我已经设置了一个 Kubernetes 系统,其中包含 1 个主节点和 3 个工作节点,以及一个负载均衡器。但目前我的管道卡住了,因为我正在努力寻找解决方案,我该如何设置一个 WordPress 网站,并在所有节点上复制流量。对我来说一切都很清楚,只是我不明白,如何让所有 3 名工人(VPS 不同国家/地区的服务器)拥有相同的数据,以便 pods 可以工作和扩展,如果一名工人第二个和第三个死了可以继续提供所有服务。 PVE 是解决方案还是其他?请指出我开始搜索的方向。
谢谢。
您可以在 ReadWriteMany
模式下创建一个 PersistentVolumeClaim
,创建一个 PersistentVolume
来保存您的 WordPress 站点数据,然后创建一个 Deployment
,其中包含 3 个副本,用于装载 PersistentVolume
.
示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-data
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
storageClass: fast # update this to whatever persistent storage class is available on your cluster. See https://kubernetes.io/docs/concepts/storage/storage-classes/
resources:
requests:
storage: 10Gi
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 3
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress:latest
ports:
- containerPort: 80
name: http
protocol: TCP
volumeMounts:
- mountPath: "/var/www/html"
name: wordpress-data
volumes:
- name: wordpress-data
persistentVolumeClaim:
claimName: wordpress-data # notice this is referencing the PersistentVolumeClaim we declared above
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
type: NodePort # or LoadBalancer
selector:
app: wordpress
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
我已经设置了一个 Kubernetes 系统,其中包含 1 个主节点和 3 个工作节点,以及一个负载均衡器。但目前我的管道卡住了,因为我正在努力寻找解决方案,我该如何设置一个 WordPress 网站,并在所有节点上复制流量。对我来说一切都很清楚,只是我不明白,如何让所有 3 名工人(VPS 不同国家/地区的服务器)拥有相同的数据,以便 pods 可以工作和扩展,如果一名工人第二个和第三个死了可以继续提供所有服务。 PVE 是解决方案还是其他?请指出我开始搜索的方向。
谢谢。
您可以在 ReadWriteMany
模式下创建一个 PersistentVolumeClaim
,创建一个 PersistentVolume
来保存您的 WordPress 站点数据,然后创建一个 Deployment
,其中包含 3 个副本,用于装载 PersistentVolume
.
示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-data
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
storageClass: fast # update this to whatever persistent storage class is available on your cluster. See https://kubernetes.io/docs/concepts/storage/storage-classes/
resources:
requests:
storage: 10Gi
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 3
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: wordpress:latest
ports:
- containerPort: 80
name: http
protocol: TCP
volumeMounts:
- mountPath: "/var/www/html"
name: wordpress-data
volumes:
- name: wordpress-data
persistentVolumeClaim:
claimName: wordpress-data # notice this is referencing the PersistentVolumeClaim we declared above
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
type: NodePort # or LoadBalancer
selector:
app: wordpress
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80