|NO.Z.00414|——————————|CloudNative|——|KuberNetes&NetworkPolicy.V06|——|NetworkPolicy.v06|隔离中间件服务.v02|

一、配置networkpolicy服务
### --- 查看mysql、redis服务的标签
~~~     因为这两个服务没有一个共同的标签
~~~     所以它俩的NetworkPolicy.yaml只能分开写

[root@k8s-master01 ~]# kubectl  get po -n nw-demo --show-labels
NAME                     READY   STATUS    RESTARTS   AGE    LABELS
mysql-69d6f69557-6vtqf   1/1     Running   0          123m   app=mysql,pod-template-hash=69d6f69557
redis-c9fdb57d5-4wd78    1/1     Running   0          119m   app=redis,pod-template-hash=c9fdb57d5
二、创建NetworkPolicy.yaml配置文件
### --- 创建NetworkPolicy配置文件

~~~     该yaml含有两个NetworkPolicy,其中mysql-np是对具有app=mysql标签的Pod进行管理,
~~~     redis-np是对具有app=redis标签的Pod进行管理。
~~~     但是需要注意的是该网络策略的ingress from是以namespaceSelector的标签进行匹配的,
~~~     并非podSelector,或者是两者的结合。因为在生产环境中,
~~~     同一个Namespace下可能会有很多不同类型、不同标签的Pod,并且它们可能并不具有一个相同的标签,
~~~     所以如果通过podSelector进行选择,可能会比较麻烦,
~~~     因为Pod一旦创建,对其标签的修改是很不方便的(apps/v1一旦创建就不可修改)。
~~~     而使用namespaceSelector另一个好处是,可以很方便的对某个Namespace下的Pod进行管控,
~~~     直接给指定Namespace添加标签即可,当然,如果需要更细粒度的管控,也可以结合podSelector使用。
[root@k8s-master01 ~]# vim mysql-redis-nw.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: mysql-np
  namespace: nw-demo
spec:
  podSelector:
    matchLabels:
      app: mysql
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          access-nw-mysql-redis: "true"
    ports:
    - protocol: TCP
      port: 3306
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: redis-np
  namespace: nw-demo
spec:
  podSelector:
    matchLabels:
      app: redis 
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          access-nw-mysql-redis: "true"
    ports:
    - protocol: TCP
      port: 6379
三、创建networkpolicy服务
### --- 创建networkpolicy

[root@k8s-master01 ~]# kubectl  create -f mysql-redis-nw.yaml -n nw-demo
networkpolicy.networking.k8s.io/mysql-np created
networkpolicy.networking.k8s.io/redis-np created
### --- 查看创建的服务

[root@k8s-master01 ~]# kubectl get networkpolicy -n nw-demo
NAME       POD-SELECTOR   AGE
mysql-np   app=mysql      25s
redis-np   app=redis      24s

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示