首页 > 编程语言 >如何突破k8s node单节点可运行的pod数上限

如何突破k8s node单节点可运行的pod数上限

时间:2024-03-12 11:15:32浏览次数:22  
标签:node KUBELET ARGS kubelet pod k8s 节点

如何突破k8s node单节点可运行的pod数上限

原创 zhuhb 运维笔谈 2024-02-11 08:19 江苏 听全文

前记:kubernetes每个node节点默认可运行的pod数目上限是110个。

我们有个单节点的kubernetes测试环境,随着上线的应用越来越多,今天早上查看有pod启动失败,提示没有可用的调度节点了。一时间没有想起来pod数目上限,先查看了deployment文件是否做了节点亲和,去掉了节点亲和的配置发现pod仍然处于pending的状态。

kubectl get po --all-namespaces |wc -l

得到的结果是112,原来是超过了一个节点可分配的pod数上限110了。

查看了下服务器的物理资源,cpu负载不高,内存还有部分结余,本着节约资源的想法,去调高node上pod可用数上限。

调整pod上限数做法

那么如何去增加node节点上的pod数目呢?我们知道节点pod启动是由kubelet来控制的,那么kubelet上是否有默认的配置呢?

那我们查看kubelet的system服务,执行下:

sudo systemctl status kubelet 可以查看kubelet.service文件的路径,具体如下图:

图片

查看具体的配置文件 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

我们有两个做法,一个是在systemd文件里添加环境变量,还有一个是配置文件里添加配置

方法一:

通过此文件我们发现 KUBELET_CONFIG_ARGS=--config=
/var/lib/kubelet/config.yaml

通过查看
/var/lib/kubelet/config.yaml 文件

图片

如图maxPods配置的是110

我们修改下maxPods的数值,增大到200(具体按照你node节点资源情况设置,不建议设置的过大)

修改完成之后重启下kubelet服务(不会影响正在运行的容器,放心的干吧)

sudo systemctl daemon-reload   
sudo systemctl restart kubelet

方法二:


文件  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf  上添加:

Environment="KUBELET_NODE_MAX_PODS=--max-pods=300"

sudo systemctl daemon-reload  
sudo systemctl restart kubelet

使用方法二的前提是没有使用KUBELET_CONFIG_ARGS,否则会有配置冲突,不一定生效。

重启完kubelet之后,sudo systemctl status kubelet 服务正常,再次查看pod运行情况,pod已处于Running状态了

kubelet还有很多基础的配置,等着读者朋友们自行了解了(^_−)☆

图片

zhuhb

赞赏二维码喜欢作者

Kubernetes24 Kubernetes · 目录 上一篇k9s——kubernetes命令行交互UI,让你的kubectl快起来下一篇如何获取pod的IP等属性添加到环境变量 个人观点,仅供参考 阅读 546 运维笔谈 ​   喜欢此内容的人还喜欢   Kubernetes容器生命周期管理的postStart和preStop用法     我看过的号 运维笔谈 不看的原因   Ansible一键安装k8s     小红帽rh 不看的原因   Helm vs Kustomize 深度比较     我看过的号 DeepNoMind 不看的原因   关注公众号后可以给作者发消息              

人划线

 

标签:node,KUBELET,ARGS,kubelet,pod,k8s,节点
From: https://www.cnblogs.com/cheyunhua/p/18067849

相关文章

  • node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found问题解决方案
    场景centos7服务器使用nvm安装的node之后,只要使用npm或者node,均会出现以下问题。npm-vnode:/lib64/libm.so.6:version`GLIBC_2.27'notfound(requiredbynode)node:/lib64/libc.so.6:version`GLIBC_2.25'notfound(requiredbynode)node:/lib64/libc.so.6:ver......
  • Kubernetes PodSecurityPolicy
    简述KubernetesPodSecurityPolicy机制KubernetesPodSecurityPolicy是为了更精细地控制Pod对资源的使用方式以及提升安全策略。在开启PodSecurityPolicy准入控制器后,Kubernetes默认不允许创建任何Pod,需要创建PodSecurityPolicy策略和相应的RBAC授权策略(AuthorizingPolicies),Pod......
  • [Learn]Build a Business Application Using CAP for Node.js
    https://developers.sap.com/mission.cp-starter-extensions-cap.html1、使用VSCode创建服务https://developers.sap.com/tutorials/cp-apm-nodejs-create-service.html 通过使用SAPCloud应用程序编程模型(CAP)并在本地环境中进行开发,使用CoreData&Services(CDS)、N......
  • Podfile 中 use_frameworks! 的作用
    use_frameworks!生效的条件1.use_frameworks!只有在第三方库的podspec文件中没有设置s.static_framework=true/falue时有效,如果第三方库的podspec文件中设置了s.static_framework=true/false,那么依podspec中的设置为准。2.第三方库必须是源代码,否则也不生效。比如:原来是.a,......
  • k8s数据持久化的方式有哪些
    1)EmptyDir(空目录):没有指定要挂载宿主机上的某个目录,直接由Pod内保部映射到宿主机上。类似于docker中的managervolume;场景有:a.只需要临时将数据保存在磁盘上,比如在合并/排序算法中;b.作为两个容器的共享存储,使得第一个内容管理的容器可以将生成的数据存入其中,同时由同一个webserver......
  • k8s生产中遇到什么特别映像深刻的问题吗,问题排查解决思路是怎么样的?
    答:前端的lb负载均衡服务器上的keepalived出现过脑裂现象。1、当时问题现象是这样的,vip同时出现在主服务器和备服务器上,但业务上又没受到影响;2、这时首先去查看备服务器上的keepalived日志,发现有日志信息显示凌晨的时候备服务器出现了vrrp协议超时,所以才导致了备服务器接管了vip;查......
  • 简单懂点k8s网络(5)深入理解kube-proxy
         ......
  • zookeeper源码(10)node增删改查及监听
    本文将从leader处理器入手,详细分析node的增删改查流程及监听器原理。回顾数据读写流程leaderZookeeperServer.processPacket封装Request并提交给业务处理器LeaderRequestProcessor做本地事务升级PrepRequestProcessor做事务准备ProposalRequestProcessor事务操作发proposal......
  • 写一个给集群中的node大label
    背景:集群中的ds相关的服务,需要指定label的部署packagemainimport( "bytes" "log" "os" "os/exec" "path/filepath" "strings" "time")constlogFilePath="test.log"funcGetTargetIP(co......
  • k8s中audit 和event 有什么不同
    在Kubernetes中,审计(Audit)和事件(Event)是两种不同的日志记录机制,它们各自有不同的用途和特性:审计(Audit):目的:审计日志主要用于记录和监控集群中发生的安全相关事件,如用户操作、API请求、权限变更等。审计日志有助于满足合规性要求,进行安全审计和事后分析。内容:审计日志通常包......