【问题标题】:Drawback of hostPath in KubernetesKubernetes 中 hostPath 的缺点
【发布时间】:2019-11-04 00:50:19
【问题描述】:

我已经从 kubespray - ansible 脚本设置和 Kubernetes 集群。 现在我已经创建了一个部署,其中卷要挂载为 spec.template.spec.volumes 中的 hostPath。我已经通过 nfs 文件系统在我的所有节点上安装了卷。 现在我在 k8s 文档中阅读它不是一个好的做法,但需要了解 hostPath 的危害。 以下是示例 yaml 文件。

spec:
  containers:
  - image: test:latest
    imagePullPolicy: Always
    name: test1
    ports:
    - containerPort: 4006
      protocol: TCP
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - name : test-data
      mountPath : /RIC/
    - name : test-config
      mountPath : /xyz/abc.config
      subPath : abc.config
  volumes:
  - name : test-data
    hostPath :
      path : /nfs-mount/RIC/
  - name : test-config
    configMap :
      name : test-config

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    有一些原因:

    1. 从安全的角度来看,在生产集群上允许 HostPaths 并不是一个好主意,如果您的 pod 被黑客入侵并且有人可以访问您的主机,因为他可以写入 hostPath ,那么您的整个集群都被黑客入侵了......

    2. 使用 hostPaths 是不可移植的,如果您正在部署一些有状态的集合,例如 elasticsearch 或一些数据库等,您可以使用 kubernetes 本地卷提供器使用相同的路径。

    3. 使用本地卷供应器对其他部署没有用处,例如,如果一个节点出现故障,您需要将 pod 安排在您本地供应的卷不可用的其他节点上。

      李>
    4. 因此,请直接从 kubernetes 使用 NFS 共享,而不是将其用作主机路径或本地卷。例如:

    volumes:
          - name: test-data
            nfs:
              path: /projects/test/dev/data
              server: 192.168.1.11
    
    
    
    

    这样,您不必允许 hostPaths ,或者不必自己管理主机上的挂载 nfs ,或者不必管理本地卷等

    【讨论】:

      【解决方案2】:

      每次添加新部署时,您首先需要添加一个 NFS 卷并将其挂载到每个节点上。

      如果您可以将 NFS 存储系统添加为存储提供程序,Kubernetes 将接管大部分任务。如果您添加 KubernetesPersistence 卷对象并将卷挂载到调度 pod 的节点,Kubernetes 将在您的存储系统中创建一个卷。

      【讨论】:

        【解决方案3】:

        如果 pod 崩溃了,kubernetes 会启动新的 pod。新的 pod 可能会被安排在集群中的不同节点上。在这种情况下,数据将丢失。要克服此问题,您可能必须为特定节点添加标签。并始终将 pod 安排到该标记节点,这样本地主机路径卷就会安装到 pod。 在最坏的情况下,如果节点崩溃,那么您将丢失数据。

        【讨论】:

          猜你喜欢
          • 2018-10-04
          • 2016-12-05
          • 1970-01-01
          • 2020-12-24
          • 2021-06-09
          • 2019-12-01
          • 2019-09-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多