2

我将 kubernetes 从 Google GKE 移到自己的内部机架上。我应该使用什么持久存储?

Kubernetes Local Persistent 仅在 2018 年 4 月 13 日成为测试版 https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/

我已经看到了很多选项:- https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes

不知道我应该选择什么。使用 GKE 部署文件可以解决问题吗?

4

1 回答 1

3

在 GKE 的部署文件中,您需要spec.volumes根据您的 Persistent Volume 设置更改设置。

我建议您选择以下选项之一:

  1. 最简单的方法是使用HostPath. 它将文件或目录从主机节点的文件系统挂载到您的 Pod 中。请注意,在这种情况下,如果没有其他配置,则无法从另一个节点访问一个节点上的数据。Kubernetes 中的使用示例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pd
    spec:
      containers:
      - image: k8s.gcr.io/test-webserver
        name: test-container
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /data
          # this field is optional
          type: Directory
    
  2. 您可以使用NFS. 您需要配置 NFS 服务器,然后您可以通过 Persistent Volume Claims 在部署中使用它的卷。Kubernetes 中的使用示例:

    apiVersion: v1
    kind: Deployment
    metadata:
      name: nfs-busybox
    spec:
      replicas: 2
      selector:
        name: nfs-busybox
      template:
        metadata:
          labels:
            name: nfs-busybox
        spec:
          containers:
         - image: busybox
            command:
              - sh
              - -c
              - 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
            imagePullPolicy: IfNotPresent
            name: busybox
            volumeMounts:
              # name must match the volume name below
              - name: nfs
                mountPath: "/mnt"
          volumes:
          - name: nfs
            persistentVolumeClaim:
              claimName: nfs
    

    您可以通过链接查看有关使用 NFS 的更多信息。

  3. 您可以使用GlusterFS. 您需要配置自己的 GlusterFS 安装,然后您可以在 Deployments 中使用它的卷。Kubernetes 中的使用示例:

    apiVersion: v1
    kind: Deployment
    metadata:
      name: nfs-busybox
    spec:
      replicas: 2
      selector:
        name: nfs-busybox
      template:
        metadata:
          labels:
            name: nfs-busybox
        spec:
          containers:
         - image: busybox
            command:
              - sh
              - -c
              - 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
            imagePullPolicy: IfNotPresent
            name: busybox
            volumeMounts:
              # name must match the volume name below
              - name: nfs
                mountPath: "/mnt"
          volumes:
          - name: glusterfsvol
            glusterfs:
              endpoints: glusterfs-cluster
                path: kube_vol
                readOnly: true
    

    您可以通过链接查看有关使用 GlusterFS 的更多信息。

您可以在此处找到有关持久卷和持久卷声明的更多信息。

于 2018-07-05T11:51:17.987 回答