k8s / 命名空间 - 创建“子”命名空间

时间:2021-02-25 11:48:15

标签: kubernetes overlay

是否可以在 Kubernetes 的命名空间之间共享 Pod?


给定如下设置:

<头>
吊舱 命名空间
A team_1
B team_1
C team_1
D team_1

这是我想要实现的:

<头>
吊舱 命名空间
A team_1
B team_1
C team_1
D team_1
A team_1_JIRA-12

我想(即时)创建一个新的命名空间, 特定于给定的拉取请求,仅“覆盖”少数 pod, 同时仍然能够与来自父 ns 的 pod 通信。

2 个答案:

答案 0 :(得分:0)

Kubernetes 不允许您在 2 个命名空间之间共享一个 pod。但是,您可以为 pod A 定义一个名为服务 A 的服务,并使用 kubernetes DNS 访问另一个命名空间 team_1_JIRA-12 中的服务 A。您可以使用 cURL 访问 team_1 命名空间中的 pod A,使用其服务,如下所示:

kubectl create deployment nginx --image=nginx
kubectl exec -it nginx-6799fc88d8-cx84f -- bash    
root@nginx-6799fc88d8-cx84f:/# curl http://A.team_1

答案 1 :(得分:0)

<块引用>

是否可以在 Kubernetes 的命名空间之间共享 Pod?

简短回答:不,这是不可能的。

正如 Malathi 在她的回答中已经提到的,一个 Pod 不能属于多个命名空间。

看看 Network Policies,因为它们似乎是适合您的用例的正确解决方案。正如您在文档中所读到的:

<块引用>

如果您想在 IP 地址或端口级别控制流量 (OSI 第 3 或 4 层),那么您可以考虑使用 Kubernetes 集群中特定应用程序的网络策略。 NetworkPolicies 是一种以应用程序为中心的结构,它允许您 指定如何允许 pod 与各种网络通信 “实体”(我们在这里使用“实体”这个词是为了避免重载 更常见的术语,如“端点”和“服务”,它们有 Kubernetes 的特定内涵)通过网络。

Pod 可以与之通信的实体通过 以下 3 个标识符的组合:

允许的其他 pod(例外:pod 不能阻止访问 本身)允许 IP 块的命名空间(例外:流量到 并且始终允许从运行 Pod 的节点,无论 Pod 或节点的 IP 地址)在定义 Pod 时 - 或 基于命名空间的 NetworkPolicy,你使用一个选择器来指定什么 允许进出与选择器匹配的 Pod 的流量。