部署 k8s-prometheus-adapter 的 custom-metrics-apiserver 时,pod 总是启动失败,对应的错误日志:
unable to install resource metrics API: unable to load server certificate: open /var/run/serving-cert/serving.crt: no such file or directory
用 kubectl edit secret cm-adapter-serving-certs -n monitoring
查看 secret 中的配置数据
data:
tls.crt: ******
tls.key: ******
kind: Secret
发现配置名称是 tls.crt 与 tls.key ,而 custom-metrics-apiserver pod 用到的是 serving.crt 与 serving.key 。
当时创建 secret 的命令用的是 tls 参数。
kubectl -n monitoring create secret tls cm-adapter-serving-certs --cert=./serving.crt --key=./serving.key
改为 generic 参数创建 secret 。
kubectl -n monitoring create secret generic cm-adapter-serving-certs --from-file=./serving.crt --from-file=./serving.key
secret 的配置名称变成 serving.crt 与 serving.key 。
data:
serving.crt: ******
serving.key: ******
kind: Secret
custom-metrics-apiserver pod 就成功启动了,问题就解决了。