问题标签 [kubernetes-networkpolicy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
89 浏览

kubernetes - 在 NetworkPolicy yaml 规范中混淆 Kubernetes 语义

ingress观察: under的字段值spec

案例 1:拒绝应用程序的所有流量。这里 ingress 将一个空数组作为它的值。

案例 2:允许应用程序的所有流量。这里 ingress 将一个空地图的列表项作为它的值。

我只是想知道,如果我要大声读出ingress上面的赋值值,我该如何阅读它?

0 投票
2 回答
174 浏览

kubernetes - 结合多个网络策略进行细粒度、基于标志的控制

我想在 Kubernetes 集群中制定一个网络策略,以便在模块之间进行细粒度的通用访问控制。

我准备了一个包含 2 个清单的 Kubernetes 设置:

  1. 2 个容器 nginx pod,有 2 个端口监听并返回一些通用数据,一个是端口 80,另一个是 81
  2. 我有 3 个带有 2 个开/关标签的控制台 pod:“allow80”和“allow80”。因此,如果“allow80”存在,console pod 可以通过服务入口点,端口 80 访问双 nginx。同样适用于端口 81

我有 3 个控制台 pod:

  1. console-full - 访问端口 80 和 81, [allow80, allow81]
  2. 控制台部分 - 端口 80 - 开启,81 - 关闭,[allow80]
  3. 控制台禁止访问 - 80 和 81 - 受限 []

测试设置。它将在“net-policy-test”命名空间中创建所有必要的组件。

去创造:

kubectl apply -f net_policy_test.yaml

清理:

kubectl delete -f net_policy_test.yaml

政策再次适用:

kubectl apply -f policies.yaml

清理:

kubectl delete -f policies.yaml

如果我只为一个端口留下“来自”的一个条件,它会按预期工作。我有或没有端口访问权限,取决于相应的标签是否存在,allow80 或 allow81

如果存在 2 个条件,则部分 pod 可以访问端口 80 和 81:

  1. 切换到正确的命名空间:
  1. 检查标签:
  1. 检查来自 pod "console-partial-..." 的访问,它应该访问端口 80 而不是 81:

部分访问 pod 可以访问端口 80 和 81。

Pod,没有标签 (console-no-access-),无法访问任一端口,这是预期的

它类似于本演示文稿中描述的内容:Youtube,使用网络策略保护集群网络 - Ahmet Balkan,谷歌。因此,至少有一个标志“allow80”或“allow81”可以访问所有内容。怎么来的?

现在,问题:

  1. 这是预期的行为吗?
  2. 如何制作简单的基于标志的访问控制,目的是使其自动化或传递给管理员,谁可以轻松地大量生产这些?
0 投票
2 回答
12515 浏览

kubernetes - Kubernetes:如何允许在相同/不同命名空间中运行的两个 pod 进行通信,而不管使用服务名称的协议如何?

允许在相同/不同命名空间中运行的两个 pod(比如 pod A 和 B)进行通信,而不管协议(比如 http、https、akka.tcp)以及应用的有效网络策略。

尝试的解决方案:

  1. 尝试将网络策略应用于两个 pod,并使用服务名称:“my-svc.my-namespace.svc.cluster.local”使 pod B 与运行服务“my-svc”的 pod A 通信,但两者无法沟通。

  2. 还尝试在部署时在 pod B 中添加 pod A 的 IP 地址和主机映射,然后 pod B 能够与 pod A 通信,但反向通信失败。

请建议我解决此问题的方法。

0 投票
0 回答
278 浏览

azure - 互联网出口的 Kubernetes 网络策略

我正在尝试创建一个 Kubernetes 网络策略,该策略允许 Pod 出站到 Internet 以连接到外部资源(如 Azure SQL),但不允许它们连接到集群内的其他 Pod。我已成功阻止所有出口,但当我添加以下策略以允许互联网访问时,它反而允许访问内部和外部的所有内容。

谁能确认这是否可行,或者我是否遗漏了什么?

这是在 Azure AKS 群集上运行的,Azure 网络策略插件正在运行。

0 投票
0 回答
141 浏览

kubernetes - 边车注入后网络策略入口不起作用

错误描述

我正在尝试一个网络策略示例来允许来自特定命名空间的流量。一切正常,直到我为 nginx 应用程序注入一个 sidecar,然后所有调用都被阻止。 是我正在尝试实现的示例。

预期行为

不管它的 sidecar 是否被注入,当一个调用来自白名单命名空间时,它不应该阻塞它。

重现错误的步骤

简单过一遍这个例子,只需用 istio 的 side car 注入 nginx 应用程序。

版本(包括 和 的istioctl version --remote输出kubectl version

Kubernetes:1.13.10

Istio:1.1.10

请帮助我了解我需要做什么才能使其正常工作,或者我是否必须在网络策略中添加其他内容以进行 istio-injection?

PS虽然它有效,但当我允许来自所有命名空间的流量时,即使在边车注入之后

0 投票
1 回答
14864 浏览

kubernetes - 外部 ip 待定 Kubernetes 负载均衡器

嗨,在 centos 中使用 kubeadm 安装了 Kubernetes 当我在 yaml 文件中使用类型负载均衡器创建部署时,外部 IpPending用于 Kubernetes LB,它卡在 Pending 状态

0 投票
0 回答
369 浏览

google-kubernetes-engine - 未应用 Google Kubernetes 引擎上的网络策略

我试图为我的 GKE 集群上的 pod 使用网络策略,但我发现它不起作用,尽管我为主节点和节点启用了网络策略。

然后我尝试拒绝所有网络策略,看看是我的网络策略错误,还是 GKE 的问题,但无济于事。

我究竟做错了什么?

更新:

这些是安装在我的集群上的 Calico Pod:

calico-typha-horizo​​ntal-autoscaler 日志充满了这个:

解决方案:

在查看了Suren关于检查日志的评论之后,我想可能是集群太小了,它不再处理负载,所以将我的节点池更改为更大的,现在一切都很好,好像GCP是无法为 Calico 安装所有内容,但没有错误或显示任何内容。

0 投票
1 回答
656 浏览

kubernetes - 如何使用网络策略允许外部流量并拒绝 Pod 间通信?

我正在我的 kubernetes 集群中设置我的默认命名空间,以允许来自外部节点/主机的传入流量,但拒绝任何可能的 pod 间通信。我有 2 个 nginx pod,我想在集群中完全隔离它们。两个 pod 都使用 nodePort 类型的服务公开,并且可以从外部访问它们。

我首先应用以下默认拒绝网络策略:

然后,我尝试使用以下网络策略允许外部流量:

但不幸的是,我无法从集群外部和内部访问该服务。

运行示例: - macOS High Sierra v10.13.6 - minikube v1.5.2 --> 使用网络插件 = cilium - kubectl v1.16.2

我怎么能面对这个问题?

0 投票
2 回答
2647 浏览

kubernetes - 使用网络策略将 kube-apiserver 列入白名单

定义仅允许使用网络策略出口到 kube-apiserver 的规则的最佳方法是什么?

虽然有Servicekube-apiserver 的资源,但没有Pods,据我所知,这不能用标签来完成。使用 IP 白名单,不能保证跨集群工作。这里有什么推荐的做法吗?

0 投票
2 回答
1087 浏览

kubernetes - 在 Kubernetes 上使用 Istio 时,如何确保 TCP 流量由 Envoy sidecar 代理?

Kubernetes 上的 Istio 注入 Envoy sidecar 与 Pod 一起运行并实现服务网格,但是 Istio 本身无法确保流量不会绕过此代理;如果发生这种情况,则不再应用 Istio 安全策略。

因此,我试图了解这种绕过可能发生的所有方式(假设 Envoy 本身没有受到损害)并找到阻止它们的方法,以便保证来自 Pod 的网络命名空间的 TCP 流量已经通过 Envoy(或至少更有可能做到):

  1. 由于(在撰写本文时)Envoy 不支持 UDP(它几乎就在那里),因此不会代理 UDP 流量,因此使用NetworkPolicy确保只允许进出 Pod 的 TCP 流量(例如,避免 TCP 流量被隧道传输通过 UDP 上的 VPN 输出)
  2. 删除 NET_ADMIN 功能以防止 Pod 在其网络命名空间中重新配置捕获流量的 IPTables 规则
  3. 删除 NET_RAW 功能以防止 Pod 打开原始套接字并绕过 IPTables 使用的 netfilter 挂钩点

我知道的唯一其他攻击媒介是内核漏洞——还有其他的吗?也许还有其他 IPTables 无法识别或忽略的 L3/4 协议?

我知道eBPF 和 Cilium可用于在套接字级别强制执行此拦截,但我对在 Kubernetes 上使用 vanilla Istio 的情况感兴趣。

编辑:我还假设工作负载没有 Kubernetes API 服务器访问权限