AWS简单搭建使用EKS二
背景:
紧接AWS简单搭建使用EKS一,eks集群简单搭建完成。需要搭建有状态服务必然就用到了storageclass 存储类,这里用ebs记录以下
AWS简单搭建使用EKS二
存储类选型:
参照官方文档:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#the-storageclass-resource
关于eks的存储类:
参照:存储类
个人这里习惯用EBS块存储!
使用 AWS CLI 创建 Amazon EBS CSI 插件 IAM 角色
参照:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/csi-iam-role.html
查看集群的 OIDC 提供商 URL
查看集群的 OIDC 提供商 URL,将 my-cluster 替换为您的集群名称。如果命令的输出为 None,请查看先决条件:
这里采用了AWS CLI方式添加:
aws eks describe-cluster \
--name my-cluster \
--query "cluster.identity.oidc.issuer" \
--output text
输出内容如下:
https://oidc.eks.cn-north-1.amazonaws.com.cn/id/xxxxxxxxx
注意: url中的 加粗黑体的关键词 https://oidc.eks.cn-north-1.amazonaws.com.cn/id/xxxxxxxxx
创建 IAM 角色
生成aws-ebs-csi-driver-trust-policy.json
将以下内容复制到名为** _aws-ebs-csi-driver-trust-policy_.json 的文件中。请将 _111122223333_ 替换为您的账户 ID,将 _region-code_ 替换为您的 AWS 区域,并将 _EXAMPLED539D4633E53DE1B71EXAMPLE**_ 替换为上一步骤中返回的值。如果您的集群位于 AWS GovCloud(美国东部)或 AWS GovCloud(美国西部)AWS 区域,则将 arn:aws: 替换为 arn:aws-us-gov:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com",
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
}
}
}
]
}
由于实例在中国区我的json内容如下:
注意箭头指向的关键词的替换!
创建角色
aws iam create-role \
--role-name AmazonEKS_EBS_CSI_DriverRole \
--assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
AWS 托管策略附加到角色
注意arn:aws 地域区分 arn:aws-cn
aws iam attach-role-policy \
--policy-arn arn:aws-cn:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
--role-name AmazonEKS_EBS_CSI_DriverRole
官方有使用自定义 KMS 密钥进行加密的步骤,不需要忽略:
kubectl annotate serviceaccount ebs-csi-controller-sa \
-n kube-system \
eks.amazonaws.com/role-arn=arn:aws-cn:iam::xxxxxxxx:role/AmazonEKS_EBS_CSI_DriverRole
注:这个不用执行的其实有问题了在说
管理 Amazon EKS 附加组件
aws eks create-addon --cluster-name xxxx --addon-name aws-ebs-csi-driver \
--service-account-role-arn arn:aws:iam::xxxx:role/AmazonEKS_EBS_CSI_DriverRole
aws cli版本有问题貌似?参照https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html更新aws cli 到V2
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
/usr/local/bin/aws eks create-addon --cluster-name xxxx --addon-name aws-ebs-csi-driver --service-account-role-arn arn:aws-cn:iam::xxxx:role/AmazonEKS_EBS_CSI_DriverRole
注意arn:aws-cn地域
kubectl get pods -n kube-system
eks控制台点开对应集群-插件标签,可以看到多了aws-ebs-csi-driver的插件(插件名称可以自定义)
这个时候获取storageclass依然是没有的:
[root@ip-10-0-28-172 ~]# kubectl get sc
No resources found
部署示例应用程序并验证 CSI 驱动程序是否正常运行
- 将 Amazon EBS 容器存储接口 (CSI) 驱动程序 GitHub 存储库克隆到您的本地系统。git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
- 切换到dynamic-provisioning 示例目录cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
- 从 manifests 目录部署 ebs-sc 存储类、ebs-claim 持久性卷声明和 app 示例应用程序kubectl apply -f manifests/ kubectl get sc kubectl get pods
- 简单验证查看与验证
kubectl exec -it app -- cat /data/out.txt
- 删除实例cd manifests kubectl delete -f pod.yaml kubectl delete -f claim.yaml关于storageclass紧接上文manifests目录下,cat storageclass.yaml,其他配置默认就好,name可以修改成自己新要的名字,这里就默认ebs-sc了。后续有状态服务sc默认名为ebs-sc
kubectl get sc
注意:sc =storageclass
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- 基于 Apache Hudi + Presto + AWS S3 构建开放Lakehouse
- 飞总带大家解读 AWS re:Invent 2022大数据相关的发布,一句话总结:惨不忍睹。。。
- 终于卷不动了,AWS家的交换机要用6年!
- Linux使用root用户登录(AWS EC2)
- AWS回应Elastic修改开源协议:创建“真正”开源的Elasticsearch分支
- MySQL Error number: MY-011431; Symbol: ER_KEYRING_AWS_FAILED_TO_GENERATE_KEY_DUE_TO_INTERNAL_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- Oracle 视图 DBA_AWS 官方解释,作用,如何使用详细说明
- cloudwatch在AWS上构建弹性架构:EC2、Redis与Cloudwatch(ec2redis)
- 长达三周的亚马逊 re:Invent,CEO 披露了 AWS 业务现状并“疯狂”输出 27 款新发布
- Google打造云中Hadoop便捷版 强势对抗AWS
- 头号玩家AWS意外落败!微软获100亿美元云服务超级大单
- 一审败诉,亚马逊判赔 7646 万元,不可使用AWS 名称
- 收割市场?AWS 将联手电子病历巨头布局医疗数据分析
- 亚马逊AWS机器学习总监Alex Smola:如何用MXNet构建可拓展的深度学习框架?|AAAI 2017
- 深入研究AWS如何调用MySQL(aws调用mysql)
- AWS搜索 进入MySQL引擎的新时代(aws搜索MySQL引擎)
- 使用AWS管理MySQL,了解相关费用支出(aws mysql 费用)
- 云之上,MySQL进阶之路(aws mysql 升级)
- AWS MySQL服务价格深度剖析(aws mysql 价格)
- 在AWS上搭建MySQL数据库系统的中文化指南(aws mysql 中文)
- 云上极致AWS支持Oracle创造无限可能(aws支持oracle)
- 深入探索AWS与Oracle的强强合作(aws与oracle)
- 探索Oracle云和AWS的全新世界(oracle云和aws)
- AWS F1 正式上线,深度解析 FPGA 与公有云的亲密接触