kubectl 日志不工作,所有其他命令工作

kubectl logs not working, all other commands working

在 kubernetes 1.5.2 上突然 kubectl logs 显示错误,而其他命令工作正常,所以集群设置肯定没有问题,但可能是某种错误.请告知是否有使日志正常工作的解决方法。

$ kubectl logs -f some-pod-name

错误如下:

**Error from server: Get https://Minion-1-IP:10250/containerLogs/default/some-pod-name-3851540691-b18vp/some-pod-name?follow=true: net/http: TLS handshake timeout**

请帮忙。

我认为集群设置有问题。此错误消息不是来自 kubectl 和 apiserver 之间的连接,而是来自 apiserver 和 kubelet 之间的连接。因此这两者之间的证书可能不正确。

免责声明:我现在无法验证这个想法,但我们前一段时间遇到过类似的问题。

简而言之,对我来说,问题是代理配置错误造成的。

上周我遇到了同样的症状。摸索了一段时间后,这个 ISSUE 出现了。

对我来说,这是因为我用

初始化了集群
HTTP_PROXY=http://10.196.109.214:8118 HTTPS_PROXY=http://10.196.109.214:8118 NO_PROXY=10.196.109.214,localhost,127.0.0.1 kubeadm init

10.196.109.214 是我的主节点,我在其上设置了一个 http 代理。代理设置自动写入 kubernete 清单中。 NO_PROXY 这里不包含任何工作节点,所以一切正常,但我无法从工作节点检索任何日志。

我刚刚手动编辑了 /etc/kubernetes/manifests/kube-*.yaml 的环境部分并添加了工作节点的 ips:

env:
- name: NO_PROXY
  value: 10.196.109.214,10.196.109.215,10.196.109.216,10.196.109.217,localhost,127.0.0.1
- name: HTTP_PROXY
  value: http://10.196.109.214:8118
- name: HTTPS_PROXY
  value: http://10.196.109.214:8118

然后用kubectl -n kube-system get pods找到相对的pods,用kubectl -n kube-system delete pod <pod-name>删除,等待kubelet重新创建。现在一切正常。