聊聊如何用AWS创建EKS集群

频道:行业资讯 日期: 浏览:132
使用?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中运行下面的命令,安装必要的软件。

复制

## Installing pip

if ! hash python pip unzip jq yq &> /dev/null; then

if [ -f /usr/bin/yum ]; then sudo yum -y -q install python-pip unzip jq && sudo pip install yq; fi

if [ -f /usr/bin/apt ]; then sudo apt update && sudo apt install --yes python-pip unzip jq && sudo pip install yq; fi

fi

## Installing awscli

if ! command -v aws &> /dev/null; then

curl --silent --location "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip -q awscliv2.zip

sudo ./aws/install --update

rm -fr awscliv2* aws*/

fi

## Installing eksctl

if ! command -v eksctl &> /dev/null; then

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

sudo mv /tmp/eksctl /usr/local/bin

source <(eksctl completion bash) 2>/dev/null

fi

## Installing aws-iam-authenticator

if ! command -v aws-iam-authenticator &> /dev/null; then

curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.23.7/2022-06-29/bin/linux/amd64/aws-iam-authenticator

chmod +x ./aws-iam-authenticator

mkdir -p $HOME/.bin && mv ./aws-iam-authenticator $HOME/.bin/aws-iam-authenticator && export PATH=$HOME/.bin:$PATH

echo 'export PATH=$HOME/.bin:$PATH' >> ~/.bashrc

fi

## Installaing kubectl

if ! command -v kubectl &> /dev/null; then

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.23.7/2022-06-29/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

生成kubeconfig

为当前管理用户,创建访问密钥。

在跳板机EC2中配置aws-cli ~/.aws/config。

复制

aws configure

AWS Access Key ID [None]: #这里填写AK

AWS Secret Access Key [None]: #这里填写SK

Default region name [None]: cn-northwest-1 #填写地域

Default output format [None]: json

1.

2.

3.

4.

5.

执行下面命令查看配置。

复制

aws sts get-caller-identity

1.

执行下面命令,生成kubeconf。

复制

aws eks --region cn-northwest-1 update-kubeconfig --name live_k8s

1.

小结

至此,AWS创建EKS集群完成,且可以远程登录跳板机,并使用跳板机连接EKS集群。

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。