背景:

海外服务合作方服务器部署在新加坡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,然后点击“下一步”

  • AmazonEC2ContainerRegistryReadOnly
  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_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客户端

  1. 登陆ec2主机

    ssh -i xxx.pem ec2-user@xx.xx.xxx.xx

    image.png
    image.png

  2. 安装kubelet客户端

参照:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/install-kubectl.html

sudo -i
wget --no-check-certificate https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.9/2023-01-11/bin/linux/amd64/kubectl
chmod +x kubelet
cp kubectl /usr/bin/
kubectl version

image.png

  1. 配置aws configure

    aws configure
    aws sts get-caller-identity
    

    image.png
    aws configure 输入 key secret
    image.png

    aws eks --region cn-north-1 update-kubeconfig --name xxxx
    kubectl 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/kubectl
    chmod +x kubectl 
    cp kubectl /usr/bin/
    

    如果出现下图无反应状态,则可以查看一下安全组,放行一下:
    image.png
    查看一下安全组...可以先暂时放开一下
    最终实现如下:
    image.png
    外部访问api server这里可以额外设置,这里默认设置了0.0.0.0/0
    image.png
    初始化搭建集群完成,后续会挂载csi存储,搭建ingress暴露服务


对你无可奈何
40 声望12 粉丝