本章节内容主要演示如何通过eksctl工具创建EKS集群
2. 创建IAM用户,记录AK、SK。如需控制最小权限请参考这里
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
$ aws configure
AWS Access Key ID : <AK>
AWS Secret Access Key : <SK>
Default region name: <区域代码,如新加坡为ap-southeast-1>
Default output format [None]:json
#测试AK/SK是否生效,有类似如下输出则表示配置生效
aws sts get-caller-identity
{
"UserId": "AIDAVY4EIOPQFCK******",
"Account": "397****81984",
"Arn": "arn:aws:iam::397****81984:user/eksops"
}
# 安装k8s管理工具kubectl https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
sudo curl --silent --location -o /usr/local/bin/kubectl \
"https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo chmod +x /usr/local/bin/kubectl
# 安装eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv -v /tmp/eksctl /usr/local/bin
eksctl version # 确认安装成功
# 参数说明
#--node-type 工作节点类型 默认为m5.large
#--nodes 工作节点数量 默认为2
# --version k8s 版本,推荐使用 eks 支持的最新版本 https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html
export CLUSTER_NAME=eksworkshop
eksctl create cluster --name=${CLUSTER_NAME} --node-type m6i.large --managed --version 1.27
# 等待以上命令执行完成后(约15分钟),执行如下命令确认集群创建成功
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-36-125.ap-northeast-1.compute.internal Ready <none> 29h v1.23.13-eks-fb459a0
ip-192-168-70-130.ap-northeast-1.compute.internal Ready <none> 29h v1.23.13-eks-fb459a0
# 或使用yaml文件创建, 详细请参考 https://www.eksworkshop.com/030_eksctl/launcheks/
eksctl create cluster -f confs/cluster_new_vpc.yaml
a. 多集群切换
# 获取 context 清单
[ec2-user@ip-172-31-42-152 ~]$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
eks127.ap-northeast-1.eksctl.io
[email protected] eks-with-custom-vpc.ap-northeast-1.eksctl.io [email protected]
* [email protected] eks127v3.ap-northeast-1.eksctl.io [email protected]
[email protected] eksworkshop.ap-northeast-1.eksctl.io [email protected]
# 设置操作的集群
[ec2-user@ip-172-31-42-152 ~]$ kubectl config use-context [email protected]
Switched to context "[email protected]".
b. 使用工具快速实现多集群切换 https://github.com/ahmetb/kubectx/
# 安装 kubectx
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
# 使用
kubectx k8s-dev # 更换 context
kubens game-2048 # 更换 namespace
c. 在新环境为 EKS 创建 kubeconfig 文件
i. 配置权限,可与创建 eks 的权限保持一致,可使用如下命令确认
aws sts get-caller-identity
ii. 创建/更新 kubeconfig
aws eks update-kubeconfig --region region-code --name my-cluster
iii. 确认权限是否正常
kubectl get nodes
# 如需要给新 aws 用户授权 eks 集群访问权限,可以通过如下命令授权(运行次命令的用户须可访问 eks 集群)
# 其中 arn:aws:iam::62578397****:user/eks_ops 为新授权用户的 arn
eksctl create iamidentitymapping --cluster eksworkshop --region=ap-northeast-1 \
--arn arn:aws:iam::62578397****:user/eks_ops \
--username eks_ops --group system:masters \
--no-duplicate-arns
# 如需要删除重建可使用如下命令清理之前配置
eksctl delete iamidentitymapping --cluster eksworkshop --region=ap-northeast-1 \
--arn arn:aws:iam::62578397****:user/eks_op
d. 调整/添加/删除节点组
- 配置文件方式(推荐)
eksctl create nodegroup --config-file=new_nodegroup_demo.yaml
# 其中 new_nodegroup_demo.yaml 文件位于confs/
- 命令行方式
# 调整节点组机器数量
## 获取集群列表
eksctl get cluster
## 获取节点组名称
eksctl get nodegroups --cluster eks-t4g
## 调整节点组节点数量
eksctl scale nodegroup ng-ab369e17 --nodes=4 --nodes-min=2 --nodes-max=5 --cluster eks-t4g
# 其中
# ng-ab369e17 为节点组名称
# eks-t4g 为集群名称
# 添加节点组
eksctl create nodegroup --name=ng-app-001 --managed --node-type m6i.large --nodes 3 --nodes-min 1 --nodes-max 5 --cluster eks-t4g
# 其中
# m6i.large 为实例类型
# ng-app-001 为节点组名称
# eks-t4g 为集群名称
#
# 删除节点组
eksctl delete nodegroup ng-apps --cluster=eks-with-custom-vpc-pri-ng --disable-eviction
# 其中
# ng-apps 为节点组名称
# eks-with-custom-vpc-pri-ng 为集群名称