使用 Amazon EKS(Elastic Kubernetes Service)集群,以便能够轻松管理、部署和扩展应用程序容器。EKS提供了一个高度可扩展、弹性、安全和稳定的Kubernetes控制平面,并自动处理集群的部署、升级和维护。使用EKS集群可以让开发团队专注于构建应用程序,而无需管理底层基础架构的细节。
网络配置
01创建VPC
虚拟私有云 (VPC) 是仅适用于您的 Amazon 账户的虚拟网络。它在逻辑上与 Amazon 云中的其他虚拟网络隔绝。您可以在 VPC 内启动您的 Amazon 资源,例如 Amazon EC2 实例。
https://cn-northwest-1.console.amazonaws.cn/vpc/home 点击此链接进入VPC控制面板,在左边菜单栏中找到“您的VPC”,在“您的VPC”界面点击“创建VPC”按钮。
选择“仅VPC”要创建的资源,填写“Name”和“IPv4 CIDR”,填写内容如下表所示,填写完成后点击“创建VPC”按钮,继而创建VPC完成。
Name | IPv4 CIDR |
VPC-SG-R&I | 172.25.0.0/19 |
创建完成后,编辑 VPC 设置,选择“DHCP”选项集。在DNS设置中,勾选“启用DNS解析”和“启用DNS主机名”,完成后点击“保存”按钮。
02创建子网
子网是您的 VPC 内的 IP 地址范围。您可以在指定子网内启动Amazon资源。对必须连接互联网的资源使用公有子网,而对将不会连接到互联网的资源使用私有子网。
在VPC控制面板的左侧菜单栏中找到“子网”,在子网控制面板中,点击“创建子网”按钮。创建子网所需配置信息如下表所示:
Name | VPC | 可用区 | IPv4 CIDR |
subnet-R&i-public-ECS-A | VPC-SG-R&I | cn-northwest-1a | 172.25.7.0/24 |
subnet-R&i-private-EKS cluster-A | VPC-SG-R&I | cn-northwest-1a | 172.25.0.0/24 |
subnet-R&i-private-EKS cluster-C | VPC-SG-R&I | cn-northwest-1c | 172.25.2.0/24 |
subnet-R&i-private-EKS cluster-B | VPC-SG-R&I | cn-northwest-1b | 172.25.1.0/24 |
在VPC设置中,填写“VPC ID”,就是刚才创建VPC。在子网设置中,填写“子网名称”、“可用区”、“IPv4 CIDR块”,具体信息见上表,此处以“subnet-R&i-public-ECS-A”这个子网为例。
03创建路由器
路由表 包含一组被称为路由的规则,决定了来自您的子网或网关的网络流量将指向何处。
在VPC控制面板的左侧菜单栏中找到“路由表”,在路由表控制面板中,点击“创建路由表”按钮。创建路由表所需配置信息如下表所示:
Name | VPC | 关联子网名称 | 路由 | |
目标 | 目标 | |||
rt-sg-r&i-ecs-cluster | VPC-SG-R&I | subnet-R&i-public-ECS-A | 0.0.0.0/0 | igw-sg-r&i(互联网网关) |
172.25.0.0/19 | local | |||
rt-sg-r&i-EKS-cluster | VPC-SG-R&I | subnet-R&i-private-EKS cluster-A, subnet-R&i-private-EKS cluster-C, subnet-R&i-private-EKS cluster-B | 0.0.0.0/0 | nat-sg-rni(NAT 网关) |
172.25.0.0/19 | local |
在路由表设置中,填写“名称”和“VPC”,具体信息见上表,此处以“rt-sg-r&i-ecs-cluster”这个路由表为例。填写完成后,点击“创建路由表”按钮。
勾选刚创建的路由表,在下面信息栏中找到“子网关联”,点击“编辑子网关联”。
在可用子网配置中,勾选关联子网名称,详情请见上表。填写完成后,点击“保存关联”按钮,完成路由表与子网的关联。
04创建网络接口
弹性网络接口 是 VPC 中表示虚拟网卡的逻辑网络组件。
点击https://cn-northwest-1.console.amazonaws.cn/ec2/v2/home 链接,进入EC2控制面板。在左侧菜单栏中找到“网络接口”。在网络接口界面,点击“创建网络接口”按钮。创建网络接口所需配置信息如下表所示:
子网 | 私有 IPv4 地址 |
subnet-R&i-public-ECS-A | 自动分配 |
在详细信息配置中,填写“子网”,完成后点击“创建网络接口”按钮。
05创建弹性公网IP
弹性 IP 地址是公有 IPv4 地址,可通过 Internet 访问。如果您的实例没有公有 IPv4 地址,则可以将弹性 IP 地址与您的实例关联以启用与 Internet 的通信。例如,这允许您从本地计算机连接到您的实例。
在VPC控制面板的左侧菜单栏中找到“弹性IP”,在弹性IP地址控制面板中,点击“分配弹性IP地址”按钮,即可分配弹性IP。
选中刚创建的弹性IP地址,点击“操作”按钮,在其下拉框中点击“关联弹性IP地址”。
在弹性IP地址配置中,选择“网络接口”,在网络接口处填写刚创建的“网络接口”,填写完成后点击“关联”按钮,完成弹性IP地址与网络接口的关联。
06创建NAT网关
NAT 网关是一种网络地址转换 (NAT) 服务。您可以使用 NAT 网关,以便私有子网中的实例可以连接到 VPC 外部的服务,但外部服务无法启动与这些实例的连接。
在VPC控制面板的左侧菜单栏中找到“NAT 网关”,在NAT 网关控制面板中,点击“创建NAT网关”按钮。创建NAT网关所需配置信息如下表所示:
Name | 子网名称 | 连接类型 |
nat-sg-rni | subnet-R&i-public-ECS-A | 公有 |
在NAT网关设置中,填写“名称”、“子网”,具体信息见上表。连接类型选择“公有”,弹性IP分配ID为刚创建的弹性公网IP,填写完成后,点击“创建NAT网关”按钮。
07创建互联网网关
Internet 网关是一种横向扩展、冗余且高度可用的 VPC 组件,支持在 VPC 和 Internet 之间进行通信。它支持 IPv4 和 IPv6 流量。它不会对您的网络流量造成可用性风险或带宽限制。
借助互联网网关,公有子网中具有公有 IPv4 地址或 IPv6 地址的资源(例如 EC2 实例)可以连接到互联网。同样,互联网上的资源也可以使用公有 IPv4 地址或 IPv6 地址发起到子网中的资源的连接。例如,您可以通过互联网网关,使用本地电脑连接到 Amazon 中的 EC2 实例。
互联网网关为您的 VPC 路由表中可通过互联网路由的流量提供目标。对于使用 IPv4 的通信,互联网网关还会执行网络地址转换 (NAT)。对于使用 IPv6 的通信,不需要 NAT,因为 IPv6 地址是公有的。建立互联网网关并不需要缴纳额外的费用。
在VPC控制面板的左侧菜单栏中找到“互联网网关”,在互联网网关控制面板中,点击“创建互联网网关”按钮。创建互联网网关所需配置信息如下表所示:
Name | 关联VPC名称 |
igw-sg-r&i | VPC-SG-R&I |
在互联网网关设置中,填写Name,具体信息请见上表,填写完成后点击“创建互联网网关”按钮。
选中刚创建的互联网网关,点击“操作”按钮,在其下拉框中点击“附加到VPC”按钮,附加我们创建的VPC。
下图为附加VPC完成后的截图
在路由表控制面板,选中名为“rt-sg-r&i-ecs-cluster”的路由表,点击“编辑路由”按钮。
点击“添加路由”按钮,加上刚创建的互联网网关,具体目标地址按需求来,这里只作为参考。填写完成后,点击“保存更改”。
创建集群服务角色
01创建集群服务角色
点击https://console.amazonaws.cn/iamv2/home?reginotallow=cn-northwest-1#/home 链接进入IAM控制面板,在左侧菜单栏中找到角色,点击“创建角色按钮”,创建角色所需配置信息如下表所示:
角色名称 | 权限策略 |
EKSClusterRole | AmazonEC2ContainerRegistryReadOnly |
AmazonEKSClusterPolicy | |
AmazonEKS_CNI_Policy | |
AmazonEKSWorkerNodePolicy |
选中“亚马逊云科技服务”,在其他亚马逊云科技服务的使用案例中,查找“EKS”,选中“EKS - Cluster”,完成后点击“下一步”按钮。
继续点击“下一步”。
填写“角色名称”,具体信息请见上表。填写完成后,点击“创建角色”,完成EKS集群角色创建。
点击刚创建的角色,进入详细界面。
找到“权限”,点击“添加权限”按钮。
添加入下图所示的权限,具体名称请见上表。
选择完成后,点击“添加权限”按钮,完成角色权限的添加。
02创建集群安全组
在VPC控制面板的左侧菜单栏中找到“安全组”,在安全组控制面板中,点击“创建安全组”按钮。创建安全组所需配置信息如下表所示:
安全组名称 | VPC | 标签(键) | 标签(值) |
eks-cluster-sg-live-k8s | VPC-SG-R&I | Name | eks-cluster-sg-live-k8s |
kubernetes.io/cluster/live-k8s | owned |
在基本详细信息中,填写“安全组名称”、“VPC”、“入站规则”、“出站规则”,具体信息请见上表。填写完成后,点击“创建安全组”按钮,完成安全组的创建。
03创建密钥对
在AMI控制面板的左侧菜单栏中找到“密钥对”,在密钥对控制面板中,点击“创建密钥对”按钮。创建密钥对所需配置信息如下表所示:
名称 | 密钥对类型 | 私钥文件格式 |
AWS_LIVE_SecretKey | RSA | .pem |
在密钥对配置中填写“名称”、“密钥对类型”、“私钥文件格式”,具体信息请见上表。填写完成后点击“创建密钥对”,完成密钥对的创建。
导出该密钥对,用于远程连接。
04创建集群
点击https://cn-northwest-1.console.amazonaws.cn/eks/home 链接进入EKS控制面板创建集群,创建集群所需配置信息如下表所示:
集群名称 | Kubernetes 版本 | 集群服务角色 |
live_k8s | 1.23 | EKSClusterRole |
填写“集群名称”后,点击“下一步”按钮。
在配置集群界面,填写“名称”、“Kubernetes 版本”、“集群服务角色”,具体信息如上表所示。根据下表信息填写“标签”,填写完成后点击“下一步”按钮。
标签 | |
键 | 值 |
Createdby | JIN |
Env | prod |
Name | live-k8s |
Project | live |
在联网配置中,填写“VPC”、“子网”、“安全组”等信息,具体信息及配置如下图、下表所示。
VPC名称 | 子网 | 集群安全组 | 服务的 IPv4 地址范围 | 集群端点访问 |
VPC-SG-R&I | subnet-R&i-private-EKS cluster-A | eks-cluster-sg-live-k8s | 10.100.0.0/16 | 公有和私有 |
subnet-R&i-private-EKS cluster-C | ||||
subnet-R&i-private-EKS cluster-B |
在配置日志记录中,按需求进行配置,我这里暂时不配置日志,直接点击“下一个”按钮。
在选择插件中,选中如下三个插件,点击“下一步”按钮。
在配置选定的插件设置中,直接点击“下一个”按钮。
检查所有配置,都没有问题后,点击“创建”按钮,完成集群创建。
05创建身份供应商
在创建完成后的集群详情界面中,找到“概述”,复制“OpenID Connect 提供商 URL”,用于下面的操作。
在IAM控制台界面的左侧菜单栏中,找到“身份提供商”,点击“添加提供商”按钮。
具体配置信息请见下图和下表所示。要注意“提供商 URL”,即为刚复制的“OpenID Connect 提供商 URL”。
提供商类型 | 提供商 URL | 受众 | 标签 | |
键 | 值 | |||
OpenID Connect | EKS中的OpenID Connect 提供商 URL | sts.amazonaws.com | Createdby | JIN |
Env | prod | |||
Name | live-k8s | |||
Project | live |
06创建计算节点组
在刚创建的EKS详情页中,找到“计算”,点击“创建节点组”按钮。创建节点组所需配置信息如下表所示:
节点组名称 | 节点 IAM 角色 | SSH 密钥对 | 标签 | |
键 | 值 | |||
live-k8s-nodegroup | AWS-EKS-LIVE-NODEGROUP-ROLE | AWS_LIVE_SecretKey | Project | live |
Createdby | JIN | |||
Env | prod | |||
Name | live-k8s |
在配置节点组中,填写“名称”、“节点组IAM角色”、“标签”,具体信息请见上表。填写完成后,点击“下一个”按钮。
在设置计算和扩展配置中,根据下图和下表所示填写信息。填写完成后,点击“下一个”按钮。
AMI 类型 | 容量类型 | 实例类型 | 磁盘大小 |
Amazon Linux 2 (AL2_x86_64) | On-Demand | c5.xlarge | 300GiB |
在指定联网中,选择“配置对节点的SSH访问权限”。
会弹出一个警告,点击“启用”按钮。
根据下图及下表进行配置,配置完成后点击“下一个”按钮。
子网 | SSH 密钥对 |
subnet-R&i-private-EKS cluster-A | AWS_LIVE_SecretKey |
subnet-R&i-private-EKS cluster-C | |
subnet-R&i-private-EKS cluster-B |
检查所有配置,完成后点击“创建”按钮,完成节点组的创建。
大约等待30分钟后,可以看到“计算”页面已经创建了4台节点,并且状态为“已就绪”。
插件的状态也都为活动,则说明节点创建成功。
07创建跳板机
创建角色
创建跳板机EC2的角色,具体配置如下图下表所示。
角色名称 | 权限策略 |
EC2_Full_access | AWSCloud9SSMInstanceProfile |
AWSResourceAccessManagerFullAccess | |
AmazonEC2FullAccess | |
AmazonEKSClusterPolicy | |
AmazonSSMManagedInstanceCore | |
AmazonSSMPatchAssociation | |
CloudWatchFullAccess |
创建安全组
根据下表信息,创建安全组。
安全组名称 | 出站规则 | ||||
live_vpn | 类型 | 协议 | 端口范围 | 源 | 描述 |
SSH | TCP | 22 | x.x.x.x/x | 特定ip | |
所有流量 | 全部 | 全部 | 10.100.0.0/16 | EKS SERVICE | |
所有流量 | 全部 | 全部 | eks-cluster-sg-live-k8s | – | |
入站规则 | |||||
类型 | 协议 | 端口范围 | 目标 | 描述 | |
所有流量IPv4 | 全部 | 全部 | 0.0.0.0/0 | – |
创建弹性IP地址
创建网络接口
创建网络接口,子网为“subnet-R&i-public-ECS-A”,具体操作如下图所示。
为刚创建的网络接口绑定弹性IP地址,具体操作如下图所示。
创建EC2
在EC2控制面板的左侧菜单栏中找到“实例”,在实例控制面板中,点击“启动新实例”按钮。创建新实例所需配置信息如下表所示:
名称 | AMI名称 | 实例类型 | 密钥对名称 | vpc名称 |
LIVE_VPN | amzn2-ami-kernel-5.10-hvm-2.0.20221004.0-x86_64-gp2 | c5.xlarge | AWS_LIVE_SecretKey | VPC-SG-R&I |
子网名称 | 安全组 | IAM | 存储大小 | 存储类型 |
subnet-R&i-public-ECS-A | live_vpn | EC2_Full_access | 100 GiB | gp3 |
填写名称,点击“浏览其他AMI”按钮,选择我们需要的AMI。
在输入框中,填写我们需要的AMI,点击“社区AMI(1)”,选中该AMI。
选择我们需要的“实例类型”和“密钥对”。
如下图所示,进行网络配置。
点开“高级网络配置”,在“网络接口”处选择我们刚创建的网络接口。
根据需求配置存储。
选中刚创建的角色,完成配置后,点击“启动实例”按钮,完成EC2的创建。
创建完成后,如下图所示。
安装必要软件
在跳板机EC2中运行下面的命令,安装必要的软件。
生成kubeconfig
为当前管理用户,创建访问密钥。
在跳板机EC2中配置aws-cli ~/.aws/config。
执行下面命令查看配置。
执行下面命令,生成kubeconf。
小结
至此,AWS创建EKS集群完成,且可以远程登录跳板机,并使用跳板机连接EKS集群。