041.集群网络-K8S网络策略
2020-03-25 16:03:30来源:博客园 阅读 ()
041.集群网络-K8S网络策略
一 Kubernetes网络策略
1.1 策略说明
为实现细粒度的容器间网络访问隔离策略,Kubernetes发布Network Policy,目前已升级为networking.k8s.io/v1稳定版本。 Network Policy的主要功能是对Pod间的网络通信进行限制和准入控制,设置方式为将Pod的Label作为查询条件,设置允许访问或禁止访问的客户端Pod列表。目前查询条件可以作用于Pod和Namespace级别。 为了使用Network Policy,Kubernetes引入了一个新的资源对象Network Policy,供用户设置Pod间网络访问的策略。但仅定义一个网络策略是无法完成实际的网络隔离的,还需要一个策略控制器(Policy Controller)进行策略的实现。 策略控制器由第三方网络组件提供,目前Calico、Cilium、Kube-router、Romana、WeaveNet等开源项目均支持网络策略的实现。Network Policy的工作原理如下所示,policy controller需要实现一个API Listener,监听用户设置的Network Policy定义,并将网络访问规则通过各Node的Agent进行实际设置(Agent则需要通过CNI网络插件实现)。1.2 网络策略配置
网络策略的设置主要用于对目标Pod的网络访问进行限制,在默认情况下对所有Pod都是允许访问的,在设置了指向Pod的Network Policy网络策略之后,访问Pod将会被限制。 示例1: [root@k8smaster01 study]# vi networkpolicy_01.yaml1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: test-network-policy 5 namespace: default 6 spec: 7 podSelector: 8 matchLabels: 9 role: db 10 policyTypes: 11 - Ingress 12 - Egress 13 ingress: 14 - from: 15 - ipBlock: 16 cidr: 172.17.0.0/16 17 except: 18 - 172.17.1.0/24 19 - namespacesSelector: 20 matchLabels: 21 project: mopoject 22 - podSelector: 23 matchLabels: 24 role: frontend 25 ports: 26 - protocol: TCP 27 port: 6379 28 egress: 29 - to: 30 - ipBlock: 31 cidr: 10.0.0.0/24 32 ports: 33 - protocol: TCP 34 port: 5978参数解释:
- podSelector:用于定义该网络策略作用的Pod范围,本例的选择条件为包含“role=db”标签的Pod。
- policyTypes:网络策略的类型,包括ingress和egress两种,用于设置目标Pod的入站和出站的网络限制。
- ingress:定义允许访问目标Pod的入站白名单规则,满足from条件的客户端才能访问ports定义的目标Pod端口号。
- -from:对符合条件的客户端Pod进行网络放行,规则包括基于客户端Pod的Label、基于客户端Pod所在的Namespace的Label或者客户端的IP范围。
- -ports:允许访问的目标Pod监听的端口号。
- egress:定义目标Pod允许访问的“出站”白名单规则,目标Pod仅允许访问满足to条件的服务端IP范围和ports定义的端口号。
- -to:允许访问的服务端信息,可以基于服务端Pod的Label、基于服务端Pod所在的Namespace的Label或者服务端IP范围。
- -ports:允许访问的服务端的端口号。
- 该网络策略作用于Namespace“default”中含有“role=db”Label的全部Pod。
- 允许与目标Pod在同一个Namespace中的包含“role=frontend”Label的客户端Pod访问目标Pod。
- 允许属于包含“project=myproject”Label的Namespace的客户端Pod访问目标Pod。
- 允许从IP地址范围“172.17.0.0/16”的客户端Pod访问目标Pod,但是不包括IP地址范围“172.17.1.0/24”的客户端。
- 允许目标Pod访问IP地址范围“10.0.0.0/24”并监听5978端口的服务。
1 - from: 2 - namespacesSelector: 3 matchLabels: 4 project: mopoject 5 - podSelector: 6 matchLabels: 7 role: frontend如上表示允许访问目标Pod的来源客户端Pod应具有如下属性:属于有“project=myproject”标签的Namespace,并且有“role=frontend”标签。
1.3 Namespace级别策略
在Namespace级别还可以设置一些默认的全局网络策略,以方便管理员对整个Namespace进行统一的网络策略设置。 示例1:默认禁止任何客户端访问该Namespace中的所有Pod。1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: default-deny 5 spec: 6 podSelector: {} 7 policyTypes: 8 - Ingress示例2:默认允许任何客户端访问该Namespace中的所有Pod。
1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: allow-all 5 spec: 6 podSelector: {} 7 ingress: 8 - {} 9 policyTypes: 10 - Ingress示例3:默认禁止该Namespace中的所有Pod访问外部服务。
1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: default-deny 5 spec: 6 podSelector: {} 7 policyTypes: 8 - Egress示例4:默认允许该Namespace中的所有Pod访问外部服务。
1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: allow-all 5 spec: 6 podSelector:{} 7 egress: 8 - {} 9 policyTypes: 10 - Egress示例5:默认禁止任何客户端访问该Namespace中的所有Pod,同时禁止访问外部服务。
1 apiVersion: networking.k8s.io/v1 2 kind: NetworkPolicy 3 metadata: 4 name: default-deny 5 spec: 6 podSelector: {} 7 policyTypes: 8 - Ingress 9 - Egress
原文链接:https://www.cnblogs.com/itzgr/p/12564963.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- keepalived 实现LVS负载均衡高可用集群(一) 2020-06-04
- 树莓派命令行配置无线网络 2020-05-29
- corosync v1 + pacemaker高可用集群部署(二)资源配置(VIP+ 2020-05-28
- 容器技术之Docker网络 2020-05-24
- Linux VMware centOS7 网络配置 2020-05-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash