首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在命名空间之间隔离k8s荚网络

在命名空间之间隔离k8s荚网络
EN

Stack Overflow用户
提问于 2022-03-15 20:29:44
回答 1查看 277关注 0票数 2

我需要在命名空间之间隔离k8s荚网络。

在命名空间ns-1中运行的ns-1不能从名称空间ns-2中的pod-2访问网络。

它的目的是在名称空间之间创建一个沙箱,并防止基于it标签的特定荚之间的网络通信。

我试着用NetworkPolicy来做这件事,但我对k8s的了解有点“粗糙”。

这个是可能的吗?有人能举个例子吗?

我试图阻止所有内部网通信,并允许互联网使用以下内容:

代码语言:javascript
复制
spec:
  egress:
  - ports:
    - port: 53
      protocol: UDP
    to:
    - ipBlock:
    cidr: 0.0.0.0/0
        except:
        - 10.0.0.0/8
        - 192.168.0.0/16
        - 172.16.0.0/12
        - 172.40.0.0/16
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          k8s-app: kube-dns
  podSelector:
    matchExpressions:
    - key: camel.apache.org/integration
      operator: Exists
  policyTypes:
  - Egress

但是,当我访问类似于google.com的内容时,它正确地解析了DNS,但没有连接导致超时。

政策意图是:

  • 阻止所有专用网络接入
  • 只允许端口53上的kube-dns名称服务器解析器。
  • 但是允许所有的人进入互联网

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 10:03:57

网络策略的设置非常灵活,您可以以不同的方式配置它。如果我们查看您的情况,那么您必须为您的集群创建2个策略。首先,它是您的产品的命名空间网络策略,其次是您的沙箱。当然,在开始修改您的网络之前,请确保选择、安装和配置网络提供程序。 --这是NetworkPolicy .yaml文件的示例,用于隔离您的名称NameSpace:

代码语言:javascript
复制
# You can create a "default" policy for a namespace which prevents all ingress
# AND egress traffic by creating the following NetworkPolicy in that namespace.
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: YourSandbox
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

在此之后,您可以在这个NameSpace中创建您的荚,并且它将被隔离。只需将NameSpace名称添加到配置文件字符串中:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: service-c
  namespace: YourSandbox

在本例中,我们添加了对外部和内部连接到特定NameSpace和服务的访问:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: access-service-c
  namespace: YourSandbox
spec:
  podSelector:
    matchLabels:
      app: YourSandboxService
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          env: YourProdactionNameSpase
    - podSelector:
        matchLabels:
          app: NameOfYourService
   egress:
   - to:
     - namespaceSelector:
         matchLabels:
           name: YourProdactionNameSpase
     - podSelector:
         matchLabels:
           app: NameOfYourService

使用此网络策略ip块配置阻止默认本地专用网络ip的出口,并允许打开其余的internet访问。

代码语言:javascript
复制
egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except: 192.168.40.0/24 #Your pul of local private network IPs

如果使用子网前缀/32的长度,则表示规则的范围仅限于此一个IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71488645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档