AWS创建EKS集群

63bd0773058b094b5db1ce8dd9ff36cb.gif

新钛云服已累计为您分享738篇技术干货

c17df4edd543d868011a4c5dbab33f2b.gif

使用 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”按钮。

aab84582ac0b8d20ac3a7fe17d65bb40.png

选择“仅VPC”要创建的资源,填写“Name”和“IPv4 CIDR”,填写内容如下表所示,填写完成后点击“创建VPC”按钮,继而创建VPC完成。

Name

IPv4 CIDR

VPC-SG-R&I

172.25.0.0/19

e201c31def58cdd3eebf01e55db4a3ae.png

创建完成后,编辑 VPC 设置,选择“DHCP”选项集。在DNS设置中,勾选“启用DNS解析”和“启用DNS主机名”,完成后点击“保存”按钮。

dc8b4f3f7ee71cbfbd7ea82cc1dd36df.png

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

035c02ad9bf538f5f8af7d17a3fc7d9b.png

在VPC设置中,填写“VPC ID”,就是刚才创建VPC。在子网设置中,填写“子网名称”、“可用区”、“IPv4 CIDR块”,具体信息见上表,此处以“subnet-R&i-public-ECS-A”这个子网为例。

5b0c5fe21527c0f8548e5f894cdd2db8.png

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

933aecddee012a20da0ce846ebcce696.png

在路由表设置中,填写“名称”和“VPC”,具体信息见上表,此处以“rt-sg-r&i-ecs-cluster”这个路由表为例。填写完成后,点击“创建路由表”按钮。

faec181129790a619741e20e8c6cf96e.png

勾选刚创建的路由表,在下面信息栏中找到“子网关联”,点击“编辑子网关联”。

4ffc40f22faa0065cdd9bba08fb89ea6.png

在可用子网配置中,勾选关联子网名称,详情请见上表。填写完成后,点击“保存关联”按钮,完成路由表与子网的关联。

abe42c66175c6b4d411a6c97b0bfd131.png

04

创建网络接口

弹性网络接口 是 VPC 中表示虚拟网卡的逻辑网络组件。

点击https://cn-northwest-1.console.amazonaws.cn/ec2/v2/home 链接,进入EC2控制面板。在左侧菜单栏中找到“网络接口”。在网络接口界面,点击“创建网络接口”按钮。创建网络接口所需配置信息如下表所示:

子网

私有 IPv4 地址

subnet-R&i-public-ECS-A

自动分配

e43873dd7e7660df8bfa4615f97e364e.png

在详细信息配置中,填写“子网”,完成后点击“创建网络接口”按钮。

8eabbf11ed3dd3b92ab554c4c94d513e.png

05

创建弹性公网IP

弹性 IP 地址是公有 IPv4 地址,可通过 Internet 访问。如果您的实例没有公有 IPv4 地址,则可以将弹性 IP 地址与您的实例关联以启用与 Internet 的通信。例如,这允许您从本地计算机连接到您的实例。

在VPC控制面板的左侧菜单栏中找到“弹性IP”,在弹性IP地址控制面板中,点击“分配弹性IP地址”按钮,即可分配弹性IP。

34c3a308e515a97620312cab5a953f31.png

选中刚创建的弹性IP地址,点击“操作”按钮,在其下拉框中点击“关联弹性IP地址”。

bdb9ee5ba676ef340dbac431f8b71b47.png

在弹性IP地址配置中,选择“网络接口”,在网络接口处填写刚创建的“网络接口”,填写完成后点击“关联”按钮,完成弹性IP地址与网络接口的关联。

1673634a06fc517e02a6dc631dbca70b.png

06

创建NAT网关

NAT 网关是一种网络地址转换 (NAT) 服务。您可以使用 NAT 网关,以便私有子网中的实例可以连接到 VPC 外部的服务,但外部服务无法启动与这些实例的连接。

在VPC控制面板的左侧菜单栏中找到“NAT 网关”,在NAT 网关控制面板中,点击“创建NAT网关”按钮。创建NAT网关所需配置信息如下表所示:

Name

子网名称

连接类型

nat-sg-rni

subnet-R&i-public-ECS-A

公有

d059f2c0fc5cc324becaab2427bce6a0.png

在NAT网关设置中,填写“名称”、“子网”,具体信息见上表。连接类型选择“公有”,弹性IP分配ID为刚创建的弹性公网IP,填写完成后,点击“创建NAT网关”按钮。

85a76241cf1b80b11c33f85e8dd7cf29.png

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

9451687a34ce6b80193dec6b7dd140cb.png

在互联网网关设置中,填写Name,具体信息请见上表,填写完成后点击“创建互联网网关”按钮。

4fb5d4c319e895ecfb9239e040801104.png

选中刚创建的互联网网关,点击“操作”按钮,在其下拉框中点击“附加到VPC”按钮,附加我们创建的VPC。

75c26bcd5891e0df873c01f7c3844382.png

下图为附加VPC完成后的截图

4377e86d622265893c23f089487e019d.png

在路由表控制面板,选中名为“rt-sg-r&i-ecs-cluster”的路由表,点击“编辑路由”按钮。

385c22a9457a6c1c69ddb8c63d3009ba.png

点击“添加路由”按钮,加上刚创建的互联网网关,具体目标地址按需求来,这里只作为参考。填写完成后,点击“保存更改”。

9917b581137f31bb728b6deb08b538d4.png

创建集群服务角色

01

创建集群服务角色

点击https://console.amazonaws.cn/iamv2/home?region=cn-northwest-1#/home 链接进入IAM控制面板,在左侧菜单栏中找到角色,点击“创建角色按钮”,创建角色所需配置信息如下表所示:

角色名称

权限策略

EKSClusterRole

AmazonEC2ContainerRegistryReadOnly

AmazonEKSClusterPolicy

AmazonEKS_CNI_Policy

AmazonEKSWorkerNodePolicy

598a59eec5bbd03a617d89a7dac2f29b.png

选中“亚马逊云科技服务”,在其他亚马逊云科技服务的使用案例中,查找“EKS”,选中“EKS - Cluster”,完成后点击“下一步”按钮。

7769864de75aa6fb335c501fc7168fc9.png

继续点击“下一步”。

b089edb4db1bac36b3d117d98a43a7a6.png

填写“角色名称”,具体信息请见上表。填写完成后,点击“创建角色”,完成EKS集群角色创建。

f292f77236fe9d000245918877ff2378.png

点击刚创建的角色,进入详细界面。

d65a3830ea408f394952cf59b5dd8625.png

找到“权限”,点击“添加权限”按钮。

9fd544e51b062d82bbdafbaaec0d982b.png

添加入下图所示的权限,具体名称请见上表。

3d4e4beea1b837fe51d8c870877d6baf.png

选择完成后,点击“添加权限”按钮,完成角色权限的添加。

f697f3cbe77f9c388bbbbd4692a12f1a.png

02

创建集群安全组

在VPC控制面板的左侧菜单栏中找到“安全组”,在安全组控制面板中,点击“创建安全组”按钮。创建安全组所需配置信息如下表所示:

安全组名称

VPC

标签(键)

标签(值)

eks-cluster-sg-live-k8s

VPC-SG-R&I

Name

eks-cluster-sg-live-k8s

kubernetes.io/cluster/live-k8s

owned

fc3f018a2f5e9e1c31bfbfde0ffd3b17.png

在基本详细信息中,填写“安全组名称”、“VPC”、“入站规则”、“出站规则”,具体信息请见上表。填写完成后,点击“创建安全组”按钮,完成安全组的创建。

814b13870d1d9dcb13778324ec3460d6.png

03

创建密钥对

在AMI控制面板的左侧菜单栏中找到“密钥对”,在密钥对控制面板中,点击“创建密钥对”按钮。创建密钥对所需配置信息如下表所示:

名称

密钥对类型

私钥文件格式

AWS_LIVE_SecretKey

RSA

.pem

356d0b97e5e042bf04071000764b5e75.png

在密钥对配置中填写“名称”、“密钥对类型”、“私钥文件格式”,具体信息请见上表。填写完成后点击“创建密钥对”,完成密钥对的创建。

52a454abd46021ae6dc606d6c85204bd.png

导出该密钥对,用于远程连接。

894fddc0fe4a6cf70368352e30182e8b.png

04

创建集群

点击https://cn-northwest-1.console.amazonaws.cn/eks/home 链接进入EKS控制面板创建集群,创建集群所需配置信息如下表所示:

集群名称

Kubernetes 版本

集群服务角色

live_k8s

1.23

EKSClusterRole

填写“集群名称”后,点击“下一步”按钮。

17d2493b4805db8544bbd962a9b22d51.png

在配置集群界面,填写“名称”、“Kubernetes 版本”、“集群服务角色”,具体信息如上表所示。根据下表信息填写“标签”,填写完成后点击“下一步”按钮。

标签

Createdby

JIN

Env

prod

Name

live-k8s

Project

live

fa1297714ee1b86ce9a26d961af6382e.png

在联网配置中,填写“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

1d6f6e45cd7f380e680d5d4d2e1e163d.png

在配置日志记录中,按需求进行配置,我这里暂时不配置日志,直接点击“下一个”按钮。

2099b122082c2986f3c5f7b163eb3615.png

在选择插件中,选中如下三个插件,点击“下一步”按钮。

7e6f53d837c6f3efd70d49e901c7a626.png

在配置选定的插件设置中,直接点击“下一个”按钮。

5b51fa41ba58dbd8932420f7636292de.png

检查所有配置,都没有问题后,点击“创建”按钮,完成集群创建。

0ea8fdda2ee8814915b6148cf8de5440.png

05

创建身份供应商

在创建完成后的集群详情界面中,找到“概述”,复制“OpenID Connect 提供商 URL”,用于下面的操作。

05899ab145690a27e1381b114ee78416.png

在IAM控制台界面的左侧菜单栏中,找到“身份提供商”,点击“添加提供商”按钮。

327fa4b1da3ddc96f5e024e6ab0be263.png

具体配置信息请见下图和下表所示。要注意“提供商 URL”,即为刚复制的“OpenID Connect 提供商 URL”。

提供商类型

提供商 URL

受众

标签

OpenID Connect

EKS中的OpenID Connect 提供商 URL

sts.amazonaws.com

Createdby

JIN

Env

prod

Name

live-k8s

Project

live


196baa9fc50406c5326f5fc7f19c9236.png

06

创建计算节点组

在刚创建的EKS详情页中,找到“计算”,点击“创建节点组”按钮。创建节点组所需配置信息如下表所示:

节点组名称

节点 IAM 角色

SSH 密钥对

标签

live-k8s-nodegroup

AWS-EKS-LIVE-NODEGROUP-ROLE

AWS_LIVE_SecretKey

Project

live

Createdby

JIN

Env

prod

Name

live-k8s

a55491d75f3eaa9369ed407b561e8fd8.png

在配置节点组中,填写“名称”、“节点组IAM角色”、“标签”,具体信息请见上表。填写完成后,点击“下一个”按钮。

27c2ef0742ea42483326de1fd1ce0591.png

在设置计算和扩展配置中,根据下图和下表所示填写信息。填写完成后,点击“下一个”按钮。

AMI 类型

容量类型

实例类型

磁盘大小

Amazon Linux 2 (AL2_x86_64)

On-Demand

c5.xlarge

300GiB

35295071fc6bab803234689df479dd94.png

在指定联网中,选择“配置对节点的SSH访问权限”。

73f1741fc8b19743673ba83e99328d06.png

会弹出一个警告,点击“启用”按钮。

54ba31e44c9005c77d8604416e548e93.png

根据下图及下表进行配置,配置完成后点击“下一个”按钮。

子网

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

9dbb7e93521cfa22c57aa705a0dffaeb.png

检查所有配置,完成后点击“创建”按钮,完成节点组的创建。

2aad4b39cde2f1705f72274fb8564fcd.png

大约等待30分钟后,可以看到“计算”页面已经创建了4台节点,并且状态为“已就绪”。

c0bf35e6844c556fde8873462a81d3d7.png

插件的状态也都为活动,则说明节点创建成功。

9e4331b43e266585355e8e08484208c0.png

07

创建跳板机

  1. 创建角色

创建跳板机EC2的角色,具体配置如下图下表所示。

角色名称

权限策略

EC2_Full_access

AWSCloud9SSMInstanceProfile

AWSResourceAccessManagerFullAccess

AmazonEC2FullAccess

AmazonEKSClusterPolicy

AmazonSSMManagedInstanceCore

AmazonSSMPatchAssociation

CloudWatchFullAccess

0f08887e1dcb0156b623bd8069cd8c60.png

  1. 创建安全组

根据下表信息,创建安全组。

安全组名称

出站规则

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

  1. 创建弹性IP地址

f61eb1e7e59a2df8f7ee3de702df0a29.png

  1. 创建网络接口

创建网络接口,子网为“subnet-R&i-public-ECS-A”,具体操作如下图所示。

ecf6f6db1651598cdbe8708b36ff5f14.png

ff014aaa1b3886fa71a0e5fd61c3bdae.png

为刚创建的网络接口绑定弹性IP地址,具体操作如下图所示。

7b981f0a7ff230ee73829e15238db602.png

63737f4f54b29833055aea378a79a237.png

  1. 创建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

38d5e49cb9fb8f7d785a9be74396c581.png

填写名称,点击“浏览其他AMI”按钮,选择我们需要的AMI。

02d45a257d17cbf162bfe423c66510c7.png

在输入框中,填写我们需要的AMI,点击“社区AMI(1)”,选中该AMI。

57601a95a29bc30d0fd80f3f69667101.png

选择我们需要的“实例类型”和“密钥对”。

3bd1f59f65ca9462c7a63f08e679d3a5.png

如下图所示,进行网络配置。

023da9d1527ed16c92d71cbfba3ebb2a.png

点开“高级网络配置”,在“网络接口”处选择我们刚创建的网络接口。

b5c00f065d5b2af4f9128805b63351fa.png

根据需求配置存储。

0d771e8eaddd01d9df1db846b1ca51b5.png

选中刚创建的角色,完成配置后,点击“启动实例”按钮,完成EC2的创建。

b6e49b9238203a09041854a4bc6e3de8.png

创建完成后,如下图所示。

cbb01caf0e6476bfdf7b1fc821856971.png

  1. 安装必要软件

在跳板机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. 生成kubeconfig

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

a98b3c4018afe4e3c1b7fa270c893753.png

在跳板机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

执行下面命令查看配置。

aws sts get-caller-identity

808dbbd19657bdf94c5a6c601578269c.png

执行下面命令,生成kubeconf。

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

小结

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

    推荐阅读   

bbe11fe168304e871674206a90ef2473.png

4324dc57e8a6f8ef5f90542d3f58f99f.png

    了解新钛云服   

猜你喜欢

转载自blog.csdn.net/NewTyun/article/details/130002692