由于未找到 PersistentVolumeClaim,Fargate pod 状态为待处理的 AWS EKS

AWS EKS with Fargate pod status pending due to PersistentVolumeClaim not found

我已经使用以下命令部署了带有 Fargate 和 alb-ingress-access 的 EKS 集群:

eksctl create cluster --name fargate-cluster --version 1.17 --region us-east-2 --fargate --alb-ingress-access

Fargate 命名空间也已创建。

正在部署的应用程序有四个容器,即 mysql、nginx、redis 和 web。

YAML 文件已应用到正确的命名空间。

我遇到的问题是,当我获得 pods 状态时应用 YAML 文件后,我的状态如下:

NAMESPACE     NAME                              READY   STATUS    RESTARTS   AGE
flipkicks     flipkicksdb-7669b44bbb-xww26      0/1     Pending   0          112m
flipkicks     flipkicksredis-74bbf9bd8c-p59hb   1/1     Running   0          112m
flipkicks     nginx-5b46fd5977-9d8wk            0/1     Pending   0          112m
flipkicks     web-56666f5d8-64w4d               1/1     Running   0          112m

MySQL 和 Nginx pods 进入待定状态。两者的部署 YAML 具有以下 volumeMounts 值:

MYSQL

volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-db

NGINX

volumeMounts:
        - mountPath: "/etc/nginx/conf.d"
          name: nginx-conf
        - mountPath: "/var/www/html"
          name: admin-panel

两个 pods 的 kubectl describe 命令的事件部分的输出是:

MYSQL

Events:
Type     Reason            Age        From               Message
----     ------            ----       ----               -------
Warning  FailedScheduling  <unknown>  fargate-scheduler  Pod not supported on Fargate: volumes not supported: mysql-db not supported because: PVC mysql-db not bound

NGINX

Events:
Type     Reason            Age        From               Message
----     ------            ----       ----               -------
Warning  FailedScheduling  <unknown>  fargate-scheduler  Pod not supported on Fargate: volumes not supported: admin-panel is of an unsupported volume Type

非常感谢任何帮助理解这个问题以及如何解决它。

由于您的 NGINX 和 MYSQL pods 需要 volumeMounts,您将需要一个 PersistentVolumeClaim,这是对 PersistentVolume 资源的存储请求.然后,您的 pods 可以将声明用作卷,有关详细信息,请参阅 Kubernetes Persistent Volumes

在引入 Aug 17, 2020 when the AWS EFS CSI driver 之前,EKS Fargate 不支持持久存储的时间最长。

您将需要部署 AWS EFS CSI 驱动程序并更新您的清单以部署 PersistentVolume、PersistentVolumeClaim 并让您的 pods 将声明用作卷。我建议从 Amazon EFS CSI driver guide to deploy the CSI driver into your EKS Fargate cluster and update your manifests to match the examples provided here.

开始