首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kubernetes Pod资源调整:不重启实现垂直扩缩容

Kubernetes Pod资源调整:不重启实现垂直扩缩容

作者头像
用户11081884
发布2026-07-20 18:36:20
发布2026-07-20 18:36:20
200
举报

Kubernetes v1.33中,原地Pod调整大小特性已从Alpha升级为Beta并默认启用。这一特性允许管理员在不重启Pod的情况下动态调整容器的CPU和内存资源,特别适用于以下场景:

1、有状态服务:如数据库、消息队列等需要保持持久连接的服务。

2、批处理作业:长时间运行的批处理任务不希望因资源调整而中断。

3、敏感工作负载:对重启敏感的应用,如金融交易处理系统。

4、资源优化:根据负载变化快速调整资源分配,提高集群利用率。

使用说明

前提条件

  • Kubernetes集群版本≥v1.33;
  • kubectl版本≥v1.32;
  • 节点kubelet配置启用原地调整功能;

操作步骤

1、查看当前Pod资源状态

代码语言:javascript
复制
kubectl get pod <pod-name> -o jsonpath='{.spec.containers[*].resources}'

2、通过resize子资源调整资源

代码语言:javascript
复制
kubectl patch pod <pod-name> --subresource=resize --type=merge -p \
'{"spec":{"containers":[{"name":"<container-name>","resources":{"requests":{"cpu":"2","memory":"4Gi"},"limits":{"cpu":"4","memory":"8Gi"}}}]}}'

3、监控调整状态

代码语言:javascript
复制
kubectl get pod <pod-name> -o jsonpath='{.status.conditions[?(@.type=="PodResizeInProgress")]}'

代码示例

示例1:调整单个容器的资源

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: app-container
    image: my-app:latest
    resources:
      requests:
        cpu: "1"
        memory: "2Gi"
      limits:
        cpu: "2"
        memory: "4Gi"

调整命令:

代码语言:javascript
复制
kubectl patch pod my-app --subresource=resize --type=merge -p \
'{"spec":{"containers":[{"name":"app-container","resources":{"requests":{"cpu":"2","memory":"4Gi"},"limits":{"cpu":"4","memory":"8Gi"}}}]}}'

示例2:调整多个容器的资源

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: multi-container-app
spec:
  containers:
  - name: main-app
    image: main-app:v2
    resources:
      requests:
        cpu: "0.5"
        memory: "1Gi"
      limits:
        cpu: "1"
        memory: "2Gi"
  - name: sidecar
    image: sidecar:latest
    resources:
      requests:
        cpu: "0.2"
        memory: "512Mi"
      limits:
        cpu: "0.5"
        memory: "1Gi"

调整命令:

代码语言:javascript
复制
kubectl patch pod multi-container-app --subresource=resize --type=merge -p \
'{"spec":{"containers":[{"name":"main-app","resources":{"requests":{"cpu":"1","memory":"2Gi"},"limits":{"cpu":"2","memory":"4Gi"}}},{"name":"sidecar","resources":{"requests":{"cpu":"0.5","memory":"1Gi"},"limits":{"cpu":"1","memory":"2Gi"}}}]}}'

注意事项

1、资源限制

  • 内存限制不能降低(当前版本限制);
  • CPU限制可以增加或减少;

2、状态监控:

  • 使用 kubectl describe pod 查看 PodResizePendingPodResizeInProgress 状态;
  • 调整完成后,新资源会反映在 status.containerStatuses[*].resources 字段中;

3、失败处理:

  • 如果调整失败,Pod会保持原有资源规格;
  • 检查kubelet日志获取详细错误信息;

4、节点资源检查:

  • 确保节点有足够资源满足新的请求;
  • 否则调整请求会被推迟或拒绝;

通过原地Pod资源调整功能,Kubernetes管理员现在可以更灵活地管理工作负载资源,显著减少对生产环境的影响,提高集群资源利用率。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

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

本文分享自 Nicholas与Pypi 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用说明
    • 前提条件
    • 操作步骤
  • 代码示例
    • 示例1:调整单个容器的资源
    • 示例2:调整多个容器的资源
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档