AWS简单搭建使用EKS二

背景:

紧接AWS简单搭建使用EKS一,eks集群简单搭建完成。需要搭建有状态服务必然就用到了storageclass 存储类,这里用ebs记录以下

AWS简单搭建使用EKS二

存储类选型:

参照官方文档:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#the-storageclass-resource
image.png

关于eks的存储类:

参照:存储类
image.png
个人这里习惯用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,请查看先决条件:
image.png
image.png
这里采用了AWS CLI方式添加:

aws eks describe-cluster \
  --name my-cluster \
  --query "cluster.identity.oidc.issuer" \
  --output text

image.png
输出内容如下:

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内容如下:
image.png
注意箭头指向的关键词的替换!

创建角色
aws iam create-role \
  --role-name AmazonEKS_EBS_CSI_DriverRole \
  --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"

image.png

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

image.png
官方有使用自定义 KMS 密钥进行加密的步骤,不需要忽略:
image.png

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 附加组件

参照:添加 Amazon EBS CSI 附加组件

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

image.png
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

image.png
image.png

/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地域
image.png

kubectl get pods -n kube-system

image.png
eks控制台点开对应集群-插件标签,可以看到多了aws-ebs-csi-driver的插件(插件名称可以自定义)
image.png
这个时候获取storageclass依然是没有的:

[root@ip-10-0-28-172 ~]# kubectl get sc
No resources found

部署示例应用程序并验证 CSI 驱动程序是否正常运行

参照:部署示例应用程序并验证 CSI 驱动程序是否正常运行

  1. Amazon EBS 容器存储接口 (CSI) 驱动程序 GitHub 存储库克隆到您的本地系统。

    git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
  2. 切换到dynamic-provisioning 示例目录

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. 从 manifests 目录部署 ebs-sc 存储类、ebs-claim 持久性卷声明和 app 示例应用程序

    kubectl apply -f manifests/
    kubectl get sc
    kubectl get pods

    image.png

  4. 简单验证查看与验证

image.png

kubectl exec -it app -- cat /data/out.txt

image.png

  1. 删除实例

    cd manifests
    kubectl delete -f pod.yaml
    kubectl delete -f claim.yaml

    关于storageclass

    紧接上文manifests目录下,cat storageclass.yaml,其他配置默认就好,name可以修改成自己新要的名字,这里就默认ebs-sc了。后续有状态服务sc默认名为ebs-sc
    image.png

    kubectl get sc

    image.png
    注意:sc =storageclass


29 声望
9 粉丝
0 条评论
推荐阅读
Ubuntu20.4 docker运行stable diffusion webui
环境前提系统环境ubuntu20.04 {代码...} nvida cuda显卡驱动默认已经安装成功 {代码...} 安装配置dockerupgrade系统更新系统依赖: {代码...} 卸载之前的Docker环境确认是否之前安装过docker并卸载: {代码...} ...

对你无可奈何阅读 84

花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥14阅读 2k

封面图
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...

民工哥7阅读 704

封面图
又一款内存数据库横空出世,比 Redis 更强,性能直接飙升一倍!杀疯了
KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份...

民工哥4阅读 1.7k评论 2

封面图
突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...

张晋涛4阅读 1.2k

封面图
蚂蚁安全科技 Nydus 镜像加速实践
蚂蚁安全科技 Nydus 镜像加速实践原创 曦栖 金融级分布式架构文|蚂蚁集团 ZOLOZ 团队使用全球领先安全科技,为用户和机构提供安全、便捷的安全风控解决方案。本文 6386 字 阅读 12 分钟背景简介ZOLOZ[1]是蚂蚁集...

SOFAStack1阅读 3.8k

封面图
Win10 安装Docker以及Jenkins(超级详细篇)
安装Docker下载地址:[链接] ,按照它的指引教程,无脑下一步即可。安装成功后电脑会重启。打开docker桌面端,会显示进入链接,下载WSL 安装包进行无脑安装即可。安装 Linux 内核更新包 (重启电脑)重启 Docker ...

九旬3阅读 1.1k

29 声望
9 粉丝
宣传栏