我正在处理一个需求,其中我们希望将Kubernetes POD中的特定内核参数“net.ipv4.tcp_retries2”更新为“5”。
我们使用的是AKS群集v1.21.7
我尝试使用securityContext设置上述sysctl参数,但失败了
template:
metadata:
labels:
app.kubernetes.io/name: weather-forecast-api
app.kubernetes.io/instance: RELEASE-NAME
spec:
serviceAccountName: RELEASE-NAME-weather-forecast-api
securityContext:
sysctls:
- name: net.ipv4.tcp_retries2
value: "5"
当我在AKS中应用上述更改时,pod无法运行并给出错误
禁用系统:“net.ipv4.tcp_retries2”未列入白名单
我知道我们可以在Kubelet级别上修改裸Kubernetes集群上的内核级别设置,但在我的示例中,它是Azure中的托管集群。
3条答案
按热度按时间k4aesqcs1#
使用init容器设置:
5gfr0r5j2#
我通过传递参数给kubelet来解决。
1.查找kubelet配置文件的路径
它给出了kubelet配置所在的路径,在我的例子中是**/var/lib/kubelet/config.yaml**
1.添加允许的不安全系统选项
将allowedUnsafeSysctls选项添加到文件中。
1.重启Kubelet
完成!但是您应该确保在更改了Kubelet配置的节点上调度Pod。
xoshrz7s3#
以下步骤解决了我的问题:(用于在pod级别设置netIpv4TcpFinTimeOut值)
1.* * 创建了如下所示的配置(名称为linuxconfig.json)**
{"允许的不安全系统":[" net. *"],
}
1.* * 使用--kubelet-config添加了节点池**
az aks节点池add-名称节点池名称-群集名称群集名称-资源组资源组名称-kubelet-config ./linuxconfig.json
1.使用以下YAML创建pod:
api版本:v1
种类:Pod
元数据:
名称:试验
规格:
安全上下文:
容器:
图片:nginx