使用Kops + Docker 1.11在Kubernetes pod中设置sysctl密钥

我使用Kops 1.4.4在AWS上启动我的Kubernetes集群。 我的Elasticsearch窗格要求我将内核参数vm.max_map_count至less设置为262144. Kubernetes 1.5.1具有systctlfunction,但它需要Docker> = 1.12。 Kops目前使用较小的Docker版本构build我的节点,因此我试图弄清楚如何自动设置内核参数。 如果我尝试使用RUN sysctl -w vm.max_map_count=262144将其设置在我的Dockerfile中, RUN sysctl -w vm.max_map_count=262144收到错误消息:'sysctl:setting key'vm.max_map_count':只读文件系统'。

有没有解决方法?

显然这可以使用Kubernetes init容器来完成。 在此处张贴Kubernetes部署configuration后,可以通过将以下注释应用于您的部署来完成。 在spec> template> metadata> annotations下添加:

 pod.beta.kubernetes.io/init-containers: '[ { "name": "sysctl", "image": "busybox", "command": ["sysctl", "-w", "vm.max_map_count=262144"], "securityContext": { "privileged": true } } ]'