返回顶部
首页 > 资讯 > 精选 >k8s NetworkPolicy网络策略怎么使用
  • 574
分享到

k8s NetworkPolicy网络策略怎么使用

2023-07-06 01:07:20 574人浏览 薄情痞子
摘要

本篇内容主要讲解“k8s NetworkPolicy网络策略怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“k8s NetworkPolicy网络策略怎么使用”吧!Ne

本篇内容主要讲解“k8s NetworkPolicy网络策略怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“k8s NetworkPolicy网络策略怎么使用”吧!

    NetworkPolicy 可以实现什么

    NetworkPolicy 可被定义为 Pod 标签选择器、命名空间选择器或者两者的组合。它可以实现以下功能:

    • 限制 Pod 之间的流量:通过指定 Ingress 规则,可以阻止来自其他 Pod 的流量进入目标 Pod。

    • 允许 Pod 之间的流量:需要为目标 Pod 配置 Egress 规则,以便只允许来自特定 Pod 的流量进入。

    • 限制 Pod 与外部网络的通信:通过指定 Egress 规则,可以控制哪些类型的外部流量可以进入 Pod,并防止未经授权的访问。

    • 允许 Pod 与外部网络的通信:需要为目标 Pod 配置 Ingress 规则,以便只允许来自特定 IP 地址、端口或协议的流量进入。

    使用 NetworkPolicy 时,需要考虑什么

    使用 NetworkPolicy 时,需要考虑以下几个方面:

    • NetworkPolicy 只在支持它的网络插件中起作用,例如 Calico、Cilium 和 Weave Net 等。

    • 没有定义任何 NetworkPolicy 规则,则所有的流量都会被允许。

    • 定义 NetworkPolicy 后,它只适用于当前命名空间中的 Pod。

    • 在 NetworkPolicy 中指定标签选择器时,应保证其唯一性,以免给其他 Pod 带来影响。

    网络策略有哪些

    默认情况下,如果名字空间中不存在任何策略,则所有进出该名字空间中 Pod 的流量都被允许。

    Namespace 隔离流量

    默认情况下,所有 Pod 之间都是互通的。每个 Namespace 可以配置独立的网络策略,来隔离 Pod 之间的网络流量。

    由此,可以通过创建匹配 Pod 的 Network Policy 来作为默认的网络策略,比如默认拒绝所有 Pod 之间 Ingress 的通信,如下:

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: default-denyspec:  podSelector: {}  policyTypes:    - Ingress

    默认拒绝 Pod 之间 Egress(出口) 通信的策略:

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: default-denyspec:  podSelector: {}  policyTypes:    - Egress

    甚至是默认拒绝 Pod 之间 Ingress(入口) 和 Egress(出口) 通信的策略:

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: default-denyspec:  podSelector: {}  policyTypes:    - Ingress    - Egress

    Pod 隔离

    Pod 隔离可以分为出口的隔离入口的隔离。其实这里的“隔离”不是绝对的,而是还有一些其它限制。

    比如可以通过使用标签选择器(这里可以是 namespaceSelector 和 podSelector)来控制 Pod 之间的流量。

    如下面的 Network Policy:

    • 允许 default namespace 中带有 role=myfront 标签的 Pod 访问 default namespace 中带有 role=mydb 标签 Pod 的 6379 端口

    • 允许带有 project=myprojects 标签的 namespace 中所有 Pod 访问 default namespace 中带有 role=mydb 标签 Pod 的 6379 端口

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: test-network-policy  namespace: defaultspec:  podSelector:    matchLabels:      role: mydb  ingress:    - from:        - namespaceSelector:            matchLabels:              project: myproject        - podSelector:            matchLabels:              role: myfront      ports:        - protocol: tcp          port: 6379

    另外一个同时开启 Ingress 和 Egress 通信的策略为:

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: test-network-policy  namespace: defaultspec:  podSelector:    matchLabels:      role: mydb  policyTypes:    - Ingress    - Egress  ingress:    - from:        - ipBlock:            cidr: 192.168.0.0/16            except:              - 192.168.1.0/24        - namespaceSelector:            matchLabels:              project: myproject        - podSelector:            matchLabels:              role: myfront      ports:        - protocol: TCP          port: 6379  egress:    - to:        - ipBlock:            cidr: 10.1.0.0/24      ports:        - protocol: TCP          port: 5978

    它用来隔离 default namespace 中带有 role=mydb 标签的 Pod:

    • 允许 default namespace 中带有 role=myfront 标签的 Pod 访问 default namespace 中带有 role=mydb 标签 Pod 的 6379 端口

    • 允许带有 project=myprojects 标签的 namespace 中所有 Pod 访问 default namespace 中带有 role=mydb 标签 Pod 的 6379 端口

    • 允许 default namespace 中带有 role=mydb 标签的 Pod 访问 10.1.0.0/24 网段的 TCP 5987 端口

    使用场景

    禁止访问指定服务

    kubectl run WEB --image=Nginx --labels app=web,env=prod --expose --port 80

    k8s NetworkPolicy网络策略怎么使用

    网络策略如下:

    kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  name: web-deny-allspec:  podSelector:    matchLabels:      app: web      env: prod

    只允许指定 Pod 访问服务

    kubectl run apiserver --image=nginx --labels app=bookstore,role=api --expose --port 80

    网络策略如下:

    kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  name: api-allowspec:  podSelector:    matchLabels:      app: bookstore      role: api  ingress:  - from:      - podSelector:          matchLabels:            app: bookstore

    禁止 namespace 中所有 Pod 之间的相互访问

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: default-deny  namespace: defaultspec:  podSelector: {}

    禁止其他 namespace 访问服务

    kubectl create namespace secondarykubectl run web --namespace secondary --image=nginx \    --labels=app=web --expose --port 80

    网络策略配置如下:

    kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  namespace: secondary  name: web-deny-other-namespacesspec:  podSelector:    matchLabels:  ingress:  - from:    - podSelector: {}

    此策略可以确保即使没有被其他任何 NetworkPolicy 选择的 Pod 也不会被允许流出流量。 此策略不会更改任何 Pod 的入站流量隔离行为。

    只允许指定 namespace 访问服务

    kubectl run web --image=nginx \    --labels=app=web --expose --port 80

    网络策略如下:

    kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  name: web-allow-prodspec:  podSelector:    matchLabels:      app: web  ingress:    - from:        - namespaceSelector:            matchLabels:              purpose: production

    允许外网访问服务

    kubectl run web --image=nginx --labels=app=web --port 80kubectl expose deployment/web --type=LoadBalancer

    网络策略如下:

    kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  name: web-allow-externalspec:  podSelector:    matchLabels:      app: web  ingress:    - ports:        - port: 80      from: []

    有了这个策略,任何额外的策略都不会导致来自这些 Pod 的任何出站连接被拒绝。 此策略对进入任何 Pod 的隔离没有影响。

    到此,相信大家对“k8s NetworkPolicy网络策略怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: k8s NetworkPolicy网络策略怎么使用

    本文链接: https://lsjlt.com/news/357018.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • k8s NetworkPolicy网络策略怎么使用
      本篇内容主要讲解“k8s NetworkPolicy网络策略怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“k8s NetworkPolicy网络策略怎么使用”吧!Ne...
      99+
      2023-07-06
    • 详解k8s NetworkPolicy 网络策略是怎么样的
      目录前言NetworkPolicy 可以实现什么使用 NetworkPolicy 时,需要考虑什么网络策略有哪些Namespace 隔离流量Pod 隔离使用场景禁止访问指定服务只允许...
      99+
      2023-05-15
      k8s NetworkPolicy 网络策略 k8s NetworkPolicy
    • docker中k8s基于canal的网络策略是什么
      这篇文章主要介绍了docker中k8s基于canal的网络策略是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前提条件    1、...
      99+
      2023-06-04
    • Kubernetes网络策略是什么
      这篇文章主要讲解了“Kubernetes网络策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes网络策略是什么”吧!NetworkPolicy 概念网络策略Netwo...
      99+
      2023-06-27
    • Java线程池怎么使用AbortPolicy策略
      本篇内容介绍了“Java线程池怎么使用AbortPolicy策略”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线程池ThreadPoolEx...
      99+
      2023-07-02
    • PyTorch策略梯度算法怎么使用
      这篇文章主要介绍“PyTorch策略梯度算法怎么使用”,在日常操作中,相信很多人在PyTorch策略梯度算法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PyTorch策略梯度算法怎么使用”的疑惑有所...
      99+
      2023-07-02
    • redis延迟双删策略怎么使用
      这篇文章主要讲解了“redis延迟双删策略怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“redis延迟双删策略怎么使用”吧!在当前环境下,通常我们会首选redis缓存来减轻我们数据库...
      99+
      2023-07-06
    • MyBatisPlus之id生成策略怎么使用
      这篇文章主要介绍“MyBatisPlus之id生成策略怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatisPlus之id生成策略怎么使用”文章能帮助大家解决问题。一、为什么需要选择不...
      99+
      2023-07-05
    • 怎么使用批处理禁用组策略
      小编给大家分享一下怎么使用批处理禁用组策略,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!利用批处理禁用(启用)组策略 regsvr32 /s /u gpedit....
      99+
      2023-06-08
    • Redis中怎么使用缓存替换策略
      Redis中怎么使用缓存替换策略,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1 概述在操作系统的页面管理中,内存会维护一部分数据以备进程使用,但是由于内存的大小必然是远远...
      99+
      2023-06-20
    • 怎么使用semanage管理SELinux安全策略
      这篇文章给大家分享的是有关怎么使用semanage管理SELinux安全策略的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。semanage命令 是用来查询与修改SELinux默认目录的安全上下文。SELinux的...
      99+
      2023-06-28
    • Java怎么优雅的使用策略模式
      本篇内容介绍了“Java怎么优雅的使用策略模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是策略模式策略模式是一种行为型模式,它将对象...
      99+
      2023-07-05
    • 新加坡服务器常用网络安全策略有哪些
      新加坡服务器常用的网络安全策略包括:1. 防火墙:设置网络防火墙来过滤和监控网络流量,防止未经授权的访问和攻击。2. 加密通信:使用...
      99+
      2023-10-11
      服务器
    • 怎么在python中使用动量交易策略
      怎么在python中使用动量交易策略?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不...
      99+
      2023-06-14
    • 怎么使用JavaScript策略模式校验表单
      小编给大家分享一下怎么使用JavaScript策略模式校验表单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript是一种什么语言javascript...
      99+
      2023-06-14
    • 怎么使用PyTorch实现随机搜索策略
      本篇内容主要讲解“怎么使用PyTorch实现随机搜索策略”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用PyTorch实现随机搜索策略”吧!1. 随机搜索策略一种简单但有效的方法是将智能体...
      99+
      2023-07-02
    • java策略模式怎么应用
      策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装起来,使它们可以相互替换。这样就可以使算法的变化独立于使用算法的...
      99+
      2023-08-31
      java
    • 如何通过Kubernetes网络策略进行应用程序微分段
      如何通过Kubernetes网络策略进行应用程序微分段,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在大多数生产环境中,需要实施网络访问控制。Kubernetes提供了一种...
      99+
      2023-06-03
    • Python怎么使用LRU缓存策略进行缓存
      本文小编为大家详细介绍“Python怎么使用LRU缓存策略进行缓存”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么使用LRU缓存策略进行缓存”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Pyt...
      99+
      2023-07-06
    • Android设计模式之策略模式怎么使用
      本篇内容主要讲解“Android设计模式之策略模式怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android设计模式之策略模式怎么使用”吧!1、收到需求假设我们需要自定义的 View ...
      99+
      2023-07-05
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作