【kubernetes VPA】记录一次安装 VPA 相关组件的报错解决过程

文章目录

    • 1. 问题描述
    • 2. 问题原因
    • 3. 解决办法
    • 4. 参考链接

image-20240301160517264

1. 问题描述

在执行 ./hack/vpa-up.sh脚本命令时,提示有报错。名为vpa-admission-controller的容器状态一直停留在ContainerCreating,从该Pod详细描述中得知,volume "tls-certs" : secret "vpa-tls-certs" not found,没有找到这两个密钥,无法进行挂载。

[root@k8s-master openssl-1.1.1h]# kubectl get pods -n kube-system |grep vpa
vpa-admission-controller-64cb9cfb4b-xvzpf   0/1     ContainerCreating   0                3m30s
vpa-recommender-6fdd69df6c-rj725            1/1     Running             0                25m
vpa-updater-8567bff646-z28v9                1/1     Running             0                25m
[root@k8s-master openssl-1.1.1h]# kubectl describe pod vpa-admission-controller-64cb9cfb4b-xvzpf -n kube-system
Name:             vpa-admission-controller-64cb9cfb4b-xvzpf
Namespace:        kube-system
Priority:         0
Service Account:  vpa-admission-controller
Node:             k8s-node01/192.168.20.32
Start Time:       Fri, 01 Mar 2024 15:54:35 +0800
Labels:           app=vpa-admission-controllerpod-template-hash=64cb9cfb4b
Annotations:      <none>
Status:           Pending
IP:
IPs:              <none>
Controlled By:    ReplicaSet/vpa-admission-controller-64cb9cfb4b
Containers:admission-controller:Container ID:Image:          k8s.gcr.io/autoscaling/vpa-admission-controller:0.12.0Image ID:Ports:          8000/TCP, 8944/TCPHost Ports:     0/TCP, 0/TCPState:          WaitingReason:       ContainerCreatingReady:          FalseRestart Count:  0Limits:cpu:     200mmemory:  500MiRequests:cpu:     50mmemory:  200MiEnvironment:NAMESPACE:  kube-system (v1:metadata.namespace)Mounts:/etc/tls-certs from tls-certs (ro)/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ncfnk (ro)
Conditions:Type              StatusInitialized       TrueReady             FalseContainersReady   FalsePodScheduled      True
Volumes:tls-certs:Type:        Secret (a volume populated by a Secret)SecretName:  vpa-tls-certsOptional:    falsekube-api-access-ncfnk:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type     Reason       Age                  From               Message----     ------       ----                 ----               -------Normal   Scheduled    3m42s                default-scheduler  Successfully assigned kube-system/vpa-admission-controller-64cb9cfb4b-xvzpf to k8s-node01Warning  FailedMount  99s                  kubelet            Unable to attach or mount volumes: unmounted volumes=[tls-certs], unattached volumes=[tls-certs kube-api-access-ncfnk]: timed out waiting for the conditionWarning  FailedMount  95s (x9 over 3m42s)  kubelet            MountVolume.SetUp failed for volume "tls-certs" : secret "vpa-tls-certs" not found

2. 问题原因

openssl版本低。

3. 解决办法

升级openssl版本。

[root@k8s-master openssl-1.1.1h]# openssl version -a
OpenSSL 1.0.2k-fips  26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/etc/pki/tls"
engines:  rdrand dynamic

下载并解压openssl-1.1.1h.tar.gz

wget https://www.openssl.org/source/openssl-1.1.1h.tar.gztar zxvf openssl-1.1.1h.tar.gzcd openssl-1.1.1h./config

opessl编译安装完成

make & make install

显示如下结果,表示安装完成。

image-20240301161248810

[root@k8s-master openssl-1.1.1h]# mv /usr/bin/openssl /usr/bin/openssl.bak[root@k8s-master openssl-1.1.1h]# ln -s /usr/local/bin/openssl /usr/bin/openssl
[root@k8s-master openssl-1.1.1h]# ln -s /usr/local/include/openssl/ /usr/include/openssl[root@k8s-master openssl-1.1.1h]# echo "/usr/local/lib64" >> /etc/ld.so.conf
[root@k8s-master openssl-1.1.1h]# ldconfig -v

完成openssl版本的升级。

[root@k8s-master openssl-1.1.1h]# openssl version -a
OpenSSL 1.1.1h  22 Sep 2020
built on: Fri Mar  1 07:46:58 2024 UTC
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib64/engines-1.1"
Seeding source: os-specific

重新执行 ./hack/vpa-up.sh脚本,顺利通过,无报错。

[root@k8s-master vertical-pod-autoscaler]# ./hack/vpa-up.sh
customresourcedefinition.apiextensions.k8s.io/verticalpodautoscalercheckpoints.autoscaling.k8s.io created
customresourcedefinition.apiextensions.k8s.io/verticalpodautoscalers.autoscaling.k8s.io created
clusterrole.rbac.authorization.k8s.io/system:metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:vpa-actor created
clusterrole.rbac.authorization.k8s.io/system:vpa-checkpoint-actor created
clusterrole.rbac.authorization.k8s.io/system:evictioner created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-actor created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-checkpoint-actor created
clusterrole.rbac.authorization.k8s.io/system:vpa-target-reader created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-target-reader-binding created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-evictionter-binding created
serviceaccount/vpa-admission-controller created
clusterrole.rbac.authorization.k8s.io/system:vpa-admission-controller created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-admission-controller created
clusterrole.rbac.authorization.k8s.io/system:vpa-status-reader created
clusterrolebinding.rbac.authorization.k8s.io/system:vpa-status-reader-binding created
serviceaccount/vpa-updater created
deployment.apps/vpa-updater created
serviceaccount/vpa-recommender created
deployment.apps/vpa-recommender created
Generating certs for the VPA Admission Controller in /tmp/vpa-certs.
Generating RSA private key, 2048 bit long modulus (2 primes)
.......................................................................+++++
........................................................................................................+++++
e is 65537 (0x010001)
Generating RSA private key, 2048 bit long modulus (2 primes)
................................................................................+++++
.........................................................................................................................................................................................................+++++
e is 65537 (0x010001)
Signature ok
subject=CN = vpa-webhook.kube-system.svc
Getting CA Private Key
Uploading certs to the cluster.
secret/vpa-tls-certs created
Deleting /tmp/vpa-certs.
deployment.apps/vpa-admission-controller created
service/vpa-webhook created

最终vpa-admission-controller的Pod正常运行~

[root@k8s-master vertical-pod-autoscaler]# kubectl get pods -n kube-system |grep vpa
vpa-admission-controller-64cb9cfb4b-m76n5   1/1     Running   0                25m
vpa-recommender-6fdd69df6c-q7z7t            1/1     Running   0                25m
vpa-updater-8567bff646-5dbk4                1/1     Running   0                25m

image-20240301162611219

4. 参考链接

❤️‍🔥autoscaler/vertical-pod-autoscaler at master · kubernetes/autoscaler

🩷vpa-admission-controller- not created · Issue #2810 · kubernetes/autoscaler

❤️OpenSSL安装升级_升级openssl-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504217.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向企业的人脸特效SDK解决方案

随着科技的进步和消费者对高质量体验的需求增加&#xff0c;人脸特效技术已经逐渐渗透到各个领域&#xff0c;包括社交媒体、游戏、广告、影视制作等。为了满足这一需求&#xff0c;美摄科技推出了一款高效、稳定且易于集成的人脸特效SDK解决方案。 美摄科技的人脸特效SDK解决…

自动化测试工具:Python脚本(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 快速、高效的测试工具及脚本&#xff0c;能使程序猿的开发工作事…

AI时代编程新宠!如何让孩子成为未来的编程大师?

文章目录 一、了解编程的基础概念二、选择适合的编程工具三、激发孩子的兴趣四、注重基础能力的培养五、提供实践机会六、鼓励孩子与他人合作七、持续支持与鼓励《信息学奥赛一本通关》本书定位内容简介作者简介目录 随着科技的迅猛发展&#xff0c;编程已经从一种专业技能转变…

springboot,druid动态数据源切换

关键字&#xff1a;springboot&#xff0c;druid数据库连接池&#xff0c;两个数据源&#xff08;可以切换成多个&#xff09;&#xff0c;事务管理 关于druid简介传送门&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…

银行间报价方式

一、对话报价 一方发起&#xff1a;录入 交易前台系统有个窗口&#xff0c;你看就长这个样子。 现券买卖窗口 点右键&#xff0c;出现新对话报价 下面这就是对话报价窗口 【买入】和【卖出】只能点一个。 对手方栏、交易员栏填一个不存在的机构&#xff0c;是填不进去的。…

SpringCloud微服务-Docker基本操作

Docker基本操作 文章目录 Docker基本操作1、镜像操作命令1.1、从DockerHub中拉取一个镜像并且查看1.2、镜像的导出和导入 2、容器相关命令2.1、创建运行一个Nginx容器2.2、进入容器&#xff0c;并且修改容器中的文件 3、数据卷3.1、操作数据卷命令3.2、案例实战-创建数据卷3.3、…

李沐动手学习深度学习——3.7练习

尝试调整超参数&#xff0c;例如批量大小、迭代周期数和学习率&#xff0c;并查看结果。 num_epochs 10&#xff0c; batch_size 256&#xff0c; lr 0.1情况下 num_epochs 5&#xff0c; batch_size 256&#xff0c; lr 0.1情况下 可以尝试一下&#xff0c;三种参数变…

Springboot接口参数校验

在设计接口时我们通常需要对接口中的非法参数做校验&#xff0c;以降低在程序运行时因为一些非法参数而导致程序发生异常的风险&#xff0c;例如登录的时候需要校验用户名密码是否为空&#xff0c;创建用户的时候需要校验邮件、手机号码格式是否准确。如果在代码中对接口参数一…

html5新增标签+css3新增标签

新增标签 一.html5新增标签1.语义化标签2.多媒体标签&#xff08;1&#xff09;视频video&#xff08;2&#xff09;音频audio3.总结 3.input属性![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f0795316d5f2418fb04e43e9af3e3a27.png#pic_center)4.表单属性![在这…

vs code更新后json文件无法识别通配符 ,编译多文件失败的解决办法

问题描述 在Mac或者LInux上&#xff0c;进行C/C相同路径下进行多文件编译时&#xff0c;之前设置好的json文件突然不能解释通配符&#xff0c;并且将带有单引号的地址传给clang&#xff0c;由于*.c被扩在单引号中&#xff0c;clang找不到文件导致失败。 如果将命令端中的指令复…

node.js 用 xml2js.Parser 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 编写 mm_xml2js_csv.js 如下 // 用 xml2js.Parser 读 F…

在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁

内核-用户空间鸿沟 构建自己的 TCP栈是一项极具挑战的任务。通常&#xff0c;当用户空间应用程序需要互联网连接时&#xff0c;它们会调用操作系统内核提供的高级 API。这些 API 帮助应用程序 连接网络创建、发送和接收数据&#xff0c;从而消除了直接处理原始数据包的复杂性。…