EFS 持久卷声明失败

EFS persistent volume claim failed

我正在尝试部署 nginx 应用程序,在 EFS 文件系统中安装卷。在部署清单 yaml 文件后,我的 pod 处于挂起状态,同时我验证了 pv/pc 并且它已经在日志中得到了限制。

这里是yam文件pvc和部署yaml文件

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: nginx
spec: 
  replicas: 1
  selector: 
    matchLabels: 
      app: nginx
  template: 
    metadata: 
      labels: 
        app: nginx
    spec:
      containers: 
        - image: "nginx:latest"
          name: nginx
          ports: 
            - containerPort: 80
              name: nginx
         
          volumeMounts: 
            - mountPath: "/etc/localtime -> /usr/share/zoneinfo/Etc/UTC"
              name: nginx-localtime
            - mountPath: "/var/log/nginx/"
              name: nginx-log
            - mountPath: "/var/log/cache/"
              name: nginx-cache
         
      volumes: 
        - name: nginx-localtime
          persistentVolumeClaim: 
            claimName: nginx-localtime
        - name: nginx-log
          persistentVolumeClaim: 
            claimName: nginx-log
        - name: nginx-cache
          persistentVolumeClaim: 
            claimName: nginx-cache
    
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-localtime
spec:
  storageClassName: efs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-log
spec:
  storageClassName: efs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-cache
spec:
  storageClassName: efs
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi

[root@ip-10-1-2-3 nginx]# kubectl get pvc
NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nginx-cache       Bound    pvc-d35df958-1288-4028-bf38-d880ec09824f   10Mi       RWX            efs            49s
nginx-localtime   Bound    pvc-ec5b15c0-a9d1-468a-989c-48a18332bbbb   10Mi       RWX            efs            49s
nginx-log         Bound    pvc-c84f1a46-ceba-4180-a2ce-95e19d3d9614   10Mi       RWX            efs            49s

[root@ip-10-1-2-3 nginx]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                     STORAGECLASS   REASON   AGE
pvc-c84f1a46-ceba-4180-a2ce-95e19d3d9614   10Mi       RWX            Delete           Bound    default/nginx-log         efs                     54s
pvc-d35df958-1288-4028-bf38-d880ec09824f   10Mi       RWX            Delete           Bound    default/nginx-cache       efs                     53s
pvc-ec5b15c0-a9d1-468a-989c-48a18332bbbb   10Mi       RWX            Delete           Bound    default/nginx-localtime   efs                     54s

Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  36s (x2 over 36s)  default-scheduler  0/2 nodes are available: 2 persistentvolumeclaim "nginx-localtime" not found.
  Normal   Scheduled         34s                default-scheduler  Successfully assigned default/nginx-5c9777db9b-mjc75 to ip-10-1-2-3.eu-central-1.compute.internal
  Normal   Pulled            31s                kubelet            Successfully pulled image "nginx:latest" in 1.726030163s
  Normal   Pulled            29s                kubelet            Successfully pulled image "nginx:latest" in 1.898012878s
  Normal   Pulling           15s (x3 over 33s)  kubelet            Pulling image "nginx:latest"
  Normal   Created           13s (x3 over 31s)  kubelet            Created container nginx
  Normal   Started           13s (x3 over 31s)  kubelet            Started container nginx
  Normal   Pulled            13s                kubelet            Successfully pulled image "nginx:latest" in 1.580634471s
  Warning  BackOff           12s (x3 over 27s)  kubelet            Back-off restarting failed container

我无法理解在绑定 pvc 之后我的 nginx pod 仍然没有出现,你能请一些人帮助我吗?

PV和PVC是一一对应的。也就是说,只有一个 PVC 可以绑定一个 PV。首先检查您尝试绑定的 3 个 PVC 是否有 3 个 PV。

kubectl get pv

另请注意,一旦您删除了 PVC,其对应的 PV 就无法用于边界,正如人们所预料的那样。根据我的经验,您必须创建一个新的 PV 和 PVC。 您也可以在您的 PVC yaml 中提及要绑定的 PV 的名称,如下所示。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: <your-pvc-name>
spec:
  volumeName: <your-pv-name>
  accessModes:
    - ReadWriteMany
  storageClassName: efs-sc
  resources:
    requests:
      storage: 10Gi