首页 > 服务配置 > kubernetes调整pod的内核参数
2018
07-06

kubernetes调整pod的内核参数

经常遇到需要修改 kubernetes pod 中的内核参数,比如 sysctl 中 net.core.somaxconn,还有redis、MongoDB的transparent_hugepage。如果在 Dockerfile 中定义或者更改了这些参数,服务启动后,也是不生效的。如果用下面这种方式

还是不能更改,docker文档中提到需用特权模式运行,对于kubernetes来说也是需要的,下面先介绍一个简便的方法,再说明一种麻烦的方式来解决问题

以redis来说,直接上例子,pod模式:

deployment模式:

上述配置文件见GitHub https://github.com/bbotte/Commonly-Dockerfile

更改透明大页transparent_hugepage,其实把系统的参数给更改了,上述加了 initContainers 对镜像做初始化的参数调整,然后运行镜像中服务,可以查看官方文档

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-initialization/

再举个栗子:

kubernetes调整pod的内核参数 - 第1张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

上面这种方式都用了2个镜像,更改初始的镜像内核参数,来达到更改运行image的目的

 

另一种复杂的方式更改docker kernel 的 sysctl 参数,

修改kubelet配置,可以修改系统参数

即kubelet.service.d/10-kubeadm.conf文件增加了一行

举个例子:

也是用到了特权模式,不过这种方式只能修改 kernel sysctl 参数,其他参数不能修改,比如透明大页transparent_hugepage,有一定的局限性,线上根据自身配置更改就好。

最后编辑:
作者:bbotte

留下一个回复

你的email不会被公开。