kube-apiserver是否期望存在kube-proxy?

时间:2017-03-15 11:46:01

标签: kubernetes flannel kubelet kube-proxy

我一直在运行与我的kubernetes节点分开的kubernetes主人。所以我在没有kube-apiserverkube-schedulerkube-controllermanager的服务器上运行kubeletkube-proxyflannel

到目前为止,这一切都很完美。但是,今天我尝试设置Web UI并通过API服务器访问它。访问http://kube-master-0:8080/ui时出现以下错误:

Error: 'dial tcp 172.16.72.12:9090: getsockopt: connection timed out' Trying to reach: 'http://172.16.72.12:9090/'

这表明API服务器正在尝试连接到pod IP,因为我们没有在此主机上运行flannel或kube-proxy,172.16.72.12 IP将不会被路由。

我希望在我的API服务器上运行kube-proxy和flannel吗?是否有另一种方法让API服务器代理UI?

2 个答案:

答案 0 :(得分:0)

这不是必需的,但它肯定会让你的生活更轻松。

这不起作用的原因是因为kube-proxy没有将流量定向到服务。尝试kube-node:8080/ui(假设您已将其与NodePort配置一样公开

答案 1 :(得分:0)

理论上,Kube apiserver 期望存在kube-proxy。 这意味着kube apiserver将正确运行,接收请求并处理它们(主要是读取和写入etcd)。

但是如果您希望整个群集正常运行,则需要运行其他组件,例如:

  • 如果您希望安排podsdeploymentskube-scheduler应该正在运行
  • 如果您希望podscontainers在节点中运行,kubelet必须正在运行
  • 如果您希望replications可以保护,controller-manager应该正在运行

对于kube-proxyflannel,它们是确保网络正常运行的关键部分。 Load Balanceserviceacross-hosts pod communication等都取决于他们。