跨多个 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