Изменение политики CPU Manager в Kubernetes - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь изменить политику CPU Manager для кластера Kubernetes, которым я управляю, как описано здесь , однако при этом я столкнулся с многочисленными проблемами.

Кластер работает в DigitalOcean, и вот что я пробовал до сих пор.

  • 1. Поскольку в статье упоминается, что --cpu-manager-policy - это опция кублета, я предполагаю, что я не могу изменить ее через API-сервер и должен изменить ее вручную на каждом узле. (Это предположение, кстати?)
  • 2. I ssh в один из узлов (капли в языке DigitalOcean lingo) и выполните команду kubelet --cpu-manager-policy=static, как описано в справке по CLI kubelet здесь . Это дает мне сообщение Flag --cpu-manager-policy has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.
  • 3. Итак, я проверяю файл, на который указывает флаг --config, запуском ps aux | grep kubelet и нахожу, что его /etc/kubernetes/kubelet.conf.
  • 4. Я редактирую файл и добавляю к нему строку cpuManagerPolicy: static, а также kubeReserved и systemReserved, поскольку они становятся обязательными полями при указании cpuManagerPolicy .
  • 5. Затем я убиваю процесс, который выполнял процесс, и перезапускаю его. Появилось еще несколько вещей (удалите этот файл, истощите узел и т. Д.), Через которые мне удалось пройти и в конечном итоге перезапустить kubelet

Я немного растерялся из-за следующих вещей

  • Как мне сделать это для всех узлов? В моем кластере их 12, и выполнение всех этих шагов для каждого кажется очень неэффективным.
  • Можно ли как-то установить эти параметры на глобальном уровне, т. Е. На уровне кластера, а не выполнять узел за узлом?
  • Как я могу подтвердить, что то, что я сделал, фактически изменило политику CPU Manager?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Одна проблема с динамической конфигурацией заключается в том, что в случае, если узел не перезагружается, API не дает разумного ответа, который сообщает вам, что вы сделали неправильно, вам придется ssh войти в узел и подключить кублет журналы. Кроме того, вы должны ssh в каждый узел и в любом случае установить флаг --dynamic-config-dir.

Следующее сработало лучше всего для меня

  1. SSH в узел. Редактировать
vim /etc/systemd/system/kubelet.service
  1. Добавить следующие строки
  --cpu-manager-policy=static \
  --kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \
  --system-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \

Нам необходимо установить флаги --kube-reserved и --system-reserved, поскольку они являются необходимыми условиями для установки флага --cpu-manager-policy

  1. Затем слить узел и удалить следующую папку
rm -rf /var/lib/kubelet/cpu_manager_state
  1. Перезагрузите кубеле
sudo systemctl daemon-reload
sudo systemctl stop kubelet
sudo systemctl start kubelet
  1. Отключите узел и проверьте политику. Предполагается, что вы используете kubectl proxy на порту 8001.
curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | grep cpuManager
0 голосов
/ 18 января 2019

Возможно, это не глобальный способ делать вещи, но я думаю, что это будет намного удобнее, чем то, что вы делаете в настоящее время.

Сначала нужно запустить kubectl proxy --port=8001 &

Скачать конфигурацию:

NODE_NAME="the-name-of-the-node-you-are-reconfiguring"; curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig|.kind="KubeletConfiguration"|.apiVersion="kubelet.config.k8s.io/v1beta1"' > kubelet_configz_${NODE_NAME}

Отредактируйте его соответствующим образом и перенесите конфигурацию в плоскость управления. Вы увидите правильный ответ, если все прошло хорошо. Затем вам нужно будет отредактировать конфигурацию, чтобы узел начал использовать новую ConfigMap. Есть много других возможностей, например, вы можете вернуться к настройкам по умолчанию, если что-то пойдет не так.

Этот процесс описан со всеми подробностями в этом разделе документации .

Надеюсь, это поможет.

...