Взгляните на этот официальный раздел документации kubernetes. В вашей Pod
.
есть вся информация, необходимая для установки упомянутых параметров ядра или использования другой терминологии - sysctls . Обратите внимание, что существуют так называемые safe и unsafe sysctls.
Что касается настройки net.ipv4.ip_local_port_range=1024 65500
, она считается safe * , и вы можете установить ее для своего Pod
с использованием securityContext
, как показано ниже, без необходимости перенастраивать kubelet на вашем узле:
apiVersion: v1
kind: Pod
metadata:
name: sysctl-example
spec:
securityContext:
sysctls:
- name: net.ipv4.ip_local_port_range
value: "1024 65500"
- name: net.ipv4.tcp_fin_timeout
value: "30"
...
Однако, если вы попытаетесь установить этот путь, также net.ipv4.tcp_fin_timeout
вы будете увидеть множество неудачных попыток создать Pod
со статусом SysctlForbidden
:
kubectl get pods
...
nginx-deployment-668d699fd8-zlvdm 0/1 SysctlForbidden 0 31s
nginx-deployment-668d699fd8-ztzpr 0/1 SysctlForbidden 0 58s
nginx-deployment-668d699fd8-zx4vq 0/1 SysctlForbidden 0 24s
...
Это происходит потому, что net.ipv4.tcp_fin_timeout
является небезопасным sysctl , который должен быть явно разрешен для уровень узла путем перенастройки вашей kubelet .
. Для этого вам необходимо отредактировать конфигурацию kubelet , в частности добавить еще одну опцию к тем, с которыми она уже запущена. Обычно вы найдете эти опции в файле /etc/default/kubelet
. Вам просто нужно добавить еще один:
--allowed-unsafe-sysctls 'net.ipv4.tcp_fin_timeout'
и перезапустить ваш kubelet :
systemctl restart kubelet.service
Как только net.ipv4.tcp_fin_timeout
разрешен на уровне узла, вы можете установить это так же, как любые безопасные sysctls , т.е. через securityContext
в вашей спецификации Pod
.