我一直在运行与我的kubernetes节点分开的kubernetes主人。所以我在没有kube-apiserver
,kube-scheduler
或kube-controllermanager
的服务器上运行kubelet
,kube-proxy
和flannel
。
到目前为止,这一切都很完美。但是,今天我尝试设置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?
答案 0 :(得分:0)
这不是必需的,但它肯定会让你的生活更轻松。
这不起作用的原因是因为kube-proxy没有将流量定向到服务。尝试kube-node:8080/ui
(假设您已将其与NodePort配置一样公开
答案 1 :(得分:0)
理论上,Kube apiserver 不期望存在kube-proxy。
这意味着kube apiserver将正确运行,接收请求并处理它们(主要是读取和写入etcd
)。
但是如果您希望整个群集正常运行,则需要运行其他组件,例如:
pods
或deployments
,kube-scheduler
应该正在运行pods
和containers
在节点中运行,kubelet
必须正在运行replications
可以保护,controller-manager
应该正在运行对于kube-proxy
和flannel
,它们是确保网络正常运行的关键部分。 Load Balance
,service
,across-hosts pod communication
等都取决于他们。