ram*_*esh 4 amazon-web-services kubernetes terraform amazon-eks
我正在使用这个 Terraform provider构建一个 AWS EKS 集群。但是,我找不到将节点污点应用于托管节点组或工作组的方法。这个问题及其解决方案似乎表明这是不可能的。有没有办法做到这一点?
Ser*_*lyi 10
现在eks模块确实支持开箱即用的污点,只需使用以下配置:
module "eks" {
source = "terraform-aws-modules/eks/aws"
...
node_groups = {
test_name = {
...
taints = [
{
key = "dedicated"
value = "statefulset"
effect = "NO_SCHEDULE"
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不必为此功能使用专用模块,因为 Hashicorp AWS 提供商通过污点配置块支持开箱即用的污点:
resource "aws_eks_node_group" "statefulset-ng" {
cluster_name = aws_eks_cluster.main.name
node_group_name = "statefulset-ng"
.
.
.
# Block 1
taint {
key = "statefulset-no-schedule"
value = "true"
effect = "NO_SCHEDULE"
}
# Block 2
taint {
key = "statefulset-no-execute"
value = "true"
effect = "NO_EXECUTE"
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,每个污点都需要在单独的配置块中进行配置。
在该提供程序的 Terraform 脚本中,您可以将以下内容添加到工作组:
(在main.tf)
worker_groups = [
{
name = "my_node_group"
instance_type = "t3.medium"
asg_desired_capacity = 1
asg_min_size = 1
additional_security_group_ids = [aws_security_group.all_worker_mgmt.id]
kubelet_extra_args = "--node-labels=my_node_label --register-with-taints=my_node_label:NoSchedule"
asg_max_size = 1
tags = []
},
]
Run Code Online (Sandbox Code Playgroud)
重要的部分是设置kubelet_extra_args将节点标签应用于节点,并使用该节点标签来设置污点--register-with-taints。这些是 EKS 在启动时在每个工作节点上运行的命令。(注意,我在worker组中设置的所有其他参数都可以根据您的要求进行更改)
您可以使用 来检查节点上的污点kubectl describe node <node_ip>。
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |