【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 操作系统 » 正文

集群的算法(群集组织策略)

放大字体  缩小字体 发布日期:2022-07-02 19:19:07    浏览次数:22

一 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.yaml
  1 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端口的服务。

注意:关于namespaceSelector和podSelector的说明:在from或to的配置中,namespaceSelector和podSelector可以单独设置,也可以组合配置。如果仅配置podSelector,则表示与目标Pod属于相同的Namespace,而组合设置则可以设置Pod所属的Namespace,例如:
  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
 
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:http://www.31duo.com/news/show-3613457.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4