【问题标题】:Kubernetes - net/http: TLS handshake timeout when fetching logs (BareMetal)Kubernetes - net/http:获取日志时的 TLS 握手超时(BareMetal)
【发布时间】:2018-12-20 12:00:34
【问题描述】:

我已经在 Google 和 Stackoverflow 上查看了有关问题原因的任何提示,但没有任何方法可以帮助解决问题。

背景:
1 大师
6 个节点

收集日志时,主节点和 4 个节点工作正常。 2 全新的节点,相同的操作系统,相同的证书,相同的网络,相同的配置,日志不起作用。

问题:kubectl 记录 pod-5c474fdf8-fk5zm -n 部署 来自服务器的错误:Get https://ip-addr:10250/containerLogs/deployment/pod-5c474fdf8-fk5zm/pod:net/http:TLS 握手超时

从主节点和其他4个节点,每次返回日志。我以前也遇到过这个问题,奇迹般地消失了。这次不开心了。

我尝试过的事情:

 - 打开防火墙上的端口
 - 安装和信任的主要证书
 - 将主机名和 IP 添加到主机文件
 - 删除重新添加节点
 - 更新了系统证书
 - 从其他节点远程登录到端口 10250 上的违规节点
 - openssl s_client -connect offendingnodes.com:10250 并与 openssl s_client -connect workingnodes.com:10250 进行比较
 - 搜索错误
 - 再次阅读 K8s 文档。

我真的很茫然,所以任何帮助将不胜感激。

【问题讨论】:

  • 您是否测试过证书是否正常工作?你可以使用curl -vvI http://test
  • 谢谢。经过进一步调查,如果我使用命令
    kubectl logs -v8 pod-5c474fdf8-fk5zm -n deployment
    我会收到完全不同的响应:I0713 11:36:32.412353 110517 helpers.go:201] server response object: [{ "metadata": {}, "status": "Failure", "message": "Get ip-addr:10250/containerLogs/deployment/pod-bdszd/pod: net/http: TLS handshake timeout", "code": 500 }] 这对我来说会建议它不是由证书引起的问题,而是由API服务器引起的。
  • 如何收集日志? kubectl get cskubectl get nodes 命令的输出呢?
  • @NicolaBen 我通过 kubectl -n (namespace) log (pod-name) 收集了日志。集群状态显示一切正常运行。获取节点再次显示一切都很好,除了版本不同。

标签: logging kubernetes tls1.2


【解决方案1】:

我运行了 curl -v8 命令,结果表明这不是 tls/cert 问题(非常糟糕的错误消息。)

这让我开始关注其他问题,例如 API 服务器/网关、节点等。事实证明,我的集群上的错误是由不匹配的 API 引起的。这是由于我添加了一个新节点。在进行了一些挖掘之后,我找到了一个命令,可以让我查看我的集群正在运行的 API 版本,然后引导我找到更新的版本。

我使用“kubeadm 升级计划”更新了我的集群。该命令建议我可以将集群更新到版本 10.1.5 或 10.1.11,但是我需要先更新 Kubeadm。我更新了 Kubeadm,然后在所有其他节点上更新了我的 kube 组件。更新节点后,我使用 kubeadm init join 命令将所有节点添加到新集群集。请注意,此时我想说的是,我的任何 PODS 都没有掉线。

一切都重新加入了集群,现在,我可以通过所有 PODS 浏览整个集群的日志。

我希望这对正在寻找答案的人有所帮助。

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 2021-11-14
    • 2018-05-08
    • 2018-06-27
    • 2018-10-19
    • 1970-01-01
    • 2022-01-14
    • 2020-05-14
    相关资源
    最近更新 更多