[转帖]pod容器开启pid限制
https://zhdya.gitee.io/zhdya/archives/
cgroup中对pid进行了隔离,通过更改docker/kubelet配置,可以限制pid总数,从而达到限制线程总数的目的。线程数限制与系统中多处配置有关,取最小值,参考stackoverflow上线程数的设置
- docker,容器启动时设置 --pids-limit 参数,限制容器级别pid总数
- kubelet,开启SupportPodPidsLimit特性,设置–pod-max-pids参数,限制node每个pod的pid总数
以kubelet为例,开启SupportPodPidsLimit,--feature-gates=SupportPodPidsLimit=true
1、配置kubelet,每个pod允许最大pid数目为150
[root@node01 ~]# ps -ef |grep kubelet
root 18735 1 14 11:19 ? 00:53:28 ./kubelet --v=1 --address=0.0.0.0 --feature-gates=SupportPodPidsLimit=true --pod-max-pids=150 --allow-privileged=true --root-dir=/home/kubelet --node-status-update-frequency=5s --kubeconfig=/home/xbox/kubelet/conf/kubelet-kubeconfig --fail-swap-on=false --max-pods=254 --runtime-cgroups=/systemd/system.slice/frigga.service --kubelet-cgroups=/systemd/system.slice/frigga.service --make-iptables-util-chains=falseCopy
现状:
[root@k8s-10 system]# ps aux | grep kubelet | grep feature
root 4054 8.3 1.3 2551816 108444 ? Ssl 10:36 1:21 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --allowed-unsafe-sysctls=net.* --logtostderr=false --log-dir=/data/logs/kubernetes/kubelet --v=2--feature-gates=RotateKubeletClientCertificate=true --cert-dir=/var/lib/kubelet/pki --rotate-certificatesCopy
kubeadm/kubectl/kube-apiserver turn on feature gate
配置文件:
[root@k8s-10 system]# cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
[root@k8s-10 system]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --allowed-unsafe-sysctls='net.*' --logtostderr=false --log-dir=/data/logs/kubernetes/kubelet --v=2 --feature-gates=RotateKubeletClientCertificate=true --cert-dir=/var/lib/kubelet/pki --rotate-certificates
##增加:
--feature-gates=SupportPodPidsLimit=true --pod-max-pids=150
##如下:
[root@k8s-10 system]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --allowed-unsafe-sysctls='net.*' --logtostderr=false --log-dir=/data/logs/kubernetes/kubelet --v=2 --feature-gates=RotateKubeletClientCertificate=true --feature-gates=SupportPodPidsLimit=true --pod-max-pids=150 --cert-dir=/var/lib/kubelet/pki --rotate-certificates
##验证
[root@k8s-10 system]# ps aux | grep kubelet | grep feature
root 14540 40.0 1.2 1092992 101260 ? Ssl 10:53 0:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --allowed-unsafe-sysctls=net.* --logtostderr=false --log-dir=/data/logs/kubernetes/kubelet --v=2--feature-gates=RotateKubeletClientCertificate=true --feature-gates=SupportPodPidsLimit=true --pod-max-pids=150 --cert-dir=/var/lib/kubelet/pki --rotate-certificatesCopy
在pod中起测试线程,root下起160个线程
for i in $(seq 1 160);do
sleep 1000 &
doneCopy
在cgroup中查看,pids达到最大限制
[root@node01 ~]# cat /sys/fs/cgroup/pids/kubepods/burstable/pod34ca46b7-f702-11ea-a6b8-005056a092a5/pids.current
149
[转帖]pod容器开启pid限制的更多相关文章
- Kubernetes基石-pod容器
引用三个问题来叙述Kubernetes的pod容器 1.为什么不直接在一个Docker容器中运行所有的应用进程. 2.为什么pod这种容器中要同时运行多个Docker容器(可以只有一个) 3.为什么k ...
- Docker CentOS / Ubuntu容器开启 SSH 服务
Docker CentOS / Ubuntu容器开启 SSH 服务 在CentOS容器内执行 yum install passwd openssl openssh-server -y # Ubuntu ...
- 同步pod容器内时区
同步pod容器内时区 .直接修改镜像的时间设置,好处是应用部署时无需做特殊设置,但是需要手动构建Docker镜像. .部署应用时,单独读取主机的“/etc/localtime”文件,即创建pod时同步 ...
- k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?
k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...
- 获取 Docker 容器的 PID 号
# 获取容器的 CONTAINER ID docker ps -q 5354ce7e85e1 # 通过 docker top 获取 PID docker top 5354ce7e85e1 UID PI ...
- [转帖]Docker容器CPU、memory资源限制
Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...
- (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...
- [转帖]devops 容器管理平台 rancher 简介
https://testerhome.com/topics/10828 chenhengjie123 for PPmoney · 2017年11月13日 · 最后由 c19950809 回复于 201 ...
- Docker下mysql容器开启binlog日志(保留7天)
现有需求开启用Docker容器启动的mysql数据库的binlog,以作为 日志记录 和 数据恢复,我们了解了MySQL的binlog日志的开启方式以及binlog日志的一些原理和常用操作,我们知道, ...
- [转帖]docker容器保持运行不退出
docker容器保持运行不退出 2019年01月20日 23:21:22 chvalrous 阅读数 1511 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
随机推荐
- 让 sdk 包静默升级的 SAO 操作,你见过几种?
拓展阅读 让 sdk 包静默升级的 SAO 操作,你见过几种? 业务背景 有时候为业务方提供了基础的 sdk 包,为了保证稳定性,一般都是 release 包. 但是每一次升级都非常痛苦,也不可能写一 ...
- Python脚本猜解网站登录密码(带token验证)
目录: 关键代码解释 设置请求头 get_token函数获取token值 完整代码: 运行结果: 上一篇文章:一个简单的Python暴力破解网站登录密码脚本 测试靶机为Pikachu漏洞练习平台暴力破 ...
- 手写spring的ioc的流程截图(笔记-1)
spring ioc是什么? IoC 容器是 Spring 的核心,也可以称为 Spring 容器.Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期. S ...
- xpath语法与lxml库详解
xpath语法与lxml库 摘要:本文详细介绍了xpath语法,lxml库的使用以及两者的结合使用 注:平常爬虫运用的Xpath不是来自element中通过Chrome插件XPath Helper写出 ...
- 技术实操丨使用ModelArts和HiLens Studio完成云端验证及部署
前言 HiLens Studio公测也出来一阵子了,亮点很多,我前些天也申请了公测,通过后赶快尝试了一下,不得不说真的很不错啊,特别是支持云端编辑代码,调试,甚至可以直接运行程序,即使自己的HiLen ...
- GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合
本文分享自华为云社区<GaussDB(for Redis)企业级特性揭秘之多租户管理>,作者: GaussDB 数据库 . 华为云GaussDB(for Redis)持续完善企业级增强特性 ...
- 掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆
本文分享自华为云社区<掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆>,作者:GaussDB 数据库 . 近日,在华为开发者大会2023(Cloud)的"G ...
- DTT年度收官圆桌π,华为云8位技术专家的年末盘点
摘要:收下这份DTT年度收官圆桌π总结,在新的一年心想事成,技术上更上一层楼. 本文分享自华为云社区<DTT年度收官圆桌π,华为云8位技术专家的年末盘点>,作者:华为云社区精选 . 在20 ...
- CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代
摘要:华为云以CNCF Serverless Workflow 规范为标准,联合2012实验室华为元戎团队共同打造了华为云FunctionGraph Workflow,为用户提供函数流管理功能,并支持 ...
- Vue混淆与还原
引言 Vue是一种流行的JavaScript框架,用于构建用户界面.它简单易用且功能强大,备受开发者喜爱.然而,在传输和存储过程中,我们需要保护Vue代码的安全性.混淆是一种有效的保护措施,可以加 ...