创建S3存储桶
# 创建s3存储桶 aws s3 mb s3://raymond-eks-s3 --region us-east-1
配置S3策略文件
# 生成策略文件
cat > s3_iam_policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MountpointFullBucketAccess",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::raymond-eks-s3"
]
},
{
"Sid": "MountpointFullObjectAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::raymond-eks-s3/*"
]
}
]
}
EOF
# 创建策略
aws iam create-policy \
--policy-name AmazonS3CSIDriverPolicy_raymond_eks \
--policy-document file://s3_iam_policy.json
S3插件安装
# eksctl创建s3的role
CLUSTER_NAME=my-cluster
REGION=us-east-1
ROLE_NAME=AmazonEKS_S3_CSI_DriverRole_raymond_eks
POLICY_ARN=arn:aws:iam::917958955567:policy/AmazonS3CSIDriverPolicy
eksctl create iamserviceaccount \
--name s3-csi-driver-sa \
--namespace kube-system \
--cluster $CLUSTER_NAME \
--attach-policy-arn $POLICY_ARN \
--approve \
--role-name $ROLE_NAME \
--region $REGION
# 创建驱动s3插件
eksctl create addon --name aws-mountpoint-s3-csi-driver \
--cluster $CLUSTER_NAME \
--service-account-role-arn arn:aws:iam::917958955567:role/AmazonEKS_S3_CSI_DriverRole_raymond_eks
--force \
--region us-east-1
# 删除命令
eksctl delete addon --cluster raymond-eks \
--name aws-mountpoint-s3-csi-driver \
--preserve \
--region us-east-1
测试demo
# 配置pv和pvc的yaml
cat > pv-pvc.yaml <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: s3-pv
spec:
capacity:
storage: 1200Gi # ignored, required
accessModes:
- ReadWriteMany # supported options: ReadWriteMany / ReadOnlyMany
mountOptions:
- allow-delete
- region us-east-1 #必要: 指定你的区域
csi:
driver: s3.csi.aws.com # required
volumeHandle: s3-csi-driver-volume
volumeAttributes:
bucketName: raymond-eks-s3 #必要: 指定你创建s3存储桶的名字
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: s3-claim
spec:
accessModes:
- ReadWriteMany # supported options: ReadWriteMany / ReadOnlyMany
storageClassName: "" # required for static provisioning
resources:
requests:
storage: 1200Gi # ignored, required
volumeName: s3-pv
EOF
cat << 'EOF' > pod.yaml
---
apiVersion: v1
kind: Pod
metadata:
name: s3-app
spec:
containers:
- name: app
image: centos
command: ["/bin/sh"]
args: ["-c", "echo 'Hello from the container!' >> /data/$(date -u).txt; tail -f /dev/null"]
volumeMounts:
- name: persistent-storage
mountPath: /data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: s3-claim
EOF
自我判定
# | 判定描述 | 自我判定(是/否) |
|---|---|---|
| 1 | 在各搜索引擎中是否能找到知识信息(包括但不限于Google、百度、Bing) | 是 |
| 2 | 是否需要代码集成开发 | 否 |