许多部署Kubernetes主节点的过程都建议您使用它--register-schedulable=false来防止将用户Pod调度到主节点(例如https://coreos.com/kubernetes/docs/latest/deploy-master.html)。在非常小的Kubernetes集群上,除非绝对必要,否则似乎无法有效地阻止整个节点用于Pod调度的计算资源浪费。
这个问题的答案(Kubernetes会在主节点上运行Docker容器吗?)表明确实有可能在主节点上运行用户Pod,但并没有解决与之相关的任何问题。允许这个。
到目前为止,我能找到的唯一表明可能与允许这样做有关的信息是,主节点上的Pod似乎通信不安全(请参阅http://kubernetes.io/docs/admin/master- node-communication /和https://github.com/kubernetes/kubernetes/issues/13598)。我假设这将潜在地允许在主节点上运行的恶意Pod访问/劫持Kubernetes功能,这些功能通常是非主节点上的Pod无法访问的。如果仅在内部开发运行的Pod /容器,可能不会有什么大不了的-尽管我猜总是会有某人入侵对Pod /容器的访问权限,从而获得对主节点的访问权限的可能性。
这听起来像与此场景相关的可行潜在风险(允许用户Pod在Kubernetes主节点上运行)吗?这样的设置还有其他潜在的问题吗?
在主节点上运行 pod 绝对是可能的。
您提到的安全风险是一个问题,但是如果您配置服务帐户,对于所有已部署的 pod 而言,对 apiserver 进行安全远程访问与不安全本地访问实际上并没有太大区别。
另一个问题是资源争用。如果您在主节点上运行破坏主组件的恶意 Pod,它可能会破坏整个集群的稳定性。显然,这是生产部署的一个问题,但如果您希望在开发/实验环境中最大限度地利用少量节点,那么在主节点上运行几个额外的 Pod 应该没问题。
最后,您需要确保主节点有足够大的 pod cidr 分配给它。在某些部署中,master 只得到一个 /30,这不会允许你运行很多 pod。
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |