AWS简单搭建使用EKS一
背景:
海外服务合作方服务器部署在新加坡AWS,然后就顺便使用了一下AWS上面的各项服务。最近要给合作方写交付文档,就顺便写一下相关服务的简单使用,并没有太深入,因为所有环境搭建基本都是速成流程,小公司说上就上,没有时间深入研究积累,且主要服务环境都运行在国外腾讯云and阿里云。下面是一些流程的演示!
(资料图)
注意:演示流程搭建在aws北京区,故很多arn:aws-cn会,请注意各项区别!以下操作区域都默认为北京。在个人各项操作中请确认操作区域!
从VPC开始
注: 如果已有VPC并且vpc符合使用需求可以忽略这一步。
关于VPC
aws官方文档:https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html
也可以按照国内两个云商的文档理解:
VPC Virtual Private Cloud(Virtual Private Cloud)户基于xxxx创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、SLB、RDS等。借用国内两家云商的官网文档,大同小异!
登录aws控制台
登陆aws控制台,点击左上角Services
搜索VPC并进入VPC控制台
点击Service-All services 搜索 vpc 。点击进入vpc控制台。
创建VPC
VPC控制台面版点击创建VPC:
VPC设置这里选择VPC等还是很方便的直接选择VPC等,设置自定义VPC名称,ipv4 cidr块可以自定义设置,这里就默认10.0.0.0/16,如果有需要多VPC网络互通,防止地址段冲突,进行更详细的划分,可以使用子网划分工具更好的划分设计网络。IPV6 cidr块保持默认未启用。可用区AZ这里设置为3,毕竟多可用区可以更好的容灾高可用。子网设置这里没有启动私有子网private网络,设置了3个public子网跟AZ的数量是一致的
创建,等待VPC创建完成,查看VPC
重要提醒
VPC控制台找到三个对应子网subset操作编辑子网设置:
启动自动分配IP设置,否则EC2无法自动生成绑定公网IP,需要手动创建并绑定EC2!
注意:是三个public子网都要设置一下,否则无法启用自动分配公网IP.当然也可以用private私网,这里演示都是以public子网演示
创建EKS服务
EKS-Amazon Elastic Kubernetes Service 跟国内的tke ack一样 都是托管的kubernetes服务
参照:创建 AWS EKS 集群
创建EKS相关IAM 授权
创建 EKS Cluster Role
注意:以下操作可以用一个普通用户操作但是要有角色 策略的相关权限
在 AWS 控制台,选择“IAM”,进入 IAM 界面,选择左边的“角色”,然后在右边点击“创建角色”:
按照下图红色箭头进行相关操作,进入 选择可信实体页面,依次选择“AWS 服务”, “EKS”,“EKS - Cluster”后,点击“下一步”:
在添加 权限页面,“AmazonEKSClusterPolicy”已经自动添加,所以可以直接点击“下一步”
添加 角色 名称“EksClusterRole”后,其他默认,点击“创建角色”:
创建完成点击角色- EksClusterRole”,查看已绑定AmazonEKSClusterPolicy权限策略:
说明:此 policy 为 EKS 集群,提供运行必要的权限,比如操作 EC2,自动扩展等等。角色名称可以自定义名称!
创建 EKS Node Role
方法基本与创建 Cluser Role 基本相同,按照下图选项操作:
在添加权限页面中,依次搜索勾选以下三个 policy,然后点击“下一步”
AmazonEC2ContainerRegistryReadOnlyAmazonEKSWorkerNodePolicyAmazonEKS_CNI_Policy输入角色名称EKSnoderole创建角色:
创建完成点击角色- EKSnoderole”,查看已绑定的权限策略如下:
注意:AmazonEBSCSIDriverPolicy 我也加了进来,EBS绑定目测会需要到的
创建eks集群
进入eks管理控制台
All services 搜索EKS关键词,点击进入EKS管理控制台:
创建eks集群
创建EKS集群,输入自定义集群名称:
选择版本1.24(默认)与集群服务角色(EksClusterRole),下一步:
选择创建的VPC先默认安全组,关于kubernetes的服务的IP地址范围可以自定义(不能与VPC网络重合),这里也直接默认了。选择集群访问方式看自己需求可以公有OR公有和私有,下一步:
这里配置记录日志先默认不开启了,后续可以修改:
选择插件,默认就好,下一步
插件版本选择,默认下一步即可:
点击创建,创建EKS集群:
EKS 集群创建好之后,本身并没有工作节点 Node,下一步我们添加 NodeGroup。
EKS集群添加Node Group
创建ssh-key密钥
登陆EC2控制台,先创建密钥对,方便ssh登陆管理node节点:
输入密钥对名称,其他默认即可
下载密钥对文件到本地,方便以后登陆服务器
eks集群添加NodeGroup主机组
打开eks管理控制台,点击eks 集群 点开计算标签,添加 节点组
创建节点组:输入节点组名称,选择前面创建的EKSnoderole的IAM角色,点击下一步:
设置计算和扩展配置这里,只设置了实例类型和磁盘的大小,节点扩缩默认2先不修改:
点击下一步:
指定联网 选择subset子网,滑动配置对节点的 SSH 访问权限,开启配置ssh设置:
点击启用:
先默认所有,后续修改安全组,点击下一步
保持默认,点击创建:
等待node创建就绪:
等待一分钟左右 node就绪:
kubectl 不想安装在集群内了分开在下面单独配置 ,设置计算和扩展配置可以作更多ec2的自定义设置。这里简单演示!
配置Kubelet客户端
启动一个ec2实例
登陆ec2控制台,启动一个ec2新实例:
注意VPC设置,选择个人创建的VPC并搭建了ACK集群的VPC.不同VPC集群默认不能通信的,最后点击启动实例:
等待实例初始化......
登陆EC2主机,并配置kubelet客户端
登陆ec2主机ssh -i xxx.pem ec2-user@xx.xx.xxx.xx安装kubelet客户端参照:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/install-kubectl.html
sudo -iwget --no-check-certificate https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.9/2023-01-11/bin/linux/amd64/kubectlchmod +x kubeletcp kubectl /usr/bin/kubectl version
配置aws configureaws configureaws sts get-caller-identityaws configure 输入 key secret
aws eks --region cn-north-1 update-kubeconfig --name xxxxkubectl get pods
出现以下错误:
根据https://github.com/aws/aws-cli/issues/6920更换kubelet版本:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.6/bin/linux/amd64/kubectlchmod +x kubectl cp kubectl /usr/bin/
如果出现下图无反应状态,则可以查看一下安全组,放行一下:
查看一下安全组...可以先暂时放开一下
最终实现如下:
外部访问api server这里可以额外设置,这里默认设置了0.0.0.0/0
初始化搭建集群完成,后续会挂载csi存储,搭建ingress暴露服务