【问题标题】:terraform eks node labelsterraform eks 节点标签
【发布时间】:2021-10-12 11:49:15
【问题描述】:

我正在 AWS 中创建一个 eks k8s 集群,一切都很好。我像这样使用worker_groups:

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
      ]
      labels = {
        application = "backend"
      }
    }
  ]
}

ASG 已创建,但节点没有创建标签。 我需要标记节点,以便我可以使用nodeSelector

感谢您的帮助!

大卫

【问题讨论】:

  • 有什么解决办法吗?我不愿意为此使用用户数据?

标签: terraform amazon-eks


【解决方案1】:

似乎没有办法通过 terraform 标记节点,所以我最终使用了附加用户数据。

  • 我们需要安装 kubectl
  • 我们需要为 aws 配置集群
  • 然后我们需要等到节点将自己添加到 kuberneter 集群中。
  • 然后我们可以使用主机名添加标签,这就是它们在集群中的显示方式。
      additional_userdata           = <<EOT
curl -o /root/kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.12/2020-11-02/bin/linux/amd64/kubectl
chmod +x /root/kubectl
aws eks --region us-east-1 update-kubeconfig --name dev-cluster
until [ "$(/root/kubectl --kubeconfig=/root/.kube/config get nodes | grep $(hostname) | wc -l)" == "1" ]; do sleep 1; done
/root/kubectl --kubeconfig=/root/.kube/config label nodes $(hostname) application=backend
EOT

现在我可以通过nodeSelector 部署到特定的节点组

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 2020-05-19
    • 2018-12-28
    • 2020-08-19
    • 2020-10-17
    • 2021-07-20
    • 2019-12-21
    • 2022-06-16
    • 2020-12-03
    相关资源
    最近更新 更多