8.10.2. NetworkPolicy 和路由器
使用 ovs-multitenant 插件时,所有命名空间中会自动允许来自路由器的流量。这是因为路由器通常位于 default 命名空间中,所有命名空间都允许来自该命名空间中的 pod 的连接。使用 ovs-networkpolicy 插件时,这不会自动发生。因此,如果您有一个默认隔离命名空间的策略,则需要执行额外的步骤来允许路由器访问命名空间。
一种选择是为每个服务创建一个策略,允许从所有来源访问。例如:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-to-database-service spec: podSelector: matchLabels: role: database ingress: - ports: - protocol: TCP port: 5432
这允许路由器访问该服务,但也允许其他用户命名空间中的容器集访问该服务。这不应造成任何问题,因为这些容器集通常可以使用公共路由器访问服务。
另外,您可以创建一个允许从默认命名空间中完全访问的策略,如 ovs-multitenant 插件中所示:
向 default 命名空间添加标签。
重要如果您使用上一步中的默认标签标记了
default
项目,则跳过这一步。集群管理员角色需要向命名空间添加标签。$ oc label namespace default name=default
创建允许从该命名空间进行连接的策略。
注意对您要允许连接的每个命名空间执行此步骤。具有 Project Administrator 角色的用户可以创建策略。
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-from-default-namespace spec: podSelector: ingress: - from: - namespaceSelector: matchLabels: name: default