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

Set sysctl key in Kubernetes pod using Kops + Docker 1.11

我正在使用 Kops 1.4.4 在 AWS 上启动我的 Kubernetes 集群。我的 Elasticsearch pods 要求我将内核参数 vm.max_map_count 设置为至少 262144。Kubernetes 1.5.1 具有 systctl 功能,但它需要 Docker >= 1.12。 Kops 目前使用较低的 Docker 版本构建我的节点,因此我一直在尝试弄清楚如何自动设置内核参数。如果我尝试使用 RUN sysctl -w vm.max_map_count=262144 在我的 Docker 文件中设置它,我会收到错误消息:'sysctl: setting key "vm.max_map_count": Read-only file system'.

是否有任何解决方法?

显然可以使用 Kubernetes init containers. Following the Kubernetes deployment config posted here 这可以通过将以下注释应用于您的部署来完成。在 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
    }
  }
]'