Kubernetes日志命令TLS握手超时

时间:2018-01-18 19:21:52

标签: kubernetes kubectl

我正在运行开源kube版本1.9,在运行kubectl logs命令时收到TLS握手超时错误,其他kubectl命令正常工作。

#:/etc/kubernetes/pki> kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
app1-9         1/1       Running   0          2d

#:/etc/kubernetes/pki> kubectl logs counter
Error from server: Get https://XX.XX.XX.XXXX:10250/containerLogs/default/counter/count: net/http: TLS handshake timeout

kubectl版本是:

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

我看到apiserver正在10250上运行。如何通过SSL将kubectl连接到apiserver?

2 个答案:

答案 0 :(得分:0)

  

我看到apiserver正在运行10250.如何让kubectl通过SSL连接到apiserver?

实际上不是在10250上运行的apiserver,即kubelet已在其上安排counter Pod的节点上的apiserver端口。在询问日志时,kubectlkubelet重定向到实际的节点,以便直接从initial begin clock = 0; forever #50 clock = ~clock; end 流式传输日志(而不是将日志从kubelet通过apiserver流式传输到你)。

遇到连接超时时,很像机器和节点之间配置错误的安全组。我不知道如果可以将kubelet端口固定到特定的端口,以便静态地将其列入白名单,但这似乎是以前有人会遇到过的问题。

答案 1 :(得分:0)

我在集群上遇到了同样的问题,并且在过去的几个月里一直困扰着我。我运行了命令curl -v8,表明它不是tls / cert问题(真的是错误消息)。

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

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

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

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