问题标签 [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.
kubernetes - 在 NetworkPolicy yaml 规范中混淆 Kubernetes 语义
ingress
观察: under的字段值spec
。
案例 1:拒绝应用程序的所有流量。这里 ingress 将一个空数组作为它的值。
案例 2:允许应用程序的所有流量。这里 ingress 将一个空地图的列表项作为它的值。
我只是想知道,如果我要大声读出ingress
上面的赋值值,我该如何阅读它?
kubernetes - 结合多个网络策略进行细粒度、基于标志的控制
我想在 Kubernetes 集群中制定一个网络策略,以便在模块之间进行细粒度的通用访问控制。
我准备了一个包含 2 个清单的 Kubernetes 设置:
- 2 个容器 nginx pod,有 2 个端口监听并返回一些通用数据,一个是端口 80,另一个是 81
- 我有 3 个带有 2 个开/关标签的控制台 pod:“allow80”和“allow80”。因此,如果“allow80”存在,console pod 可以通过服务入口点,端口 80 访问双 nginx。同样适用于端口 81
我有 3 个控制台 pod:
- console-full - 访问端口 80 和 81, [allow80, allow81]
- 控制台部分 - 端口 80 - 开启,81 - 关闭,[allow80]
- 控制台禁止访问 - 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:
- 切换到正确的命名空间:
- 检查标签:
- 检查来自 pod "console-partial-..." 的访问,它应该访问端口 80 而不是 81:
部分访问 pod 可以访问端口 80 和 81。
Pod,没有标签 (console-no-access-),无法访问任一端口,这是预期的
它类似于本演示文稿中描述的内容:Youtube,使用网络策略保护集群网络 - Ahmet Balkan,谷歌。因此,至少有一个标志“allow80”或“allow81”可以访问所有内容。怎么来的?
现在,问题:
- 这是预期的行为吗?
- 如何制作简单的基于标志的访问控制,目的是使其自动化或传递给管理员,谁可以轻松地大量生产这些?
kubernetes - Kubernetes:如何允许在相同/不同命名空间中运行的两个 pod 进行通信,而不管使用服务名称的协议如何?
允许在相同/不同命名空间中运行的两个 pod(比如 pod A 和 B)进行通信,而不管协议(比如 http、https、akka.tcp)以及应用的有效网络策略。
尝试的解决方案:
尝试将网络策略应用于两个 pod,并使用服务名称:“my-svc.my-namespace.svc.cluster.local”使 pod B 与运行服务“my-svc”的 pod A 通信,但两者无法沟通。
还尝试在部署时在 pod B 中添加 pod A 的 IP 地址和主机映射,然后 pod B 能够与 pod A 通信,但反向通信失败。
请建议我解决此问题的方法。
azure - 互联网出口的 Kubernetes 网络策略
我正在尝试创建一个 Kubernetes 网络策略,该策略允许 Pod 出站到 Internet 以连接到外部资源(如 Azure SQL),但不允许它们连接到集群内的其他 Pod。我已成功阻止所有出口,但当我添加以下策略以允许互联网访问时,它反而允许访问内部和外部的所有内容。
谁能确认这是否可行,或者我是否遗漏了什么?
这是在 Azure AKS 群集上运行的,Azure 网络策略插件正在运行。
kubernetes - 边车注入后网络策略入口不起作用
错误描述
我正在尝试一个网络策略示例来允许来自特定命名空间的流量。一切正常,直到我为 nginx 应用程序注入一个 sidecar,然后所有调用都被阻止。 这是我正在尝试实现的示例。
预期行为
不管它的 sidecar 是否被注入,当一个调用来自白名单命名空间时,它不应该阻塞它。
重现错误的步骤
简单过一遍这个例子,只需用 istio 的 side car 注入 nginx 应用程序。
版本(包括 和 的istioctl version --remote
输出kubectl version
)
Kubernetes:1.13.10
Istio:1.1.10
请帮助我了解我需要做什么才能使其正常工作,或者我是否必须在网络策略中添加其他内容以进行 istio-injection?
PS虽然它有效,但当我允许来自所有命名空间的流量时,即使在边车注入之后
kubernetes - 外部 ip 待定 Kubernetes 负载均衡器
嗨,在 centos 中使用 kubeadm 安装了 Kubernetes 当我在 yaml 文件中使用类型负载均衡器创建部署时,外部 IpPending
用于 Kubernetes LB,它卡在 Pending 状态
google-kubernetes-engine - 未应用 Google Kubernetes 引擎上的网络策略
我试图为我的 GKE 集群上的 pod 使用网络策略,但我发现它不起作用,尽管我为主节点和节点启用了网络策略。
然后我尝试拒绝所有网络策略,看看是我的网络策略错误,还是 GKE 的问题,但无济于事。
我究竟做错了什么?
更新:
这些是安装在我的集群上的 Calico Pod:
calico-typha-horizontal-autoscaler 日志充满了这个:
解决方案:
在查看了Suren关于检查日志的评论之后,我想可能是集群太小了,它不再处理负载,所以将我的节点池更改为更大的,现在一切都很好,好像GCP是无法为 Calico 安装所有内容,但没有错误或显示任何内容。
kubernetes - 如何使用网络策略允许外部流量并拒绝 Pod 间通信?
我正在我的 kubernetes 集群中设置我的默认命名空间,以允许来自外部节点/主机的传入流量,但拒绝任何可能的 pod 间通信。我有 2 个 nginx pod,我想在集群中完全隔离它们。两个 pod 都使用 nodePort 类型的服务公开,并且可以从外部访问它们。
我首先应用以下默认拒绝网络策略:
然后,我尝试使用以下网络策略允许外部流量:
但不幸的是,我无法从集群外部和内部访问该服务。
运行示例: - macOS High Sierra v10.13.6 - minikube v1.5.2 --> 使用网络插件 = cilium - kubectl v1.16.2
我怎么能面对这个问题?
kubernetes - 使用网络策略将 kube-apiserver 列入白名单
定义仅允许使用网络策略出口到 kube-apiserver 的规则的最佳方法是什么?
虽然有Service
kube-apiserver 的资源,但没有Pods
,据我所知,这不能用标签来完成。使用 IP 白名单,不能保证跨集群工作。这里有什么推荐的做法吗?
kubernetes - 在 Kubernetes 上使用 Istio 时,如何确保 TCP 流量由 Envoy sidecar 代理?
Kubernetes 上的 Istio 注入 Envoy sidecar 与 Pod 一起运行并实现服务网格,但是 Istio 本身无法确保流量不会绕过此代理;如果发生这种情况,则不再应用 Istio 安全策略。
因此,我试图了解这种绕过可能发生的所有方式(假设 Envoy 本身没有受到损害)并找到阻止它们的方法,以便保证来自 Pod 的网络命名空间的 TCP 流量已经通过 Envoy(或至少更有可能做到):
- 由于(在撰写本文时)Envoy 不支持 UDP(它几乎就在那里),因此不会代理 UDP 流量,因此使用NetworkPolicy确保只允许进出 Pod 的 TCP 流量(例如,避免 TCP 流量被隧道传输通过 UDP 上的 VPN 输出)
- 删除 NET_ADMIN 功能以防止 Pod 在其网络命名空间中重新配置捕获流量的 IPTables 规则
- 删除 NET_RAW 功能以防止 Pod 打开原始套接字并绕过 IPTables 使用的 netfilter 挂钩点
我知道的唯一其他攻击媒介是内核漏洞——还有其他的吗?也许还有其他 IPTables 无法识别或忽略的 L3/4 协议?
我知道eBPF 和 Cilium可用于在套接字级别强制执行此拦截,但我对在 Kubernetes 上使用 vanilla Istio 的情况感兴趣。
编辑:我还假设工作负载没有 Kubernetes API 服务器访问权限