如何在Amazon EKS托管集群中启用unsafe sysctls内核参数
EKS控制台创建集群批量启用指定unsafe sysctls参数解决方案
操作总思路
控制台创建的EKS集群的工作节点均基于EC2启动模板部署,无需借助额外部署工具,直接在AWS控制台修改节点组关联的启动模板,即可批量配置所有节点的kubelet参数,现有节点通过滚动更新自动替换生效。
具体操作步骤
- 进入EKS控制台,打开目标集群的计算标签页,找到待配置的节点组,记录其关联的启动模板ID
- 切换到EC2控制台的「启动模板」页面,搜索上述启动模板ID,点击「修改模板(创建新版本)」
- 下拉到「高级详细信息」板块,找到「用户数据(User data)」输入框,在现有用户数据末尾追加以下配置:
#!/bin/bash set -ex # 追加allowed-unsafe-sysctls配置到kubelet配置文件 echo 'allowedUnsafeSysctls: ["net.unix.max_dgram_qlen", "net.core.somaxconn"]' >> /etc/kubernetes/kubelet/kubelet-config.json # 重启kubelet使配置生效 systemctl daemon-reload systemctl restart kubelet
- 保存启动模板新版本,回到EKS节点组配置页面,将节点组的启动模板版本切换为刚创建的新版本
- 触发节点组滚动更新,集群会自动逐台替换现有节点,新启动的节点将自动应用上述kubelet配置
配置验证方法
待节点组滚动更新完成后,任选一个新节点通过SSM会话管理器或SSH连接,执行以下命令验证配置是否生效:
ps aux | grep kubelet
如果输出的kubelet启动参数中包含--allowed-unsafe-sysctls=net.unix.max_dgram_qlen,net.core.somaxconn即代表配置生效。
Pod侧配置说明
节点配置完成后,需要使用这两个参数的Pod需要在Pod模板的securityContext中显式声明需要调整的sysctl参数,示例配置如下:
apiVersion: v1 kind: Pod metadata: name: sysctl-demo spec: securityContext: sysctls: - name: net.unix.max_dgram_qlen value: "2048" # 可根据业务需求调整数值 - name: net.core.somaxconn value: "65535" # 可根据业务需求调整数值 containers: - name: app image: nginx:alpine
内容的提问来源于stack exchange,提问作者ALostBegginer
相关产品推荐
相关产品推荐

