0

我一直在运行我的 kubernetes master 与我的 kubernetes 节点分开。所以我有kube-apiserver,kube-scheduler并且kube-controllermanager运行在没有kubelet,kube-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?

4

2 回答 2

0

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

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

  • 如果你想pods或被deployments安排,kube-scheduler应该运行
  • 如果您想要podscontainers在节点中运行,kubelet则必须运行
  • 如果你想replications可以被守卫,controller-manager应该运行

至于kube-proxyflannel,它们是确保网络正常工作的关键部分。Load Balance, service,across-hosts pod communication等都取决于它们。

于 2017-04-07T03:28:11.897 回答
0

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

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

于 2017-03-15T15:00:17.593 回答