storageClass kubernetes.io/no-provisioner是否适用于多节点群集?

storageClass kubernetes.io/no-provisioner是否适用于多节点群集?,kubernetes,local-storage,kubeadm,kubernetes-pvc,kubernetes-statefulset,Kubernetes,Local Storage,Kubeadm,Kubernetes Pvc,Kubernetes Statefulset,群集: 1大师 2名工人 我正在使用带有3个副本的PV(kubernetes.io/no-provisioner-storageClass)使用本地卷部署statefolset。 为两个工作节点创建了2个PV 预期:POD将在两个Worker上安排,并共享相同的卷 结果:在单个工作节点上创建了3个有状态的POD。 亚马尔:- 种类:StorageClass apiVersion:storage.k8s.io/v1 元数据: 名称:本地存储 供应人:kubernetes.io/no-provisi

群集: 1大师 2名工人

我正在使用带有3个副本的PV(kubernetes.io/no-provisioner-storageClass)使用本地卷部署statefolset。 为两个工作节点创建了2个PV

预期:POD将在两个Worker上安排,并共享相同的卷

结果:在单个工作节点上创建了3个有状态的POD。 亚马尔:-

种类:StorageClass
apiVersion:storage.k8s.io/v1
元数据:
名称:本地存储
供应人:kubernetes.io/no-provisioner
volumeBindingMode:WaitForFirstConsumer
---
种类:PersistentVolumeClaim
版本:v1
元数据:
名称:本地索赔示例
规格:
访问模式:
-读写
资源:
请求:
存储:1Gi
storageClassName:本地存储
---
版本:v1
种类:PersistentVolume
元数据:
名称:示例-pv-1
规格:
容量:
存储:2Gi
#volumeMode字段要求启用BlockVolume Alpha功能门。
volumeMode:文件系统
访问模式:
-读写
PersistentVolumeClaIncolicy:删除
storageClassName:本地存储
本地:
路径:/mnt/vol1
节点相关性:
必修的:
nodeSelectorTerms:
-匹配表达式:
-关键字:kubernetes.io/hostname
接线员:在
价值观:
-工作节点1
---
版本:v1
种类:PersistentVolume
元数据:
名称:示例-pv-2
规格:
容量:
存储:2Gi
#volumeMode字段要求启用BlockVolume Alpha功能门。
volumeMode:文件系统
访问模式:
-读写
PersistentVolumeClaIncolicy:删除
storageClassName:本地存储
本地:
路径:/mnt/vol2
节点相关性:
必修的:
nodeSelectorTerms:
-匹配表达式:
-关键字:kubernetes.io/hostname
接线员:在
价值观:
-工人节点2
---
#无头服务,用于状态集成员的稳定DNS条目。
版本:v1
种类:服务
元数据:
名称:测试
标签:
应用程序:测试
规格:
端口:
-名称:测试无头
港口:8000
集群:无
选择器:
应用程序:测试
---
版本:v1
种类:服务
元数据:
名称:测试服务
标签:
应用程序:测试
规格:
端口:
-名称:测试
港口:8000
协议:TCP
节点端口:30063
类型:节点端口
选择器:
应用程序:测试
---
apiVersion:apps/v1
种类:StatefulSet
元数据:
名称:teststateful
规格:
选择器:
火柴标签:
应用程序:测试
serviceName:有状态服务
副本:6份
模板:
元数据:
标签:
应用程序:测试
规格:
容器:
-名称:container-1
图片:
imagePullPolicy:始终
端口:
-名称:http
集装箱港口:8000
体积数量:
-名称:localvolume
挂载路径:/tmp/
卷数:
-名称:localvolume
persistentVolumeClaim:
claimName:本地索赔示例

之所以发生这种情况,是因为库伯内特斯不关心分布。它有一种提供特定分布的机制,称为Pod亲和力。 对于在所有工作人员上分发播客,您可以使用。 此外,您可以使用软亲和性(区别I),它并不严格,允许生成所有的豆荚。例如,StatefulSet如下所示:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: my-app
  replicas: 3 
  template:
    metadata:
      labels:
        app: my-app
    spec:
      affinity:
        podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - my-app
          topologyKey: kubernetes.io/hostname      
      terminationGracePeriodSeconds: 10
      containers:
      - name: app-name
        image: k8s.gcr.io/super-app:0.8
        ports:
        - containerPort: 21
          name: web

这个StatefulSet将尝试在一个新的worker上生成每个pod;如果没有足够的工人,它将在pod已经存在的节点上生成pod。

这是因为Kubernetes不关心分布。它有一种提供特定分布的机制,称为Pod亲和力。 对于在所有工作人员上分发播客,您可以使用。 此外,您可以使用软亲和性(区别I),它并不严格,允许生成所有的豆荚。例如,StatefulSet如下所示:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: my-app
  replicas: 3 
  template:
    metadata:
      labels:
        app: my-app
    spec:
      affinity:
        podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - my-app
          topologyKey: kubernetes.io/hostname      
      terminationGracePeriodSeconds: 10
      containers:
      - name: app-name
        image: k8s.gcr.io/super-app:0.8
        ports:
        - containerPort: 21
          name: web

这个StatefulSet将尝试在一个新的worker上生成每个pod;如果没有足够的工作线程,它将在pod已经存在的节点上生成pod。

与statefulset相关。。。通过以上配置,持久卷(localstorage)“数据”是否会跨pod副本的所有工作节点进行复制??kubernetes Statefolset是否处理了这个问题??(可能太晚了)tl;dr是“不”。不会复制数据,因为“本地”PV类型应该与连接到特定节点的存储一起工作@Abhishek,我们是否需要启用或执行任何特殊的“本地”provisioner以在StorageClass(v1.14.8)中使用它,我有类似的要求,但引用SC名称而不是创建PV,它不起作用?与statefulset相关。。。通过以上配置,持久卷(localstorage)“数据”是否会跨pod副本的所有工作节点进行复制??kubernetes Statefolset是否处理了这个问题??(可能太晚了)tl;dr是“不”。不会复制数据,因为“本地”PV类型应该与连接到特定节点的存储一起工作@Abhishek,我们是否需要启用或执行任何特殊的“本地”供应器,以便在StorageClass(v1.14.8)中使用它,我有类似的要求,但引用SC名称,而不是创建PV,并且它不起作用?