如何将 `sysctl` 标志从 k8s 传递给 docker?
How to pass `sysctl` flags to docker from k8s?
Scanario:我有一个容器映像需要 运行 且 net.core.somaxconn
> default_value。我正在使用 Kubernetes 在 GCE 中部署和 运行。
我的集群中的节点 (vms) 配置了正确的 net.core.somaxconn
值。现在的挑战是从 kubernetes 启动带有标志 --sysctl=net.core.somaxconn=4096
的 docker 容器。我似乎找不到合适的文档来实现这一点。
我是不是遗漏了什么明显的东西?
解决方案 1:使用 this answer 作为模板,了解如何将整个节点配置为该 sysctl 值;你可以使用 echo 4096 >/proc/sys/net/core/somaxconn
之类的东西。此后,您可以在使用具有所需 sysctl 配置的 VM 的节点上放置标签,并使用 Pod 规范中的 nodeSelector 强制调度到这些节点。 (这只适用于 非 命名空间设置;sys.net.core.somaxconn 似乎是命名空间。我想把这个解决方案留在这里,因为它可能对其他人有帮助。)
解决方案 2:同样,从 same answer you can add --experimental-allowed-unsafe-sysctls=net.core.somaxconn
to the kubelet
command line (This only works with namespaced settings; sys.net.core.somaxconn is namespaced). Then you can simply do something like (source 开始:
apiVersion: v1
kind: Pod
metadata:
name: sysctl-example
annotations:
security.alpha.kubernetes.io/sysctls: net.core.somaxconn=4096
希望对您有所帮助..
Scanario:我有一个容器映像需要 运行 且 net.core.somaxconn
> default_value。我正在使用 Kubernetes 在 GCE 中部署和 运行。
我的集群中的节点 (vms) 配置了正确的 net.core.somaxconn
值。现在的挑战是从 kubernetes 启动带有标志 --sysctl=net.core.somaxconn=4096
的 docker 容器。我似乎找不到合适的文档来实现这一点。
我是不是遗漏了什么明显的东西?
解决方案 1:使用 this answer 作为模板,了解如何将整个节点配置为该 sysctl 值;你可以使用 echo 4096 >/proc/sys/net/core/somaxconn
之类的东西。此后,您可以在使用具有所需 sysctl 配置的 VM 的节点上放置标签,并使用 Pod 规范中的 nodeSelector 强制调度到这些节点。 (这只适用于 非 命名空间设置;sys.net.core.somaxconn 似乎是命名空间。我想把这个解决方案留在这里,因为它可能对其他人有帮助。)
解决方案 2:同样,从 same answer you can add --experimental-allowed-unsafe-sysctls=net.core.somaxconn
to the kubelet
command line (This only works with namespaced settings; sys.net.core.somaxconn is namespaced). Then you can simply do something like (source 开始:
apiVersion: v1
kind: Pod
metadata:
name: sysctl-example
annotations:
security.alpha.kubernetes.io/sysctls: net.core.somaxconn=4096
希望对您有所帮助..