首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1节点找不到可用的持久卷来绑定有状态集荚创建中的错误。

1节点找不到可用的持久卷来绑定有状态集荚创建中的错误。
EN

Stack Overflow用户
提问于 2022-07-22 23:25:32
回答 1查看 335关注 0票数 1

我是从K8s开始的,我一直致力于在具有本地持久卷的复制集模式下设置mongo。我用的是StorageClass,PersistentVolume和PersistentVolumeClaim。

代码语言:javascript
复制
vincenzocalia@vincenzos-MacBook-Air server-node % kubectl get pv
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS    REASON   AGE
mongo-pv   1Gi        RWO            Retain           Available           mongo-storage            24m

但当我检查吊舱的时候

代码语言:javascript
复制
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  2m    default-scheduler  0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.

这篇文章的回复https://stackoverflow.com/a/70069138/2704032证实了我的怀疑,我可能使用了错误的标签。所以我看了一下PV,我看到了,因为我已经将nodeAffinity设置为

代码语言:javascript
复制
nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernets.io/hostname
              operator: In
              values:
                - docker-desktop

它在寻找

代码语言:javascript
复制
Node Affinity:     
  Required Terms:  
    Term 0:        kubernets.io/hostname in [docker-desktop]

我用kubectl get nodes --show-labels检查节点,它确实有输出所示的标签

代码语言:javascript
复制
NAME             STATUS   ROLES           AGE    VERSION   LABELS
docker-desktop   Ready    control-plane   7d9h   v1.24.1   beta.kubernetes.io/arch=arm64,beta.kubernetes.io/os=linux,kubernetes.io/arch=arm64,kubernetes.io/hostname=docker-desktop,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=

我尝试在StatefulSet中使用StatefulSet作为

代码语言:javascript
复制
volumeClaimTemplates:
    - metadata:
        name: mongo-vctemplate
      spec:
        storageClassName: mongo-storage
        accessModes: 
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi  

但是这并没有什么区别,我也试图用claimRef参数在pv中指定pic,但是在创建pod时仍然出现了一个隐秘的错误。

我还能检查什么或者需要设置什么?像往常一样非常感谢这里是我的yaml文件

StorageClass

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mongo-storage
provisioner: kubernetes.io/no-provisioner
# volumeBindingMode: Immediate
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain

光伏

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-pv
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi
  # persistentVolumeReclaimPolicy: Retain # prod
  persistentVolumeReclaimPolicy: Delete # local tests
  storageClassName: mongo-storage
  # claimRef:
  #   name: mongo-pvc
  accessModes:
    - ReadWriteOnce
  # volumeMode: Filesystem #default if omitted
  # hostPath:
  #   path: /mnt/data
  local:
    path: /mnt/disk/vol1
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernets.io/hostname
              operator: In
              values:
                - docker-desktop

聚氯乙烯

代码语言:javascript
复制
piVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc
spec:
  storageClassName: mongo-storage
  # volumeName: mongo-pv # this will make it unbundable???
  resources:
    requests:
      storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce

StatefulSet

代码语言:javascript
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongo-statefulset
spec:
  selector:
    matchLabels:
      app: mongo-pod # has to match .spec.template.metadata.labels
  serviceName: mongo-clusterip-service
  replicas: 1 # 3 
  template:
    metadata:
      labels:
        app: mongo-pod # has to match .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo-container
          image: mongo
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-pv-cont
              mountPath: /data/db #/mnt/data
      volumes:
        - name: mongo-pv-cont    
          persistentVolumeClaim:
            claimName: mongo-pvc
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-24 05:36:12

这是kubernets.io/hostname中的一个错误。它应该是pv定义中的kubernetes.io/hostname

类似于这个:Error while using local persistent volumes in statefulset pod

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73086942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档