k8s.1.28.x空间预留,过期镜像删除

CPU和内存预留配置

复制代码
使用 kubelet 的配置文件中指定 kube-reserved 字段
在 kubeadm init 命令的参数文件中指定 kube-reserved 字段
使用 kubelet 的配置文件

在 kubelet 的配置文件中,可以通过指定 kube-reserved 字段来预留节点的空间。kube-reserved 字段是一个对象,它可以指定节点预留的内存和 CPU。
例如,以下 kubelet 的配置文件将预留 2G 内存和 2000m CPU:
复制代码
kube-reserved:
  memory: 2Gi
  cpu: 2000m

以下 kubeadm init 命令的参数文件将预留 2G 内存和 2000m CPU:

yaml 复制代码
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
imageRepository: k8s.gcr.io
kubernetesVersion: v1.28.0
imagePullPolicy: IfNotPresent
nodeRegistration:
  name: node1
  criSocket: /var/run/dockershim.sock
  taints:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
  kubeletExtraArgs:
    image-gc-high-threshold: 80
    image-gc-low-threshold: 60
    deployments.replicas: 3
    kube-reserved:
      memory: 2Gi
      cpu: 2000m

通过这种方式,您可以根据需要预留节点的空间。

  • 注意事项

  • kube-reserved 字段指定的空间将从节点的总资源中扣除。

  • kube-reserved 字段仅适用于节点的系统进程和 Kubernetes 系统组件。

  • 如果您使用 Deployment 或 DaemonSet 来创建 Pod,您可以通过指定 Pod 的资源限制来限制 Pod 可以使用的资源。

    以下是一些建议:

  • 根据您的实际需求来设置 kube-reserved 字段的值。

  • 不要将 kube-reserved 字段的值设置得太高,否则可能会影响节点的性能。

过期镜像删除

--image-gc-high-threshold 参数指定了镜像使用率达到多少时,kubelet 开始清理旧镜像。比如,设置为 80%,表示当集群中镜像使用率达到 80% 时,kubelet 将开始清理旧镜像。
--image-gc-low-threshold 参数指定了镜像使用率达到多少时,kubelet 停止清理旧镜像。比如,设置为 60%,表示当集群中镜像使用率达到 60% 时,kubelet 将停止清理旧镜像.
举个例子,假设集群中总共有 100 个镜像,其中 80 个镜像正在使用,20 个镜像没有使用。如果将 --image-gc-high-threshold 参数设置为 80%,那么当镜像使用率达到 80%,也就是 80 个镜像正在使用时,kubelet 将开始清理旧镜像。
  • 此时,kubelet 将根据一定的策略来选择要清理的镜像。比如,kubelet 可以选择最早创建的镜像,也可以选择最少使用的镜像。

  • 如果将 --image-gc-low-threshold 参数设置为 60%,那么当镜像使用率达到 60%,也就是 60 个镜像正在使用时,kubelet 将停止清理旧镜像。

  • 此时,kubelet 将不再清理镜像,即使集群中还有未使用的镜像。

  • 在实际应用中,您可以根据集群的实际情况来调整 --image-gc-high-threshold 和 --image-gc-low-threshold 参数的值。

以下是一些建议:
  • --image-gc-high-threshold 参数的值应设置为集群中镜像使用率的阈值。如果设置的值过高,可能会导致集群中存储大量旧镜像,从而占用大量磁盘空间。
  • --image-gc-low-threshold 参数的值应设置为集群中镜像使用率的安全阈值。如果设置的值过低,可能会导致 kubelet 频繁清理镜像,从而影响集群的性能。
yaml 复制代码
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
imageRepository: k8s.gcr.io
kubernetesVersion: v1.28.0
imagePullPolicy: IfNotPresent
nodeRegistration:
  name: node1
  criSocket: /var/run/dockershim.sock
  taints:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
  kubeletExtraArgs:
    image-gc-high-threshold: 80
    image-gc-low-threshold: 60
   max-pods: 230
K8S 每个节点的默认 pods 数量是 110。也就是说,每个节点可以同时运行 110 个 pods。
shell 复制代码
max-pods: 230 #调整为230个
相关推荐
roman_日积跬步-终至千里3 小时前
【K8s基础】K8s下的Helm和Operator:包管理器与运维程序化
运维·容器·kubernetes
技术liul7 小时前
Docker Compose和 Kubernetes(k8s)区别
docker·容器·kubernetes
MaCa .BaKa8 小时前
35-疫苗预约管理系统(微服务)
spring boot·redis·微服务·云原生·架构·springcloud
竹木一54010 小时前
Docker拉取镜像代理配置实践与经验分享
经验分享·docker·容器
破 风11 小时前
Docker启动mysql容器时找不到 mysqlx.sock 和 mysqld.sock
mysql·docker·容器
阿里云云原生11 小时前
SAE 实现应用发布全过程可观测
云原生
鱼饼6号12 小时前
Jenkins Pipeline 构建 CI/CD 流程
linux·运维·服务器·ci/cd·容器·jenkins
Ares-Wang13 小时前
kubernetes》》k8s》》Heml
云原生·容器·kubernetes
阿里云大数据AI技术13 小时前
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
大数据·云原生·serverless
容器魔方14 小时前
Bilibili、中电信人工智能科技、商汤科技、联通云等正式加入Volcano社区用户组
云原生·容器·云计算