前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一个云原生小技巧 #76】Kubernetes Pod overhead(Pod 开销)

【每日一个云原生小技巧 #76】Kubernetes Pod overhead(Pod 开销)

作者头像
郭旭东
发布2024-02-04 13:45:18
1760
发布2024-02-04 13:45:18
举报
文章被收录于专栏:云原生工具箱云原生工具箱

在 Kubernetes 中,Pod 开销是指 Pod 基础设施在容器请求和限制之上消耗的资源。这些资源是运行 Pod 内部容器之外所需的系统资源。例如,某些容器运行时可能会增加额外的开销,如虚拟机或宿主操作系统所使用的资源。

  1. 资源配额:当使用定义了开销的 RuntimeClass 创建工作负载时,Pod 开销会被计入资源配额计算中。
  2. 节点调度:kube-scheduler 在决定哪个节点应该运行新 Pod 时,会考虑该 Pod 的开销以及容器请求的总和。
  3. Pod cgroup 大小调整:一旦 Pod 被调度到节点上,该节点上的 kubelet 会在为 Pod 创建新的 cgroup 时考虑 Pod 开销。通过这种方式,Kubernetes 可以更准确地管理资源,确保节点上的资源得到有效利用,同时也避免资源超限的问题。

使用场景

Pod 开销特别重要的场景包括:

  1. 虚拟化容器运行时:当使用需要额外资源(如虚拟化技术)的容器运行时时,Pod 开销能确保这些额外的资源需求得到满足。
  2. 资源配额和调度:在设置资源配额和调度策略时,考虑 Pod 开销可以更准确地分配资源,避免资源超限。

使用技巧

  1. 配置 RuntimeClass:要使用 Pod 开销,您需要一个定义了 overhead 字段的 RuntimeClass
  2. 在 PodSpec 中指定 RuntimeClass:创建 Pod 时,确保在 PodSpec 中指定了正确的 RuntimeClass,以便自动考虑 Pod 开销。
  3. 监控和调试:使用 Kubernetes 提供的 kube_pod_overhead_* 指标来监控 Pod 开销的使用情况,并帮助观察带有定义开销的工作负载的稳定性。

使用案例

以下是一个使用 Pod 开销的示例:

代码语言:javascript
复制
# RuntimeClass 定义示例
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: kata-fc
handler: kata-fc
overhead:
  podFixed:
    memory: "120Mi"
    cpu: "250m"

在这个示例中,kata-fc RuntimeClass 为每个 Pod 增加了 120MiB 的内存和 250m 的 CPU 开销。

代码语言:javascript
复制
# 使用指定 RuntimeClass 的 Pod 示例
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  runtimeClassName: kata-fc
  containers:
  - name: busybox-ctr
    image: busybox:1.28
    stdin: true
    tty: true
    resources:
      limits:
        cpu: 500m
        memory: 100Mi
  - name: nginx-ctr
    image: nginx
    resources:
      limits:
        cpu: 1500m
        memory: 100Mi

在这个 Pod 示例中,通过指定 kata-fc RuntimeClass,Pod 的创建会自动考虑定义在 RuntimeClass 中的开销。这意味着在资源配额计算、节点调度以及 Pod cgroup 大小调整时,都会将这个额外的开销考虑在内。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • 使用技巧
  • 使用案例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档