Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Kubernetes-本地存储-节点协作不工作_Linux_Kubernetes - Fatal编程技术网

Linux Kubernetes-本地存储-节点协作不工作

Linux Kubernetes-本地存储-节点协作不工作,linux,kubernetes,Linux,Kubernetes,我试图让持久本地存储工作,我创建了以下PV、PVC和部署。但pod因错误而陷入挂起状态: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 63s (x7 over 8m8s) defaul

我试图让持久本地存储工作,我创建了以下PV、PVC和部署。但pod因错误而陷入挂起状态:

Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  63s (x7 over 8m8s)  default-scheduler  0/3 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 2 node(s) didn't find available persistent volumes to bind.
我有3个节点->1个主节点,2个工作节点

NAME        STATUS   ROLES    AGE   VERSION   LABELS
elitedesk   Ready    master   40d   v1.18.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=elitedesk,kubernetes.io/os=linux,node-role.kubernetes.io/master=
optiplex    Ready    <none>   40d   v1.18.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=optiplex,kubernetes.io/os=linux
r720        Ready    <none>   40d   v1.18.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=r720,kubernetes.io/os=linux
名称状态角色年龄版本标签
elitedesk Ready master 40d v1.18.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=elitedesk,kubernetes.io/os=linux,node-role.kubernetes.io/master=
optiplex Ready 40d v1.18.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=optiplex,kubernetes.io/os=linux
r720 Ready 40d v1.18.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=r720,kubernetes.io/os=linux
不知道我做错了什么。
PersistentVolume的路径只是一个目录,而不是装载的存储设备。

我的问题是PersistentVolumeClaim的
选择器。
在PV中添加标签并在PVC中选择该标签修复了我的问题

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: plex-config-volume
  labels:
    storage-type: plex-config-volume
spec:
  capacity:
    storage: 400Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: standard
  local:
    path: /mnt/kube-storage/plex
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - r720
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: plex-config-claim
spec:
  storageClassName: standard
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi
  selector:
    matchLabels:
      storage-type: plex-config-volume
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      name: nginx
    spec:
      containers:
      - image: maersk/nginx
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - mountPath: /config
          name: config-nfs
        - mountPath: /data
          name: data-nfs
      volumes:
      - name: config-nfs
        emptyDir: {}
      - name: data-nfs
        persistentVolumeClaim:
          claimName: plex-config-claim
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: plex-config-volume
  labels:
    storage-type: plex-config-volume
spec:
  capacity:
    storage: 400Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: standard
  local:
    path: /mnt/kube-storage/plex
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - r720
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: plex-config-claim
spec:
  storageClassName: standard
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 200Gi
  selector:
    matchLabels:
      storage-type: plex-config-volume
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      name: nginx
    spec:
      containers:
      - image: maersk/nginx
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - mountPath: /config
          name: config-nfs
        - mountPath: /data
          name: data-nfs
      volumes:
      - name: config-nfs
        emptyDir: {}
      - name: data-nfs
        persistentVolumeClaim:
          claimName: plex-config-claim