Pods 是否被迫在其持久卷所在的节点上 运行?
Are Pods forced to run on nodes where their persistent volumes exist?
我正在用 5 Rpi 集群自学 Kubernetes,我对 Kubernetes 在 Pod 调度方面处理持久卷的方式感到有点困惑。
我有 4 个工作节点使用 ext4 格式的 64GB 微型 SD 卡。它不会给 GCP 或 AWS 一个 运行 的钱,但它是一个副项目。
假设我在 worker1
上创建了一个请求 10GB 存储空间的持久卷声明,并且我部署了一个依赖此 PVC 的服务,那么该服务是否会被强制安排在 worker1
上?
我是否应该研究 Ceph 或 Hdfs 等分布式文件系统,以便 Pods 不限于在特定节点上进行调度?
抱歉,如果这看起来像一个愚蠢的问题,我是自学的,并且仍在努力解决这个问题! (请随意使用 pull req 改进我的 tl;dr doc for kubernetes)
Let's say I create a Persistent volume Claim requesting 10GB of storage on worker1, and I deploy a service which relies on this PVC, is that service then forced to be scheduled on worker1?
这是个好问题。这如何工作取决于您的存储系统。为您的 Persistent Volume Claim 定义的 StorageClass 包含有关 Volume Binding Mode. It is common to use dynamic provisioning volumes, so that the volume is first allocated when a user/consumer/Pod is scheduled. And typically this volume does not exist on the local Node but remote in the same data center. Kubernetes also has support for Local Persistent Volumes 位于同一节点上的物理卷的信息,但它们通常是更昂贵,当您需要高磁盘性能和容量时使用。
只是一些示例,如前所述,这取决于您的存储系统,因为我看到您使用本地存储选项
本地存储:
是的,pod 需要 运行 在 pv 所在的同一台机器上(你的情况)
ISCSI/Trident 桑:
否,节点将挂载 pod 将被调度的 iSCSI 块设备
(前面已经提到了 volume binding mode 是一个重要的关键字,可能你需要将它设置为 'WaitForFirstConsumer')
NFS/Trident 纳斯:
不,它的 nfs,如果您可以访问它并对其进行身份验证,则可以从任何地方安装它
VMWare VMDK 的:
不,与 iSCSI 相同,获取 pod 调度的节点从数据存储挂载 vmdk
ceph/rook.io:
不,您有 3 个存储选项,文件、块和对象存储,每种类型都是分布式的,因此您可以在每个节点上安排一个 pod。
ceph 也是在商用硬件上承载分布式软件定义存储的理想系统,我可以推荐的是 https://rook.io/ 基本上是 'container-steroids'
上的开源 ceph
我正在用 5 Rpi 集群自学 Kubernetes,我对 Kubernetes 在 Pod 调度方面处理持久卷的方式感到有点困惑。
我有 4 个工作节点使用 ext4 格式的 64GB 微型 SD 卡。它不会给 GCP 或 AWS 一个 运行 的钱,但它是一个副项目。
假设我在 worker1
上创建了一个请求 10GB 存储空间的持久卷声明,并且我部署了一个依赖此 PVC 的服务,那么该服务是否会被强制安排在 worker1
上?
我是否应该研究 Ceph 或 Hdfs 等分布式文件系统,以便 Pods 不限于在特定节点上进行调度?
抱歉,如果这看起来像一个愚蠢的问题,我是自学的,并且仍在努力解决这个问题! (请随意使用 pull req 改进我的 tl;dr doc for kubernetes)
Let's say I create a Persistent volume Claim requesting 10GB of storage on worker1, and I deploy a service which relies on this PVC, is that service then forced to be scheduled on worker1?
这是个好问题。这如何工作取决于您的存储系统。为您的 Persistent Volume Claim 定义的 StorageClass 包含有关 Volume Binding Mode. It is common to use dynamic provisioning volumes, so that the volume is first allocated when a user/consumer/Pod is scheduled. And typically this volume does not exist on the local Node but remote in the same data center. Kubernetes also has support for Local Persistent Volumes 位于同一节点上的物理卷的信息,但它们通常是更昂贵,当您需要高磁盘性能和容量时使用。
只是一些示例,如前所述,这取决于您的存储系统,因为我看到您使用本地存储选项
本地存储: 是的,pod 需要 运行 在 pv 所在的同一台机器上(你的情况)
ISCSI/Trident 桑: 否,节点将挂载 pod 将被调度的 iSCSI 块设备 (前面已经提到了 volume binding mode 是一个重要的关键字,可能你需要将它设置为 'WaitForFirstConsumer')
NFS/Trident 纳斯: 不,它的 nfs,如果您可以访问它并对其进行身份验证,则可以从任何地方安装它
VMWare VMDK 的: 不,与 iSCSI 相同,获取 pod 调度的节点从数据存储挂载 vmdk
ceph/rook.io: 不,您有 3 个存储选项,文件、块和对象存储,每种类型都是分布式的,因此您可以在每个节点上安排一个 pod。 ceph 也是在商用硬件上承载分布式软件定义存储的理想系统,我可以推荐的是 https://rook.io/ 基本上是 'container-steroids'
上的开源 ceph