[转帖]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 ...
随机推荐
- Napping - vulnhub - writeup
Napping - vulnhub - writeup 信息收集 目标开放了22和80. root@kali ~ » arp-scan -I eth1 -l Interface: eth1, type ...
- JavaFx之全局异常捕获(二十)
JavaFx之全局异常捕获(二十) javafx开发时,我们有时候需要捕获未处理的异常.手动抛出的异常,在main方法中添加下面代码: public static void main(String[] ...
- MIGO新增页签增强
1.文档说明 本方法是将新增字段,展示在MIGO的新增页签中,并保存到自建表. 新增页签的方法,和采购订单新增页签的方法原理基本一致,都是需要创建函数组,并实现相应方法和屏幕,并在增强中调用该函数组, ...
- ClickHouse(21)ClickHouse集成Kafka表引擎详细解析
目录 Kafka表集成引擎 配置 Kerberos 支持 虚拟列 资料分享 参考文章 Kafka表集成引擎 此引擎与Apache Kafka结合使用. Kafka 特性: 发布或者订阅数据流. 容错存 ...
- vue图片由小放大
原生效果 <template> <div> <transition> <img :src="imageUrl" class="i ...
- 限制左键拖拽图片阴影vue
<template> <div> <img ref="image" :src="imageUrl" :style="im ...
- Java 插入Excel页眉、页脚
前言 在Excel文档中,我们常用页眉页脚来显示文档的附加信息,例如日期.公司名称.Logo或作者信息等.本文将通过Java程序来介绍如何给Excel文档添加页眉页脚.代码示例主要从以下几方面来演示添 ...
- 抖音上超好听的神曲音乐,Python教你一次性下载
不知道什么时候开始,中国出现了南抖音.北快手的互文格局(东市买骏马,西市买鞍鞯-).刚才提到了,之前比较喜欢刷抖音,对于我这种佛系程序猿,看网上这些整容妹子基本一个样.喜欢抖音主要是两个初衷,学做菜听 ...
- 实践丨GaussDB(DWS)资源管理排队原理与问题定位
摘要:GaussDB(DWS)提供了资源管理功能,用户可以根据自身业务情况对资源进行划分,将资源按需划分成不同的资源池,不同资源池之间资源互相隔离. 本文分享自华为云社区<GaussDB(DWS ...
- 浏览器层面优化前端性能(2):Reader引擎线程与模块分析优化点
Reader 引擎线程与模块分析 首先是网页内容,加载完输入到HTML解释器,解释后构成DOM树,这期间如果遇到JavaScript代码就交给JavaScript引擎去处理,如果网页中包含CSS,就交 ...