我们有a EKS setup provisioned,其中我们使用基于云原生构建包的Tekton管道,我们的PipelineRuns
在没有获得Pod资源的情况下被卡住并永远挂起。我们创建了如下所示的PersistentVolumeClaim:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: buildpacks-source-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
查看创建后此PVC的事件,以下事件表明我们的EKS设置存在问题:
命令kubectl describe pvc buildpacks-source-pvc
提供以下事件消息:
Name: buildpacks-source-pvc
Namespace: default
StorageClass: gp2
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com
volume.kubernetes.io/selected-node: ip-999-99-99-99.eu-central-1.compute.internal
volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: affinity-assistant-0b3d266b91-0
affinity-assistant-53a7c08baf-0
affinity-assistant-a375f28de3-0
affinity-assistant-e8cb1a6e15-0
buildpacks-test-pipeline-run-9rz4l-fetch-repository-pod
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 3m43s (x561 over 143m) persistentvolume-controller waiting for a volume to be created, either by external provisioner "ebs.csi.aws.com" or manually created by system administrator
EBS CSI是什么?我们如何让集群像以前一样工作?
1条答案
按热度按时间2g32fytz1#
从a Container Storage Interface (CSI) driver上的EKS 1.23开始,为了让PersistentVolume为您的PersisentVolumeClaims提供服务,就像您习惯于早期EKS版本一样。
The docs tell us,需要配置什么:
溶液:配置Amazon EBS CSI驱动程序以在EKS中运行PersistentVolumes
本质上,我们需要将AWS EBS CSI驱动程序作为EKS插件启用,但在此之前,我们需要启用IAM OIDC提供程序并为EBS CSI驱动程序创建IAM角色,最简单的方法是使用eksctl(其他方法如using plain
aws
cli or the AWS GUI are described in the docs)。1.)安装eksctl
这里我们假设the aws cli is installed and configured-并且您可以访问您的EKS集群。要使用
eksctl
,我们需要先安装它。在Mac上使用brew,如下所示:或在Linux上用途:
2.)启用IAM OIDC提供程序
EBS CSI驱动程序工作的先决条件是群集具有现有AWS身份和访问管理(IAM)OpenID Connect(OIDC)提供程序。可以使用以下命令启用此IAM OIDC提供程序:
3.)创建Amazon EBS CSI驱动程序IAM角色
eksctl
就绪后,创建IAM角色:正如你所看到的,AWS为我们维护了一个托管策略,我们可以简单地使用(
AWS maintains a managed policy, available at ARN arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy
)。只有当你使用加密的EBS驱动器时,你才需要额外添加配置到策略中。命令...
...部署AWS CloudFormation堆栈,该堆栈创建IAM角色,将IAM策略附加到该角色,并使用IAM角色的Amazon资源名称(ARN)注解现有的ebs-csi-controller-sa服务帐户。
4.)添加Amazon EBS CSI加载项
现在我们终于可以添加EBS CSI插件了。因此,我们还需要AWS帐户ID,可以通过运行
aws sts get-caller-identity --query Account --output text
(参见Quick way to get AWS Account number from the AWS CLI tools?)获得。现在eksctl create addon
命令如下所示:现在,您的PersistentVolumeClaim应该获得状态
Bound
,同时为您创建了EBS卷-Tekton管道应该再次运行。