手动创建EKS集群使用eksctl创建Windows节点组报错咨询
EKS手动集群纳入eksctl管理及Windows节点组部署解决方案
问题1:手动创建的EKS集群如何纳入eksctl管理范围
- 首先确认本地已经配置好对应区域的AWS凭证,执行
aws eks update-kubeconfig --name <你的集群名称> --region <集群所属区域>获取集群访问权限,确保可正常执行kubectl操作 - 收集现有手动集群的核心配置参数:集群K8s版本、VPC ID、控制平面安全组ID、所有关联的公网/私有子网ID、集群IAM角色ARN
- 编写匹配集群参数的eksctl配置YAML,核心结构参考如下:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: testEnv-cluster region: <你的区域> version: "<你的K8s版本>" vpc: id: <VPC ID> subnets: private: <私有子网1可用区>: id: <私有子网1 ID> <私有子网2可用区>: id: <私有子网2 ID> public: <公网子网1可用区>: id: <公网子网1 ID> securityGroup: <控制平面安全组ID> iam: serviceRoleARN: <集群IAM角色ARN>
- 执行命令
eksctl create cluster -f <上述配置文件路径> --skip-existing,该命令会跳过集群创建步骤,自动补全eksctl管理集群所需的标签、CloudFormation栈记录,执行完成后即可通过eksctl正常管理该集群
问题2:在已有集群下创建Windows实例对应节点组
先决条件
- 集群已经存在至少1个Linux工作节点,用于运行CoreDNS、VPC-CNI等集群核心组件
- 集群K8s版本不低于1.14
操作步骤
- 首先部署VPC CNI的Windows支持组件,确保Windows节点可以正常分配IP地址
- 编写Windows节点组的eksctl配置,可直接追加到上述集群配置文件中,示例配置参考如下:
nodeGroups: - name: windows-ng amiFamily: WindowsServer2022Core # 可选WindowsServer2019Full、WindowsServer2019Core等版本 instanceType: t3.large # 最低要求2核4G配置 minSize: 1 maxSize: 3 desiredCapacity: 2 volumeSize: 50 ssh: allow: true publicKeyName: <你的SSH密钥对名称> subnets: <你要部署Windows节点的子网ID列表>
- 执行命令
eksctl create nodegroup -f <配置文件路径> --approve,等待节点组创建完成 - 验证节点加入:执行
kubectl get nodes -l kubernetes.io/os=windows,能看到状态为Ready的Windows节点即为部署成功
问题3:为Windows节点组创建对应的CloudFormation栈
两种实现方式可选:
- eksctl自动创建:执行上述
eksctl create nodegroup命令时,eksctl会自动生成符合规范的CloudFormation模板并创建对应栈,无需手动操作,栈名默认格式为eksctl-<集群名>-nodegroup-<节点组名> - 手动创建:如果需要自行管控CloudFormation栈,可使用AWS官方提供的EKS Windows工作节点模板,填入以下必填参数后直接创建即可:
- 集群名称
- 集群API服务器端点地址
- 集群CA证书内容
- 节点实例类型
- 节点AMI ID(可查询对应区域、对应Windows版本的EKS优化AMI ID)
- 子网ID列表
- 节点安全组ID
- SSH密钥对名称
- 节点IAM角色ARN
可通过AWS CloudFormation控制台操作,也可使用AWS CLI执行创建命令:
aws cloudformation create-stack --stack-name <自定义Windows节点栈名称> --template-body file://<本地模板文件路径> --parameters ParameterKey=ClusterName,ParameterValue=<集群名> ParameterKey=ClusterAPIEndpoint,ParameterValue=<API端点> ... --capabilities CAPABILITY_NAMED_IAM
内容的提问来源于stack exchange,提问作者Money Times
相关产品推荐
相关产品推荐

