首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地持久性卷1节点没有找到可绑定的持久卷

本地持久性卷1节点没有找到可绑定的持久卷
EN

Stack Overflow用户
提问于 2019-03-12 00:34:44
回答 2查看 6.2K关注 0票数 0

我开始学习持久性卷和k8s。我试图使用一个本地文件夹在我的RH7盒W迷你库安装。我得到了错误:

代码语言:javascript
复制
0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind.

StorageClass.yaml

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

PersistentVolume.yaml

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-local-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /usr/local/docker/vol1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - my-node

PersistentVolumeClaim.yaml

代码语言:javascript
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: example-local-claim
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  resources:
    requests:
      storage: 1Gi

Nginx.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
    name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      name: nginx-deployment
  template:
    metadata:
      labels:
        app: nginx
        name: nginx-deployment
    spec:
      containers:
      - name: nginx-deployment
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: storage
      volumes:
        - name: storage
          persistentVolumeClaim:
            claimName: example-local-claim

root@localhost docker# kubectl获取pv

代码语言:javascript
复制
NAME               CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS    REASON   AGE
example-local-pv   1Gi        RWO            Retain           Available           local-storage            76s

根@localhost docker# kubectl get pvc

代码语言:javascript
复制
NAME                  STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS    AGE
example-local-claim   Pending                                      local-storage   75s
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 05:48:44

问题在持久卷中,您的持久卷有以下节点选择器:

代码语言:javascript
复制
nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - my-node

当您的PV试图绑定到名为my-node的节点上时,它无法找到该节点,因为没有该名称的节点。请使用以下方法检查您的节点名称:

kubectl get nodes

并将节点名称放在my-node的位置,这样就可以工作了。希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2022-04-28 08:20:43

如果您在windows上使用停靠桌面,请尝试如下:

  1. 在wsl中创建dir:
代码语言:javascript
复制
docker run --rm -it -v /:/k8s alpine mkdir /k8s/mnt/k8s
  1. 创建存储库,第一卷,第一卷,第二卷:
代码语言:javascript
复制
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-storage
spec:
  capacity:
    storage: 50000Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /mnt/k8s
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - docker-desktop
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgredb
  namespace: xxx
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: postgres
  name: postgres
  namespace: xxx
spec:
  serviceName: postgres
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:14-alpine
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgredb
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55112404

复制
相关文章

相似问题

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