【发布时间】:2021-09-22 02:08:00
【问题描述】:
我的 Kubernetes pod 出现了一个问题,困扰了我好几个星期。我在我的自托管 Kubernetes 集群上运行了一个 Rust Web 服务,前几天,OpenSSL 证书验证突然停止工作(也就是说,物理机或虚拟机或模板和 Docker 映像没有任何更改)。
奇怪的是,当我在我的机器上运行 Docker 镜像时——无论是在 Minikube 还是 Docker Desktop 中——它都能正常工作。更奇怪的是,当我直接在服务器上将它作为 Docker 容器运行时,它也可以与其他与 Kubernetes 相关的 Docker 容器一起运行。
当我尝试获取数据时抛出的 Rust reqwest 错误:
error sending request for url (https://google.com): error trying to connect: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1915: (unable to get local issuer certificate)
我也尝试从生产集群的 Kubernetes pod 内部运行 wget,但没有任何成功:
~ # wget https://google.com
Connecting to google.com (<my public ipv4>:443)
ssl_client: google.com: certificate verification failed: unable to get local issuer certificate
wget: error getting a response: Connection reset by peer
由此,我得出结论,问题出在我的 Kubernetes 模板的某个地方,尽管它们确实在我的机器上工作(更具体地说,我已经使用 Helm 部署了图像)。有兴趣的朋友,here is all of the source code。
感谢您的帮助!
【问题讨论】:
-
我永远不会期望
google.com是<my public ipv4>;你在使用代理吗?
标签: docker ssl kubernetes rust