1. 相关
 这个分为几种:
 kubectl explain vpa.spec.updatePolicy.updateMode
     Off # 不自动伸缩,但给出推荐值
     Initial 
     Recreate
     InPlaceOrRecreate
     Auto
 # 测试用的是Off,就是只给建议的资源大小,不自动更新
2. 导入镜像 vpa.tar.gz
 镜像
 通过网盘分享的文件:vpa.tar.gz
 链接: https://pan.baidu.com/s/1cVmxDJAPrsmZebvxk7NiVg?pwd=eivq 提取码: eivq
 ctr -n k8s.io import  vpa.tar.gz
 ​
 # 如果没有的话,可以看以下配置,然后拉取相应镜像即可
 cd ./autoscaler/vertical-pod-autoscaler/deploy/
 admission-controller-deployment.yaml
 recommender-deployment.yaml
 updater-deployment.yaml
 # 主要是版本可能不同
 ​
 # 拉取,如果有设置allow LAN的话按照以下形式拉取,没有的话下载我的
 ​
 export https_proxy="http://10.0.0.1:7890";registry.k8s.io/autoscaling/vpa-admission-controller:1.4.1
3. 拉取官方的git
 export https_proxy="http://10.0.0.1:7890";git clone https://github.com/kubernetes/autoscaler.git
 # 如果不能访问外网,则需要使用代理,10.0.0.1虚拟为交换机ip,端口在vpn上设置
4. 使用脚本,部署vpa
  cd autoscaler/vertical-pod-autoscaler && ./hack/vpa-up.sh
5. 查看是否成功
 kubectl get -n kube-system po
 ​
 [root@k8s-cluster241 metrics]# kubectl get -n kube-system po | grep vpa
 vpa-admission-controller-5d79d9f956-fkp58   1/1     Running   0               45m
 vpa-recommender-544df95d65-xmdrm            1/1     Running   0               45m
 vpa-updater-54ddf66b6d-vfcql                1/1     Running   0               45m
 ​
6. 编写测试用的资源清单
 #这个是有nginx的一个deploy
 cat > testVpa.yaml << 'EOF'
 apiVersion: apps/v1                                       
 kind: Deployment
 metadata:
   labels:
     app: nginx
   name: nginx
   namespace: vpa
 spec:
   replicas: 2
   selector:
     matchLabels:
       app: nginx
   template:
     metadata:
       labels:
         app: nginx
     spec:
       containers:
       - image: docker.io/jasonyin2020/oldboyedu-games:v0.6
         name: nginx
         resources:
           requests:
             cpu: 100m
             memory: 250Mi
 EOF
 # 这个是vpa绑定上面那个应用,通过收集她的数据,以及自己更新策略,来做出相应动作
 cat > vpa.yaml << 'EOF'
 apiVersion: autoscaling.k8s.io/v1  
 kind: VerticalPodAutoscaler
 metadata:
   name: nginx-vpa
   namespace: vpa
 spec:
   targetRef:
     apiVersion: "apps/v1"
     kind: Deployment
     name: nginx
   updatePolicy:
     updateMode: "Off"
   resourcePolicy:
     containerPolicies:
     - containerName: "nginx"
       minAllowed:
         cpu: "250m"
         memory: "100Mi"
       maxAllowed:
         cpu: "2000m"
         memory: "2048Mi"
 EOF
7. 启用
 kubectl apply -f testVpa.yaml
 kubectl apply -f vpa.yaml
注:关于模式方面
 在vpa.yaml中,我们可以看到以下片段
   updatePolicy:
     updateMode: "Off"
 以上的Off代表vpa的策略
 ​
8. 查看是否成功
 kubectl describe -n vpa vpa nginx-vpa
 ​
 [root@k8s-cluster241 metrics]# kubectl describe -n vpa vpa nginx-vpa
 。。。
   Recommendation:
     Container Recommendations:
       Container Name:  nginx
       Lower Bound:
         Cpu:     250m
         Memory:  262144k
       Target:
         Cpu:     250m
         Memory:  262144k
       Uncapped Target:
         Cpu:     25m
         Memory:  262144k
       Upper Bound:
         Cpu:     537m
         Memory:  561970914
 Events:          <none>
 ​
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐