Kubernetes 网络策略出口端口



>我有以下网络策略来限制对前端服务页面的访问:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
namespace: namespace-a
name: allow-frontend-access-from-external-ip
spec:
podSelector:
matchLabels:
app: frontend-service
ingress:
- from:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 443
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 443

我的问题是:我是否可以使用出口规则(443 上的端口限制(强制执行 HTTPS,如果是这样,它是如何工作的?假设客户端连接到前端服务,客户端在他的机器上选择一个随机端口进行此连接,Kubernetes 如何知道该端口,或者集群中是否存在一种端口映射,因此返回客户端的流量在端口 443 上,并在离开集群时映射回客户端原始端口?

您可能对网络策略 (NP( 有错误的理解。

您应该如何解释本节:

egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 443

为网段内所有 Pod 的传出流量打开端口4430.0.0.0/0

你要问的事情

Kubernetes 如何知道该端口,或者是否存在一种端口 在群集中映射,以便返回到客户端的流量位于端口上 443 并在离开 簇?

由 kube-proxy 以下列方式管理:

对于从 pod 到外部地址的流量,Kubernetes 只需使用 SNAT。它的作用是将容器的内部源 IP:port 替换为主机的 IP:端口。当返回数据包返回到主机时,它会将容器的 IP:port 重写为目标,并将其发送回原始容器。整个过程对原始 pod 是透明的,他们根本不知道地址转换。

看看 Kubernetes 网络基础知识,以便更好地理解。

最新更新