Skip to content

Latest commit

 

History

History
169 lines (121 loc) · 5.88 KB

1.create_cluster.md

File metadata and controls

169 lines (121 loc) · 5.88 KB

本章节内容主要演示如何通过eksctl工具创建EKS集群

1. 创建EKS管理机器,可选择EC2或者Cloud9

2. 创建IAM用户,记录AK、SK。如需控制最小权限请参考这里

3. 启动linux机器(或者mac机器),安装/更新aws cli,并配置aws cli

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    # 确认安装成功

3. 创建集群

# 参数说明
#--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

4. 集群管理

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. 调整/添加/删除节点组

  1. 配置文件方式(推荐)
eksctl create nodegroup --config-file=new_nodegroup_demo.yaml

# 其中 new_nodegroup_demo.yaml 文件位于confs/
  1. 命令行方式
# 调整节点组机器数量
## 获取集群列表
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 为集群名称

5. 参考资料

  1. 创建新的 kubeconfig 文件
  2. 为集群添加新的用户