Пожалуйста, внимательно прочитайте этот раздел документации. Там все четко объяснено.
Что касается настройки Небезопасных Sysctls , вам необходимо дополнительно включить их на уровне узла:
Все safe sysctls включены по умолчанию.
Все unsafe sysctl отключены по умолчанию и должны быть разрешены вручную администратором кластера для каждого узла. Блоки с отключенными небезопасными sysctl будут запланированы, но не будут запускаться.
С учетом вышеизложенного предупреждения администратор кластера может разрешить определенные небезопасные sysctl для очень особых ситуаций, таких как высокая настройка производительности или приложений в реальном времени. Небезопасные sysctl включаются для каждого узла отдельно с флагом кублета; например:
kubelet --allowed-unsafe-sysctls \
'kernel.msg*,net.core.somaxconn' ...
Для Minikube это можно сделать с помощью флага extra-config
:
minikube start --extra-config="kubelet.allowed-unsafe-sysctls=kernel.msg*,net.core.somaxconn"...
Только sysctls могут быть включены таким образом.
Что касается ...
Но даже ошибка безопасного sysctls выдает
spec: Forbidden: pod updates may not change fields other than spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds or spec.tolerations
Это совершенно другое сообщение об ошибке и это не имеет никакого отношения к ограничениям, связанным с изменением sysctl в вашем определении Pod
. Обратите внимание, что вы не можете изменить большинство ваших Pod
спецификаций через kubectl edit
, за исключением нескольких исключений, перечисленных в сообщении выше. В частности, вы не можете изменить их без воссоздания Pod
, поэтому в этом случае вместо редактирования вы можете просто запустить:
kubectl get pod pod-name -o yaml > my-pod.yaml
Затем вы можете отредактировать необходимые поля Pod
spe c и заново развернуть их it:
kubectl apply -f my-pod.yaml
В качестве альтернативы вы можете отредактировать ваш Deployment
, как @Arghya Sadhu уже предложил в своем ответе. Deployment controller
воссоздает эти Pods
для вас с обновленной спецификацией.
Является ли игровая среда, которая ограничивает изменения параметров ядра? Нужно ли мне иметь собственную установку мини-куба, чтобы можно было изменять небезопасные параметры sysctl?
Не совсем. Вы можете включить их на каждом узле, который является частью вашего кластера, переконфигурировав kubelets . Что касается изменения конфигурации kubelet , это может быть сделано по-разному в зависимости от вашей установки kubernetes . В случае, если он был создан с kubeadm , вам просто нужно отредактировать следующий файл:
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
, затем запустить:
sudo systemctl daemon-reload
и перезапустить kubelet, выполнив:
sudo systemctl restart kubelet.service
Помимо альтернатив minikube / kubelet, предоставленных для редактирования / включения небезопасных sysctl, есть ли другой способ? Что было бы хорошим способом настроить параметры ядра для модуля?
Ответ выше.
Надеюсь, это прояснило ваши сомнения по поводу установки safe и небезопасных sysctls в Kubernetes Cluster .