暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes之Pod自动垂直伸缩VPA部署安装

运维笔谈 2024-05-15
126

上文Kubernetes之Pod自动垂直伸缩VPA介绍和使用场景我们介绍了VPA的主要功能和使用的场景,本文主要来介绍如何部署VPA。参考官方安装部署文档:https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler

1. 部署对应版本的VPA需要的k8s版本如下:

VPA versionKubernetes version
1.1.11.25+
1.01.25+
0.141.25+
0.131.25+
0.121.25+
0.111.22 - 1.24
0.101.22+
0.91.16+
0.81.13+
0.4 to 0.71.11+
0.3.X and lower1.7+

2. 假如需要部署的版本大于1.0.0,需要先执行下CRD和RBAC更新。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/vpa-release-1.0/vertical-pod-autoscaler/deploy/vpa-v1-crd-gen.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/vpa-release-1.0/vertical-pod-autoscaler/deploy/vpa-rbac.yaml


    3.需要安装了metrics server ,安装的服务器kubectl能够连接到k8s集群。

    4.安装最新的master版本,具体分支可以参考运行的k8s版本。

      git clone https://github.com/kubernetes/autoscaler.git
      cd autoscaler/vertical-pod-autoscaler/
      # 然后执行
      ./hack/vpa-up.sh
      # 镜像需要想个办法中转下

      5. 创建一个典型的VPA yaml示例。

        apiVersion: autoscaling.k8s.io/v1
        kind: VerticalPodAutoscaler
        metadata:
        name: my-app-vpa
        spec:
        targetRef:
        apiVersion: "apps/v1"
        kind: Deployment
        name: my-app
        updatePolicy:
        updateMode: "Auto"

        以下是VPA的几种主要模式:

        1. 自动(Auto):VPA 在 Pod 创建时分配资源请求,并且会根据需要更新现有Pod的资源请求。当前,该模式等同于“重建”,意味着可能会导致Pod重启以应用资源调整。未来,若支持无重启(即原地更新)的资源请求调整时,此模式将会优先采用这种更新方式。先阶段Auto也是玩了一个寂寞啊

        2. 重建(Recreate):在 Pod 创建时分配资源请求,并且仅当发现现有的Pod资源请求与新推荐值有较大差异时,通过驱逐并重新创建Pod来更新资源请求。这一过程会尊重Pod中断预算(Pod Disruption Budget, PDB),以尽量减少服务中断。该模式适用于需要确保资源调整时Pod总是重启的场景,但一般情况下推荐使用“自动”模式,除非有特殊需求。

        3. 初始(Initial):VPA 仅在 Pod 创建时分配资源请求,之后即使有新的资源推荐,也不会对已存在的Pod进行任何资源请求的调整。这种方式适用于希望首次设置后就固定Pod资源需求的场景。

        4. 关闭(Off):VPA 不会自动更改Pod的资源需求。它仍会计算资源推荐值,但这些推荐值仅供查看,不会自动应用到Pod上。适用于需要手动管理资源调整或仅利用VPA进行资源需求分析的情况。还是查看这个手动来调整request和limit吧

        文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论