AIOps 平台的误解,挑战及建议(中),AIOps常见的误解
762
2022-11-04
K8S(十四) | Kubernetes master通信
本文档对master(实际上是apiserver)和Kubernetes集群之间的通信路径进行了编目。目的是允许用户自定义其安装以强化网络配置,以便群集可以在不受信任的网络(或云提供商上的完全公共IP)上运行。
群集到master
从集群到主服务器的所有通信路径都在apiserver处终止(其他主服务器组件均未设计为公开远程服务)。在典型部署中,apiserver被配置为在安全HTTPS端口(443)上侦听远程连接,其中启用了一种或多种形式的客户端认证。 应启用一种或多种授权形式,尤其是 在允许匿名请求 或服务帐户令牌的情况下。
应为节点配置群集的公共根证书,以便它们可以安全地连接到apiserver以及有效的客户端凭据。例如,在默认GKE部署中,提供给kubelet的客户端凭证采用客户端证书的形式。请参阅 kubelet TLS bootstrapping 以自动配置kubelet客户端证书。
希望连接到apiserver的Pod可以通过利用服务帐户安全地执行此操作,以便Kubernetes在实例化时自动将公共根证书和有效的承载令牌注入到pod中。该kubernetes服务(在所有名称空间中)配置有虚拟IP地址,该地址被重定向(通过kube-proxy)到apiserver上的HTTPS端点。
主组件还通过安全端口与群集服务器通信。
因此,默认情况下,从群集(节点和节点上运行的节点)到主节点的连接的默认操作模式是安全的,可以在不受信任和/或公共网络上运行。
掌握群集
从主服务器(apiserver)到集群有两条主要通信路径。第一个是从apiserver到kubelet进程,它在集群中的每个节点上运行。第二种是通过apiserver的代理功能从apiserver到任何节点,pod或服务。
kubelet的保护者
从apiserver到kubelet的连接用于:
获取pod的日志。附加(通过kubectl)到运行的pod。提供kubelet的端口转发功能。
这些连接终止于kubelet的HTTPS端点。默认情况下,apiserver不会验证kubelet的服务证书,这会使连接受到中间人攻击,并且 不安全地运行在不受信任的和/或公共网络上。
要验证此连接,请使用该--kubelet-certificate-authority标志为apiserver提供根证书包,以用于验证kubelet的服务证书。
如果无法做到这一点,请 在apiserver和kubelet之间使用SSH隧道,以避免连接不受信任或公共网络。
最后, 应启用Kubelet身份验证和/或授权以保护kubelet API。
节点,pod和服务的apiserver
从apiserver到节点,pod或服务的连接默认为纯HTTP连接,因此既未经过身份验证也未加密。它们可以通过前缀https:到API URL中的节点,窗格或服务名称在安全HTTPS连接上运行,但它们不会验证HTTPS端点提供的证书,也不会提供客户端凭据,因此在连接将被加密时,它不会提供任何诚信保证。这些连接目前在不受信任和/或公共网络上运行是不安全的。
SSH隧道
Kubernetes支持SSH隧道来保护Master - > Cluster通信路径。在此配置中,apiserver启动到集群中每个节点的SSH隧道(连接到侦听端口22的ssh服务器),并通过隧道传递发往kubelet,节点,pod或服务的所有流量。此隧道可确保流量不会在运行节点的网络外部暴露。
SSH隧道目前已被弃用,因此除非您知道自己在做什么,否则不应选择使用它们。正在设计替代此通信渠道。
关注我,每天学习Kubernetes
发表评论
暂时没有评论,来抢沙发吧~