【问题标题】:How to pass "–kubelet-extra-args" to AWS EKS node group created by Terraform aws_eks_node_group?如何将“–kubelet-extra-args”传递给 Terraform aws_eks_node_group 创建的 AWS EKS 节点组?
【发布时间】:2021-10-23 22:01:25
【问题描述】:

我正在按照从https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html 创建 EKS 托管节点组的示例

配置要求我通过--kubelet-extra-args 参数将其他参数传递给/etc/eks/bootstrap.sh 脚本。

我的 EKS 工作节点是通过 Terraform 资源 aws_eks_node_group 配置的

我找不到任何配置资源的选项,可以让我传递--kubelet-extra-args 参数。

是我看错了地方还是没有办法做到这一点?

【问题讨论】:

标签: amazon-web-services kubernetes terraform terraform-provider-aws amazon-eks


【解决方案1】:

如果您需要传递--kubelet-extra-args,您可以选择将用户数据传递给实例,这些数据可用于执行常见的自动化配置任务,甚至在实例启动后运行脚本。

在我看来,您应该有一个 tpl(模板)文件,其中包含创建节点时需要运行的脚本。

userdata.tpl 文件如this

#!/bin/bash
%{ if length(kubelet_extra_args) > 0 }
export KUBELET_EXTRA_ARGS="${kubelet_extra_args}"
%{ endif }
%{ if length(kubelet_extra_args) > 0 || length (bootstrap_extra_args) > 0 || length (after_cluster_joining_userdata) > 0 }

/etc/eks/bootstrap.sh --apiserver-endpoint '${cluster_endpoint}' --b64-cluster-ca '${certificate_authority_data}' ${bootstrap_extra_args} '${cluster_name}'

之前的 userdata.tpl 文件是使用 templatefile 函数调用的,该函数呈现脚本上的所有值。

例如,在另一个文件中,您将拥有一个名为 aws_launch_templateaws_launch_configuration 的资源,其中包含一个 user_data base64encode 输入,例如 this

最后,应用所有更改,然后创建新节点,它们将使用新配置创建。

完整的 EKS 节点组实现here 以及如何部署它的示例here

希望对你有用。

【讨论】:

  • 好吧,我曾希望避免设置单独的启动模板,但看起来这是唯一的方法。
  • 嘿@ChristianSeifert,是的,我认为这是唯一的方法,但不是一个糟糕的解决方案,我希望它对你和你的团队有用,如果我能澄清任何疑问,请告诉我跨度>
猜你喜欢
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 2021-04-18
  • 2021-02-06
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2021-03-16
相关资源
最近更新 更多