概览
如果您已有 AWS Elastic Block Store (EBS)
卷要导入到 GKE on AWS 中,则可以创建 PersistentVolume (PV) 对象并将其预留用于特定的 PersistentVolumeClaim (PVC)。
本页面介绍如何使用填充了数据的现有 EBS 卷来创建 PV,以及如何在 pod 中使用 PV。
准备工作
在完成以下步骤之前,您必须:
- 创建 GKE on AWS 集群并使用
kubectl
配置针对它的访问权限。 - 连接到您的集群并进行身份验证
使用加密的 EBS 卷
如果您的 EBS 卷是使用 AWS Key Management Service (KMS) 加密的,则需要授予 GKE on AWS 控制平面 AWS IAM 角色对 KMS 密钥的访问权限。
如需向控制平面角色授予对密钥的访问权限,请执行以下操作:
找到集群的控制平面角色的名称。
选择用于加密 EBS 卷的 AWS KMS 密钥,并按照允许密钥用户使用 KMS 密钥中的说明将控制层面角色添加为密钥用户。
为预先存在的 EBS 卷创建 PersistentVolume
您可以通过指定新的 PV 并将其添加到集群来导入现有 EBS 卷。
将以下 YAML 复制到名为
existing-volume.yaml
的文件中:apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: VOLUME_CAPACITY accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: STORAGE_CLASS_NAME claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: EBS_VOLUME_ID fsType: FILE_SYSTEM_TYPE nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - ZONE
Replace the following:
将 YAML 应用到您的集群
kubectl apply -f existing-volume.yaml
确认已创建 PV
kubectl describe pv volume-name
此命令的输出内容中包含 PV 的状态。
将卷与 PersistentVolumeClaim 和 pod 一起使用
导入卷后,您可以创建一个 PVC 和一个挂接该 PVC 的 pod。
下面的 YAML 会创建一个 PVC 并将其挂接到运行 Nginx Web 服务器的 pod。将其复制到名为
nginx.yaml
的文件中:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: STORAGE_CLASS_NAME volumeName: VOLUME_NAME accessModes: - ReadWriteOnce resources: requests: storage: VOLUME_CAPACITY --- apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: web-server image: nginx volumeMounts: - mountPath: /var/lib/www/html name: data volumes: - name: data persistentVolumeClaim: claimName: PVC_NAME
替换以下内容:
STORAGE_CLASS
:您之前创建的 PersistentVolume 中的 StorageClass 名称,例如standard-rwo
。VOLUME_NAME
VOLUME_CAPACITY
PVC_NAME
:PVC 的名称,例如my-pvc
。
将 YAML 应用到您的集群
kubectl apply -f nginx.yaml
使用
kubectl describe
检查 Nginx 实例的状态。输出的STATUS
应为Running
。kubectl describe pod web-server
后续步骤
- 将其他存储驱动程序与 GKE on AWS 搭配使用。