首页
搜索 搜索
当前位置:快讯 > 正文

AWS简单搭建使用EKS一

2023-02-15 22:58:52 腾讯云

背景:

海外服务合作方服务器部署在新加坡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

image.png

也可以按照国内两个云商的文档理解:

VPC Virtual Private Cloud(Virtual Private Cloud)户基于xxxx创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、SLB、RDS等。借用国内两家云商的官网文档,大同小异!

image.png
image.png

登录aws控制台

登陆aws控制台,点击左上角Services

image.png

搜索VPC并进入VPC控制台

点击Service-All services 搜索 vpc 。点击进入vpc控制台。

image.png
image.png

创建VPC

VPC控制台面版点击创建VPC:

image.png

VPC设置这里选择VPC等还是很方便的直接选择VPC等,设置自定义VPC名称ipv4 cidr块可以自定义设置,这里就默认10.0.0.0/16,如果有需要多VPC网络互通,防止地址段冲突,进行更详细的划分,可以使用子网划分工具更好的划分设计网络。IPV6 cidr块保持默认未启用。可用区AZ这里设置为3,毕竟多可用区可以更好的容灾高可用。子网设置这里没有启动私有子网private网络,设置了3个public子网跟AZ的数量是一致的

image.png

创建,等待VPC创建完成,查看VPC

image.png
image.png

重要提醒

VPC控制台找到三个对应子网subset操作编辑子网设置

image.png

启动自动分配IP设置,否则EC2无法自动生成绑定公网IP,需要手动创建并绑定EC2!

image.png

注意:是三个public子网都要设置一下,否则无法启用自动分配公网IP.当然也可以用private私网,这里演示都是以public子网演示

创建EKS服务

EKS-Amazon Elastic Kubernetes Service 跟国内的tke ack一样 都是托管的kubernetes服务

image.png

参照:创建 AWS EKS 集群

创建EKS相关IAM 授权

创建 EKS Cluster Role

注意:以下操作可以用一个普通用户操作但是要有角色 策略的相关权限

在 AWS 控制台,选择“IAM”,进入 IAM 界面,选择左边的“角色”,然后在右边点击“创建角色”:

image.png

按照下图红色箭头进行相关操作,进入 选择可信实体页面,依次选择“AWS 服务”, “EKS”,“EKS - Cluster”后,点击“下一步”:

image.png

在添加 权限页面,“AmazonEKSClusterPolicy”已经自动添加,所以可以直接点击“下一步”

image.png

添加 角色 名称“EksClusterRole”后,其他默认,点击“创建角色”:

image.png

创建完成点击角色- EksClusterRole”,查看已绑定AmazonEKSClusterPolicy权限策略:

image.png

说明:此 policy 为 EKS 集群,提供运行必要的权限,比如操作 EC2,自动扩展等等。角色名称可以自定义名称!

创建 EKS Node Role

方法基本与创建 Cluser Role 基本相同,按照下图选项操作:

image.png

在添加权限页面中,依次搜索勾选以下三个 policy,然后点击“下一步”

AmazonEC2ContainerRegistryReadOnlyAmazonEKSWorkerNodePolicyAmazonEKS_CNI_Policy

输入角色名称EKSnoderole创建角色:

image.png

创建完成点击角色- EKSnoderole”,查看已绑定的权限策略如下:

image.png

注意:AmazonEBSCSIDriverPolicy 我也加了进来,EBS绑定目测会需要到的

创建eks集群

进入eks管理控制台

All services 搜索EKS关键词,点击进入EKS管理控制台:

image.png

创建eks集群

创建EKS集群,输入自定义集群名称:

image.png

选择版本1.24(默认)与集群服务角色(EksClusterRole),下一步:

image.png

选择创建的VPC先默认安全组,关于kubernetes的服务的IP地址范围可以自定义(不能与VPC网络重合),这里也直接默认了。选择集群访问方式看自己需求可以公有OR公有和私有,下一步:

image.png

这里配置记录日志先默认不开启了,后续可以修改:

image.png

选择插件,默认就好,下一步

image.png

插件版本选择,默认下一步即可:

image.png

点击创建,创建EKS集群:

image.png
image.png
image.png

EKS 集群创建好之后,本身并没有工作节点 Node,下一步我们添加 NodeGroup。

EKS集群添加Node Group

创建ssh-key密钥

登陆EC2控制台,先创建密钥对,方便ssh登陆管理node节点:

image.png

输入密钥对名称,其他默认即可

image.png

下载密钥对文件到本地,方便以后登陆服务器

eks集群添加NodeGroup主机组

打开eks管理控制台,点击eks 集群 点开计算标签,添加 节点组

image.png

创建节点组:输入节点组名称,选择前面创建的EKSnoderole的IAM角色,点击下一步:

image.png

设置计算和扩展配置这里,只设置了实例类型和磁盘的大小,节点扩缩默认2先不修改:

image.png

点击下一步:

image.png

指定联网 选择subset子网,滑动配置对节点的 SSH 访问权限,开启配置ssh设置:

image.png

点击启用:

image.png

先默认所有,后续修改安全组,点击下一步

image.png

保持默认,点击创建:

image.png

等待node创建就绪:

image.png

等待一分钟左右 node就绪:

image.png

kubectl 不想安装在集群内了分开在下面单独配置 ,设置计算和扩展配置可以作更多ec2的自定义设置。这里简单演示!

配置Kubelet客户端

启动一个ec2实例

登陆ec2控制台,启动一个ec2新实例:

image.png

注意VPC设置,选择个人创建的VPC并搭建了ACK集群的VPC.不同VPC集群默认不能通信的,最后点击启动实例:

image.png

等待实例初始化......

image.png

登陆EC2主机,并配置kubelet客户端

登陆ec2主机ssh -i xxx.pem ec2-user@xx.xx.xxx.xx
image.png
安装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
image.png
配置aws configureaws configureaws sts get-caller-identity
image.png

aws configure 输入 key secret

image.png
aws eks --region cn-north-1 update-kubeconfig --name xxxxkubectl get pods 

出现以下错误:

image.png
image.png

根据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/

如果出现下图无反应状态,则可以查看一下安全组,放行一下:

image.png

查看一下安全组...可以先暂时放开一下

最终实现如下:

image.png

外部访问api server这里可以额外设置,这里默认设置了0.0.0.0/0

image.png

初始化搭建集群完成,后续会挂载csi存储,搭建ingress暴露服务