Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >kubernetes 实用技巧: 为 Pod 设置内核参数

kubernetes 实用技巧: 为 Pod 设置内核参数

原创
作者头像
imroc
发布于 2021-05-31 12:31:39
发布于 2021-05-31 12:31:39
4.5K1
举报

本文摘自 kubernetes 学习笔记

概述

本文介绍为 Pod 设置内核参数的几种方式。

在 securityContext 中指定 sysctls

自 k8s 1.12 起,sysctls 特性 beta 并默认开启,允许用户在 pod 的 securityContext 中设置内核参数,用法示例:

代码语言:txt
AI代码解释
复制
apiVersion: v1
kind: Pod
metadata:
  name: sysctl-example
spec:
  securityContext:
    sysctls:
    - name: net.core.somaxconn
      value: "1024"
    - name: net.core.somaxconn
      value: "1024"
  ...

不过使用该方法,默认情况下有些认为是 unsafe 的参数是不能改的,需要将其配到 kubelet 的 --allowed-unsafe-sysctls 中才可以用。

使用 initContainers

如果希望设置内核参数更简单通用,可以在 initContainer 中设置,不过这个要求给 initContainer 打开 privileged 权限。示例:

代码语言:txt
AI代码解释
复制
apiVersion: v1
kind: Pod
metadata:
  name: sysctl-example-init
spec:
  initContainers:
  - image: busybox
    command:
    - sh
    - -c
    - |
      sysctl -w net.core.somaxconn=65535
      sysctl -w net.ipv4.ip_local_port_range="1024 65535"
      sysctl -w net.ipv4.tcp_tw_reuse=1
      sysctl -w fs.file-max=1048576
    imagePullPolicy: Always
    name: setsysctl
    securityContext:
      privileged: true
  containers:
  ...

使用 tuning CNI 插件统一设置 sysctl

如果想要为所有 Pod 统一配置某些内核参数,可以使用 tuning 这个 CNI 插件来做:

代码语言:txt
AI代码解释
复制
{
  "name": "mytuning",
  "type": "tuning",
  "sysctl": {
          "net.core.somaxconn": "500",
          "net.ipv4.tcp_tw_reuse": "1"
  }
}

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
initContainer和container是共享同一个内核参数咯? 这个内核参数没有隔离是吧?就相当于initContainer和container共享网络一样
initContainer和container是共享同一个内核参数咯? 这个内核参数没有隔离是吧?就相当于initContainer和container共享网络一样
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
TKE集群给pod设置内核参数
使用tke的过程中,很多时候我们希望对容器内的一些内核参数进行优化修改,可以通过init容器或者securityContext来修改pod内的内核参数。
聂伟星
2021/08/26
2.9K1
kubernetes中为容器设置内核参数
注意:此方式如果使用了非安全内核参数,必须要先修改节点的kubelet配置,增加--allowed-unsafe-sysctls字段,并允许相关非安全参数,否则创建后,pod会报错SysctlForbidden,并大量不断创建pod,可能将集群搞挂
铜锣烧
2022/12/09
1.9K0
K8S关于pod内核参数修改的坑
参照官方文档:在 Kubernetes 集群中使用 sysctl | Kubernetes
用户4455427
2022/06/23
2.9K0
Kubernetes 疑难杂症排查分享:神秘的溢出与丢包
图片下载走的 k8s ingress,这个 ingress 路径对应后端 service 是一个代理静态图片文件的 nginx deployment,这个 deployment 只有一个副本,静态文件存储在 nfs 上,nginx 通过挂载 nfs 来读取静态文件来提供图片下载服务,所以调用链是:client --> k8s ingress --> nginx --> nfs。
imroc
2020/01/13
3.2K1
kubernetes使用securityContext和sysctl
在运行一个容器时,有时候需要使用sysctl修改内核参数,比如net.、vm.、kernel等,sysctl需要容器拥有超级权限,容器启动时加上--privileged参数即可。那么,在kubernetes中是如何使用的呢?
sunsky
2020/08/20
2.1K0
给容器设置内核参数
怎么给docker容器设置内核参数? 怎么给k8s POD设置内核参数? 为什么给容器设置某些内核参数之后,主机也会受影响?
腾讯云原生
2020/02/14
10.5K0
Linux内核参数优化
当在CentOS 7.9上搭建Web服务器时,以下是一些可以优化内核参数的建议。可以使用sysctl命令来临时修改这些参数,或者将它们添加到系统的配置文件以在启动时应用。
希里安
2023/10/30
7740
Linux内核参数优化
kubernetes - kubeadm
首先Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s。
断痕
2021/01/21
4520
kubernetes - kubeadm
k8s nginx-ingress上的配置优化
自建K8s上,如果部署了Nginx-Ingress,通常一些默认的参数有些可能需要优化下以便提升它的性能(阿里云之类的云厂商提供的Ingress是优化过的)。
保持热爱奔赴山海
2022/01/11
1K0
Kuberntes中Sysctl中的配置(php-fpm并发只能300)
kubernetes集群中部署应用,对应用进行压力测试。jmeter进行压力测试大概是每秒300个左右的请求(每分钟elasticsearch中采集的请求有18000个)。查看日志有nginx的erro log:
对你无可奈何
2021/08/30
7320
内核 TCP 参数调优
Linux系统下,TCP连接断开后,会以 TIME_WAIT 状态保留一定时间,然后才释放端口。当并发请求过多时,会产生大量 TIME_WAIT 状态连接,无法及时断开会占用大量的端口资源和服务器资源。这时可优化TCP内核参数,及时将TIME_WAIT状态的端口清理掉。
看、未来
2022/05/06
1.7K0
K8S OS 内核性能参数调优
[1] ES Configuration: https://www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-configuration.html#vm-max-map-count [2] root cause kernel soft lockups · Issue #37853 · kubernetes/kubernetes (github.com): https://github.com/kubernetes/kubernetes/issues/37853 [3] service-node-port-range and ip_local_port_range collision · Issue #6342 · kubernetes/kops (github.com): https://github.com/kubernetes/kops/issues/6342 [4] Image: We should tweak our sysctls · Issue #261 · kubernetes-retired/kube-deploy (github.com): https://github.com/kubernetes-retired/kube-deploy/issues/261 [5] Upgrading docker 1.13 on nodes causes outbound container traffic to stop working · Issue #40182 · kubernetes/kubernetes (github.com): https://github.com/kubernetes/kubernetes/issues/40182 [6] arp_cache: neighbor table overflow! · Issue #4533 · kubernetes/kops (github.com): https://github.com/kubernetes/kops/issues/4533
东风微鸣
2022/04/22
2.1K0
Nginx Ingress 高并发实践
Nginx Ingress Controller 基于 Nginx 实现了 Kubernetes Ingress API,Nginx 是公认的高性能网关,但如果不对其进行一些参数调优,就不能充分发挥出高性能的优势。之前我们在 Nginx Ingress on TKE 部署最佳实践 一文中讲了 Nginx Ingress 在 TKE 上部署最佳实践,涉及的部署 YAML 其实已经包含了一些性能方面的参数优化,只是没有提及,本文将继续展开介绍针对 Nginx Ingress 的一些全局配置与内核参数调优的建议,可用于支撑我们的高并发业务。
imroc
2020/09/03
3.1K0
linus服务器内核参数优化(3)
在这个文件中,加入下面的几行内容: net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30
陈不成i
2021/05/06
1.2K0
nginx十万并发内核参数优化(2)
net.ipv4.ip_local_port_range = 1024 65000
随心助手
2019/10/15
2.2K0
从k8s容器丢包事件中掌握内核参数优化技巧
线上业务反馈接口偶发性返回502状态码,从请求日志和监控系统看,有好几个微服务的接口都有出现,期间容器资源使用率平稳并无异常,而502的发生主要聚焦在业务高峰阶段,所以暂时排除了是微服务性能问题,优先尝试通过压测的方式在非生产环境复现。
SRE运维手记
2024/08/30
2400
从k8s容器丢包事件中掌握内核参数优化技巧
性能测试 -- 内核调优
/etc/sysctl.conf 这个文件加上以下这些参数,然后执行sysctl -p更新 net.ipv4.tcp_max_syn_backlog = 4096 net.core.netdev_max_backlog = 2048 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness
千往
2018/01/24
9490
TKE/EKS集群通过logrotate切割nginx-ingress访问日志
Nginx-ingress 是使用 Nginx 作为反向代理和负载平衡器的 Kubernetes 的 Ingress 控制器,容器服务 TKE 提供了产品化的能力,可以直接在集群内安装和使用 Nginx-ingress,具体可以参考文档https://cloud.tencent.com/document/product/457/50503
聂伟星
2022/12/15
2K1
kubernetes1.22安装使用ingress-nginx
我们已经了解了 Ingress 资源对象只是一个路由请求描述配置文件,要让其真正生效还需要对应的 Ingress 控制器才行,Ingress 控制器有很多,这里我们先介绍使用最多的 ingress-nginx,它是基于 Nginx 的 Ingress 控制器。
我是阳明
2021/12/27
3.4K0
kubernetes1.22安装使用ingress-nginx
Nginx代理服务器环境快速搭建部署
步骤 01.nginx 配置文件准备执行如下命令写入到/app/nginx/conf/nginx.conf文件中
全栈工程师修炼指南
2022/09/29
9240
Nginx代理服务器环境快速搭建部署
相关推荐
TKE集群给pod设置内核参数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档