Установите ключ sysctl в модуле Kubernetes, используя Kops + Docker 1.11

Я использую Kops 1.4.4 для запуска своего кластера Kubernetes на AWS. Мои модули Elasticsearch требуют, чтобы я установил параметр ядра vm.max_map_count как минимум до 262144. Kubernetes 1.5.1 имеет функцию systctl, но для нее требуется Docker >= 1.12. Копс в настоящее время собирает мои узлы с меньшей версией Docker, и поэтому я застрял, пытаясь понять, как автоматизировать установку параметров ядра. Если я попытаюсь установить его в моем Dockerfile, используя RUN sysctl -w vm.max_map_count=262144, Я получаю сообщение об ошибке: 'sysctl: ключ настройки "vm.max_map_count": файловая система только для чтения ".

Есть ли обходные пути для этого?

1 ответ

Решение

По-видимому, это можно сделать с помощью контейнеров инициализации Kubernetes. Следуя конфигурации развертывания Kubernetes, опубликованной здесь, это можно сделать, применив следующую аннотацию к вашему развертыванию. Под spec > template > metadata > аннотации добавьте:

pod.beta.kubernetes.io/init-containers: '[
  {
  "name": "sysctl",
    "image": "busybox",
    "command": ["sysctl", "-w", "vm.max_map_count=262144"],
    "securityContext": {
      "privileged": true
    }
  }
]'
Другие вопросы по тегам