惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
S
Security Affairs
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
C
Cisco Blogs
T
Tor Project blog
The Hacker News
The Hacker News
雷峰网
雷峰网
MyScale Blog
MyScale Blog
博客园 - 司徒正美
AWS News Blog
AWS News Blog
GbyAI
GbyAI
Y
Y Combinator Blog
D
DataBreaches.Net
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
T
Tenable Blog
L
LangChain Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
The Cloudflare Blog
A
About on SuperTechFans
IT之家
IT之家
F
Fortinet All Blogs
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
NISL@THU
NISL@THU
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
A
Arctic Wolf
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周 学习周刊-总第239期-2025年第48周 整理我在静态服务透明代理上的极致求索之路,最后一个你绝想不到 学习周刊-总第238期-2025年第47周 我们输了,但收获颇多 太多了,太多了 学习周刊-总第237期-2025年第46周 学习周刊-总第236期-2025年第45周 学习周刊-总第235期-2025年第44周 二五年国庆二三事 学习周刊-总第234期-2025年第43周 学习周刊-总第233期-2025年第42周 学习周刊-总第232期-2025年第41周 学习周刊-总第231期-2025年第40周 学习周刊-总第230期-2025年第39周 西湖毅行 2025年开源世界逸闻三则 学习周刊-总第229期-2025年第38周 手抄《与妻书》 CNB开发与构建基于docker-cache缓存复用的配置实践心得 学习周刊-总第228期-2025年第37周 父亲善行录 学习周刊-总第227期-2025年第36周 带你认识我之看看我的高中同学录(其二) 学习周刊-总第226期-2025年第35周 带你认识我之看看我的高中同学录(其一) 认识神级MCP工具系列--用anyquery和数据库交互 学习周刊-总第225期-2025年第34周 学习周刊-总第224期-2025年第33周 学习周刊-总第223期-2025年第32周 学习周刊-总第222期-2025年第31周 学习周刊-总第221期-2025年第30周 CNB云原生开发环境届的瑞士军刀,详解qifei项目 vuepress-vdoing主题配置自建不蒜子统计 学习周刊-总第220期-2025年第29周 写在博客发表文章1000篇的节点 从claude cli的体验聊聊最大的敌人是我们自己的成见 学习周刊-总第219期-2025年第28周 学习周刊-总第218期-2025年第27周 学习周刊-总第217期-2025年第26周 理论正确,事实错误 学习周刊-总第216期-2025年第25周 学习周刊-总第215期-2025年第24周 学习周刊-总第214期-2025年第23周 学习周刊-总第213期-2025年第22周 学习周刊-总第212期-2025年第21周 从赵心童世锦赛夺冠聊聊我的斯诺克情缘 学习周刊-总第211期-2025年第20周 记录二五年五一之短暂回归家庭 学习周刊-总第210期-2025年第19周 学习周刊-总第209期-2025年第18周 学习周刊-总第208期-2025年第17周 Go开发实践之Gin框架将前端的dist目录embed到二进制 学习周刊-总第207期-2025年第16周 近期关于cobra库的一些实践心得总结 学习周刊-总第206期-2025年第15周 我的嗜好--嗑瓜子 记大宝参加幼儿园组织的清明烈士陵园扫墓活动 学习周刊-总第205期-2025年第14周 学习周刊-总第204期-2025年第13周 前端开发小笔记--在数组中给字段添加值与删除字段的操作 学习周刊-总第203期-2025年第12周 人生实苦,何以自渡 学习周刊-总第202期-2025年第11周 近期发现的一些优秀的工具提名(一) 学习周刊-总第201期-2025年第10周 学习周刊-总第200期-2025年第09周 记一次女友喝醉使我忍术破功 爱情风波--一次分手又复合的经历 学习周刊-总第199期-2025年第08周 整理我的信息源
AWS运维部署实践--快速拉起生产可用的EKS集群
二丫讲梵 · 2024-10-19 · via 二丫讲梵

AWS 的 K8S 产品名叫 EKS,EKS 针对 K8S 的封装非常克制,因此有不少内容,需要我们自己手动来完成,本文记录下 EKS 集群搭建相关的配置,让你能够快速把集群搭建出来,并且跑通可用。

# 子网规划与配置

首先需要规划好子网,主要分两块儿,且每块儿都需要至少两个不同区域(节点组要求)的子网:

  • 公有子网
    • 要创建两个(最少),区分在两个可用区。
    • 并且这个子网还需要开启自动分配公有 IPv4 地址的功能,否则无法正常使用。
  • 私有子网
    • 要创建两个(最少),区分在两个可用区。

关于子网相关的内容,请跳转 AWS运维部署实践--网络环境规划 (opens new window) 查看。

切切注意

📢注意: 这里我建议直接给公有子网以及私有子网都创建成三个可用区,千万不要出现一个多一个少,或者两种子网可用区对应不上的情况。(我曾踩过一个坑:创建了两个公有子网,三个私有子网,然后服务启动之后,有可能会在私有子网 C,此时假如公网 ingress 没有再 C 区,怎会出现无法关联成功的情况)

子网规划做好之后,要对子网进行打标,关于为什么要打标,可见此文档:子网自动发现 (opens new window)

# 如果是公有子网,则增加标签:
kubernetes.io/role/elb=1

# 如果是私有子网,则增加标签:
kubernetes.io/role/internal-elb=1

1
2
3
4
5

更为基础的,创建一个对应VPC下的基础安全组,这个就不多赘述了。安全组里要增加放开VPC内网所有请求的规则。

# 配置 IAM

因为我们创建集群以及一些操作,会通过 aws cli 命令行来进行,因此需要先创建一台服务器,之后的操作会在这台服务器上进行。

来到控制台,在 IAM 创建一个角色,关联一个权限,实际上这里关联EC2EKS的就够,我这里直接关联了管理员的权限。

img

然后把上一步创建的角色绑定到一台EC2的跳板机上,关联上之后,需要重启下该实例,此时,该机器已经有了通过 aws命令操作AWS的权限。

img

# 安装命令工具

# aws

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

1
2
3

# kubectl

$ curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ mv ./kubectl /usr/local/bin

1
2
3

# eksctl

$ curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz"
$ tar -xzf eksctl_Linux_amd64.tar.gz -C /tmp && rm eksctl_Linux_amd64.tar.gz
$ sudo mv /tmp/eksctl /usr/local/bin

1
2
3

# helm

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh

1
2
3

# 创建集群

创建集群也是有多种方式,你可以选择在控制台创建,也可以通过工具创建,这里则选择结合eksctl工具来创建集群。

# 定义集群配置

定义 eks 集群的配置文件,注意调整名字区域子网,以及节点组信息等需要修改。

配置文件命名:cluster.yaml

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: aws3-sgp-eks-cluster
  region: ap-southeast-1
  version: "1.31"

vpc:
  subnets:
    private:
      ap-southeast-1a: { id: subnet-000001 }
      ap-southeast-1b: { id: subnet-000002 }
      ap-southeast-1c: { id: subnet-000003 }
    public:
      ap-southeast-1a: { id: subnet-000001 }
      ap-southeast-1b: { id: subnet-000002 }
      ap-southeast-1b: { id: subnet-000003 }

addons:
  - name: vpc-cni
  - name: coredns
  - name: kube-proxy

managedNodeGroups:
  - name: aws3-sgp-eks-nodegroup-01
    minSize: 2
    maxSize: 4
    desiredCapacity: 2
    volumeSize: 500
    volumeType: gp3
    privateNetworking: true
    labels: { role: worker }
    tags:
      nodegroup-role: worker
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/authorized_keys
      publicKeyName: "aws3-sshkey"

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
35
36
37
38
39

  • 几项注意:
    • 机型信息可通过实例类型页面查看支持的机型 (opens new window)
    • 子网的对应区域信息要正确。
    • 如果你需要多个节点组,可以往下复制继续配置。

# 创建集群

因创建时间比较久,建议通过tmux管理。

$ yum -y install tmux
$ tmux new -s eryajf -d
$ tmux a -t eryajf
$ eksctl create cluster -f cluster.yaml

1
2
3
4

创建集群过程比较久,要一二十分钟,可耐心等待。可以通过命令输出看过程,也可以到控制台的 CloudFormation (opens new window) 查看。

集群创建完毕之后,要想连上节点组拉起的集群节点:

  • 集群安全组,如果想要访问集群的节点,这个安全组也要放开内网访问。
  • 节点安全组也要放开内网访问。

可能会有某些地方配置不对,导致创建失败,可根据cloudformation里边的事件来看失败的原因。

如果要删除集群:

$ eksctl delete cluster -f cluster.yaml

1

# 集群授权

默认创建出来的集群,节点信息是看不到的,需要创建一个认证,关联eks的策略,那么对应创建的子账号关联该策略,就可以管理集群了。

只需一条命令:

$ eksctl create iamidentitymapping --cluster aws3-sgp-eks-cluster --region=ap-southeast-1   --arn arn:aws:iam::0000007:user/aws3-eryajf  --username admin --group system:masters  --no-duplicate-arns

1

  • --cluster:指定eks集群名字
  • --region:指定区域
  • --arn:指定要授权的子账号。

这个命令给对应账号aws3-eryajf加了master的权限,这个权限比较大,可考虑酌情添加。

# 获取 kubeconfig

在执行机EC2上获取kubeconfig

$ aws eks update-kubeconfig --region ap-southeast-1 --name aws3-sgp-eks-cluster

1

然后可以执行kubectl命令验证是否能够正常使用:

如果执行失败,则可能是网络不通,可以查看安全组是否放开。如果报权限问题,则可能是上边某个步骤没有做好。

以上,一个独立的集群就已经完整创建出来了,正常部署服务已经没有问题。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

# 完事儿后的一些调整

注意默认情况下,集群的访问端点是完全对公的,可以在集群管理处,进行调整:

image-20240718183802101

可以改为私有访问,仅允许 VPC 内访问。

安全组则需要根据自己实际使用情况调整即可。

如此,一个可投入使用的 EKS 集群就创建好了。

接下来,将介绍 ingress 的实际应用。

# 可参考文档