K8S(十四) | Kubernetes master通信

网友投稿 762 2022-11-04

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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

上一篇:软件测试培训之四种通过渗透测试识别威胁的常用方法
下一篇:软件测试培训之了解渗透测试的核心步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~