|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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」