kubernetes V19
创建一个名为allow-port-from-namespace的新NetworkPolicy,以允许内部现有命名空间中的Pod连接到同一命名空间中其他Pod的端口80。
确保新的NetworkPolicy:
不允许访问未在端口80上监听的Pod 不允许来自不在名称空间内部的Pod进行访问
我需要知道是否可以在不向namspace和pod中添加标签的情况下做到吗?
答案 0 :(得分:1)
在k8s networkpolicy docs中,您读到:
默认情况下,吊舱是非隔离的;他们接受来自任何 来源。
通过具有选择它们的NetworkPolicy可以隔离它们。一旦 命名空间中有任何NetworkPolicy选择特定的容器, 该广告连播会拒绝任何人不允许的任何连接 网络政策。 (名称空间中未被选择的其他Pod 任何NetworkPolicy都会继续接受所有流量。)
网络策略不冲突;它们是添加剂。如果有政策或 策略选择一个广告连播,该广告连播仅限于 这些策略的入口/出口规则的并集。因此, 评价不会影响政策结果
这意味着一旦分配(选择)了具有网络策略的Pod,就不会设置拒绝规则,因为默认情况下所有内容都被拒绝。您只指定允许规则。
下面解释的这一点让我们回到k8s文档中,您可以阅读以下内容:
在入口中可以指定四种选择器 从部分或出口到部分:
podSelector :这将在与 应被允许作为入口源或出口的NetworkPolicy 目的地。
namespaceSelector :这将选择所有特定的命名空间 应该允许将豆荚作为入口来源或出口目的地。
namespaceSelector 和 podSelector :单个to / from条目, 同时指定namespaceSelector和podSelector选择特定对象 特定名称空间中的Pod [...]
我不会在此处粘贴所有文档,请检查其余here。
现在回答您的问题:"I need to know if i can do it without adding a labels to namspace and pod or not ?"
在上面提到的文档中应该注意的是,只能使用标签来定位名称空间和pod。
并且当您不使用名称空间标签选择器时,选择器会默认到部署了networkpolicy的名称空间。
因此,是的,只要在要定位的名称空间中部署网络策略,就可以在不向名称空间添加标签的情况下进行操作。而且,只要这是名称空间中唯一的容器,您也可以不向容器添加标签。
答案 1 :(得分:0)
从问题上来说,我并没有……完全困惑。
语句1->在同一名称空间上,窗格可以与端口80通信
声明2->不允许访问未在端口80上监听的Pod
那么,有人可以在这里澄清一下吗?
他们到底在问什么?是否需要提供对pod的80访问权限?
答案 2 :(得分:0)
以下yaml会帮助您解决问题,它确实为我工作。 重点主要是仅使用入口数组的端口部分。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: network-policy
spec:
podSelector: {} #selects all the pods in the namespace deployed
policyTypes:
- Ingress
ingress:
- ports: #in input traffic allowed only through 80 port only
- protocol: TCP
port: 80
答案 3 :(得分:0)
statement 2 --> 不允许访问不监听端口 80 的 Pod
如何在 pod 不监听服务器的 TCP 状态时不允许 .. 您也可以让 pod 不监听相同命名空间的 80 端口。我认为这在你上面的 yaml 中没有解决。
答案 4 :(得分:0)
例如 kubectl label ns namespace-name env: testing
2.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-port-from-namespace
namespace: staging
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
env: staging
ports:
- protocol: TCP
port: 80