前提条件
Kubernetes >= 1.25
Openssl >= 1.1.1
部署MetricServer
官方Github:autoscaler/vertical-pod-autoscaler at vertical-pod-autoscaler-1.1.2 · kubernetes/autoscaler · GitHub
部署VPA(v1.1.2)
1 | git clone https://github.com/kubernetes/autoscaler.git -b vertical-pod-autoscaler-1.1.2 |
已知问题
ERROR: Failed to create CA certificate for self-signing. If the error is "unknown option -addext", update your openssl version or deploy VPA from the vpa-release-0.8 branch.
原因:openssl 版本太低
解决方法:执行vpa-down.sh
卸载后,升级openssl,重新安装
升级openssl(部署机升级即可)
查看当前版本
下载地址(最新稳定版3.3,支持到2026.4.9):openssl-3.3.1.tar.gz
备份
1 | mv /usr/bin/openssl /usr/bin/openssl.bak |
安装依赖
1 | yum -y install perl-IPC-Cmd perl-ExtUtils-MakeMaker perl-Data-Dumper |
编译
1 | tar zxvf openssl-3.3.1.tar.gz |
软连接
1 | ln -s /usr/local/openssl/lib/libssl.so.3 /usr/lib/libssl.so.3 |
查看版本
测试VPA
创建Deployment
1 | cat > apache.yaml << EOF |
1 | kubectl apply -f apache.yaml |
查看当前pod资源
1 | kubectl describe pod <podname> |
没有限制,所以没有Limits和Requests
创建VPA
1 | cat > vpa-apache.yaml << EOF |
1 | kubectl apply -f vpa-apache.yaml |
1 | # 需要等待两分钟,才能返回结果 |
pod会根据推荐资源配置,重新分配
1 | kubectl describe vpa apache-deployment-basic-vpa |
1 | kubectl describe pod <podname> |
vpa与重新创建的pod资源对应
增加负载
1 | yum -y install httpd-tools |
1 | ab -c 100 -n 500000 http://10.20.13.140:29704/ |