尝试启动API服务器时,hyperkube卡住了

我在hyperkube中运行Kubernetes 1.5.0,并且在日志中循环重复以下行:

E0228 21:28:35.891472 20321 reflector.go:188] pkg/kubelet/config/apiserver.go:44: Failed to list *api.Pod: Get http://localhost:8443/api/v1/pods?fieldSelector=spec.nodeName%3D127.0.0.1&resourceVersion=0: dial tcp 127.0.0.1:8443: getsockopt: connection refused E0228 21:28:35.892410 20321 reflector.go:188] pkg/kubelet/kubelet.go:386: Failed to list *api.Node: Get http://localhost:8443/api/v1/nodes?fieldSelector=metadata.name%3D127.0.0.1&resourceVersion=0: dial tcp 127.0.0.1:8443: getsockopt: connection refused 

以下是我如何启动Hyperkube:

 docker run \ --volume=/:/rootfs:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:rw \ --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \ --volume=/var/run:/var/run:rw \ --net=host \ --pid=host \ --privileged=true \ --name=kube -d \ gcr.io/google-containers/hyperkube:v1.5.3 \ /hyperkube kubelet --containerized \ --hostname-override="127.0.0.1" \ --address="0.0.0.0" \ --api-servers=http://localhost:8443 \ --allow-privileged=true --v=2 

要从@ nehal-j-wani发表评论, 8443是安全端口,但是您使用的是httpscheme,没有任何客户端或CA证书。

听起来你不打算通过TLS与本地API服务器通信,所以你应该:

  • 使用不安全的端口(默认为8080
  • 修复您的kubelet标志以正确使用TLS通信

也可以看看:

  • kubelet
  • TLS引导