Terraform AWS EKS模块worker_groups配置labels未生效问题求助
根因说明
你当前使用的适配EKS 1.17的terraform-aws-eks旧版本,不会自动将worker_groups中定义的labels参数同步到K8s节点的kubelet启动配置,因此节点启动后不会自动带上对应标签。
永久解决方案(新扩容节点自动生效)
在worker_groups配置中新增kubelet_extra_args字段,手动将标签传入kubelet启动参数,修改后的配置如下:
module "eks" { source = "terraform-aws-modules/eks/aws" cluster_name = var.cluster_name cluster_version = "1.17" subnets = var.private_subnets_ids tags = { Environment = var.environment } vpc_id = var.vpc_id worker_groups = [ { name = "backend" instance_type = var.eks_workers.backend.instance_type asg_desired_capacity = var.eks_workers.backend.desired_capacity key_name = var.eks_workers.backend.ssh_key_name subnets = var.private_subnets_ids additional_userdata = "echo foo bar" associate_public_ip_address = false additional_security_group_ids = [ aws_security_group.sg_ssh_mgmt.id ] # 新增以下配置,传入标签参数 kubelet_extra_args = "--node-labels=application=backend" labels = { application = "backend" } } ] }
修改完成后执行terraform apply生效配置,之后需要轮换ASG中已有的旧节点:可以手动终止现有节点,ASG会自动创建新的带标签的节点,也可以通过AWS ASG的实例刷新功能批量替换。
临时解决方案(现有节点快速打标)
如果不想立刻替换现有节点,可以手动执行kubectl命令给已有节点打标:
kubectl label nodes <节点名称> application=backend
注意:该方法仅对当前已有节点生效,后续新扩容的节点不会自动带上标签,建议配合永久解决方案使用
内容的提问来源于stack exchange,提问作者David Villasmil
相关产品推荐
相关产品推荐

