|NO.Z.00413|——————————|CloudNative|——|KuberNetes&NetworkPolicy.V05|——|NetworkPolicy.v05|隔离中间件服务.v01|

一、NetworkPolicy隔离中间件服务说明:隔离中间件服务
二、隔离中间件服务
### --- 项目示例概述

~~~     有一个项目,它有自己数据库MySQL和缓存Redis中间件,
~~~     我们只希望这个项目的应用能够访问该中间件
~~~     假如有一个项目需要通过Ingress进行对外发布,我们想要除了Ingress外,
~~~     其他任何Namespace下的Pod都不能访问该项目。
~~~     假设有一个项目叫nw-demo,里面部署了三个微服务,分别是MySQL、Redis和Nginx。
~~~     # 现需要对MySQL、Redis、Nginx进行隔离,分别实现如下效果:
~~~     MySQL、Redis只能被该Namespace下的Pod访问;
~~~     Nginx可以被Ingress-nginx命名空间下的Pod和该Namespace下的Pod访问;

三、创建namespace

### --- 创建namespace
~~~     创建该项目的namespace

[root@k8s-master01 ~]# kubectl create ns nw-demo
namespace/nw-demo created

四、创建mysql服务

### --- 创建mysql服务

[root@k8s-master01 ~]#  kubectl create deploy mysql --image=registry.cn-beijing.aliyuncs.com/dotbalo/mysql:5.7.23 -n nw-demo
deployment.apps/mysql created
### --- 查看mysql服务是否启动完成

[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME                     READY   STATUS        RESTARTS   AGE     IP               NODE           NOMINATED NODE   READINESS GATES
mysql-69d6f69557-6vtqf   1/1     Running       0          2m37s   172.25.244.240   k8s-master01   <none>           <none>
五、创建redis服务
### --- 创建redis服务

[root@k8s-master01 ~]#  kubectl create deploy redis --image=registry.cn-beijing.aliyuncs.com/dotbalo/redis:5.0.9-alpine3.11 -n nw-demo
deployment.apps/redis created
### --- 查看redis服务是否启动完成

[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
mysql-69d6f69557-6vtqf   1/1     Running   0          115m   172.25.244.240   k8s-master01   <none>           <none>
redis-c9fdb57d5-4wd78    1/1     Running   0          111m   172.17.125.14    k8s-node01     <none>           <none>
六、验证网络连通性——没有配置任何网络策略
### --- 安装mysql端口连通性
~~~     mysql端口是通的 

[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
mysql-69d6f69557-6vtqf   1/1     Running   0          117m   172.25.244.240   k8s-master01   <none>           <none>
[root@k8s-master01 ~]# telnet 172.25.244.240 3306
Trying 172.25.244.240...
Connected to 172.25.244.240.
Escape character is '^]'.
### --- 验证redis端口连通性
~~~     redis端口是通的
~~~     此时的网络都是可以通信的
~~~     是非常的不安全的

[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE           NOMINATED NODE   READINESS GATES
redis-c9fdb57d5-4wd78    1/1     Running   0          113m   172.17.125.14    k8s-node01     <none>           <none>
[root@k8s-master01 ~]# telnet 172.17.125.14  6379
Trying 172.17.125.14...
Connected to 172.17.125.14.
Escape character is '^]'.

附录一:报错处理:
### --- 报错现象:

[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME                     READY   STATUS   RESTARTS   AGE    IP              NODE         NOMINATED NODE   READINESS GATES
mysql-79658f8b4b-8vk94   0/1     Error    2          4m3s   172.17.125.13   k8s-node01   <none>           <none>
### --- 报错分析:
~~~     创建MySQL服务,MySQL以容器启动时,必须配置root的密码,
~~~     或者设置密码为空,所以需要设置一个MYSQL_ROOT_PASSWORD的变量:
~~~     若是不设置环境变量密码,mysql是起不来的  

[root@k8s-master01 ~]# kubectl logs -f mysql-79658f8b4b-8vk94  -n nw-demo
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD 
### --- 解决方案:

[root@k8s-master01 ~]# kubectl  set env deploy/mysql  MYSQL_ROOT_PASSWORD=mysql -n nw-demo
deployment.apps/mysql env updated  

 
 
 
 
 
 
 
 
 

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  阅读(27)  评论(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

导航

统计

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