gpt4 book ai didi

kubernetes - 限制其他 namespace 访问Pod

转载 作者:行者123 更新时间:2023-12-02 11:55:07 25 4
gpt4 key购买 nike

我已经在默认 namespace 中创建了如下所示的网络策略

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
run: nginx1
ingress:
- from:
- podSelector:
matchLabels:
run: "nginx2"

并且在默认 namespace 中具有以下pod
master $ k get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx1 1/1 Running 0 30m run=nginx1
nginx2 1/1 Running 0 30m run=nginx2
nginx3 1/1 Running 0 30m run=nginx3

当我尝试从其他 namespace 访问Pod时,我仍然能够访问Pod(nginx1)
  master $ kubectl run busybox -n mynamespace --rm --labels=run=nginx2 -ti --image=busybox -- /bin/sh
/ # wget --spider --timeout=2 nginx1.default
Connecting to nginx1.default (10.107.249.117:80)
remote file exists

如何限制其他 namespace 访问默认 namespace 中的Pod

最佳答案

这是预期的行为,因为您没有使用namespaceSelector在 namespace 级别限制流量
将标签key=value添加到默认 namespace ,并在入口使用namespaceSelector仅允许来自具有该标签的 namespace 的流量。key=value只是一个示例,您可以使用不同的标签。

kubectl label ns default key=value

---

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
run: nginx1
ingress:
- from:
- namespaceSelector
matchLabels
key: value
- podSelector:
matchLabels:
run: "nginx2"

How I can restrict other namespace to access pod in default namespace


如果您只想限制在命名空间级别,则只需使用 namespaceSelector
kubectl label ns default key=value

---

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
run: nginx1
ingress:
- from:
- namespaceSelector
matchLabels
key: value
这将阻止来自 namespace 中没有标签 run=nginx1的任何Pod到标签为 key=value的Pod的流量
有关更多详细信息,请参阅docs here

关于kubernetes - 限制其他 namespace 访问Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63304919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com