我正在尝试设置一个 kubernetes pod,以便它连接到一个设备,特别是 F5 BIG-IP 设备。
部署似乎没问题,事实上我必须修改我在网上找到的代码片段。
当 Pod 尝试启动时,我收到错误。因此我开始调查:
运行kubectl logs <pod_name> -n <namespace>
返回错误:
REST call error: Get <URL>: x509: cannot validate certificate for <IP> because it doesn't contain any IP SANs
通过查看接口上的 wireshark 转储,我发现客户端向服务器发送了一个 TLS 1.2 警报(致命),其描述为“坏证书”。
所以我在网上查找,发现一些文章说这是 kubernetes 尝试连接服务器但无法识别的问题 - 至少我认为他们的意思是这样。建议的解决方法之一是应用 DNS 名称,因此我修改了文件/etc/hosts
以便在部署 YAML 文件中使用 DNS 名称。
结果是错误信息变为:
REST call error: Get <URL>: dial tcp: lookup <hostname>: device or resource busy
对于可能存在什么问题以及如何解决它,您有什么想法吗?
这是一个测试环境,所以我不会介意 - 让我说 - “非正统”的方法,例如忽略证书检查,但如果有解决方案或解决方法最终可以投入生产,我将不胜感激。
感谢您提供的任何意见。
答案1
我找到了问题。似乎可以在部署 YAML 文件中设置一个--insecure=true
标志。这迫使设备不检查证书,并成功连接到 F5 设备。
答案2
修改证书,并添加 IP 地址,作为 DNS 名称 SANS 之外的 SAN
- 请参阅所附截图。