一、验证网络连通性——配置网络策略——验证不同namespace下端口是否通信
### --- 在default下启动一个pod,测试连通性工具
~~~ 启动一个pod
[root@k8s-master01 ~]# kubectl run -ti debug-tools --image=registry.cn-beijing.aliyuncs.com/dotbalo/debug-tools:latest -n default
### --- 查看启动的pod
~~~ 启动是比较慢的,下载镜像是需要时间的
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug-tools 1/1 Running 1 53s 172.25.244.242 k8s-master01 <none> <none>
二、验证mysql端口是否通信
### --- 验证mysql端口是否通信
~~~ mysql端口是不可以通信的
[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug-tools 1/1 Running 0 9m59s 172.25.244.241 k8s-master01 <none> <none>
mysql-69d6f69557-ht5cp 1/1 Running 0 23m 172.25.92.115 k8s-master02 <none> <none>
[root@k8s-master01 ~]# kubectl exec -ti debug-tools -n nw-demo -- bash
(13:51 debug-tools:/) curl 172.25.92.115:3306
三、验证redis端口是否通信
### --- 验证redis端口是否通信
~~~ redis端口是不可以通信的
[root@k8s-master01 ~]# kubectl get po -n nw-demo -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug-tools 1/1 Running 0 9m59s 172.25.244.241 k8s-master01 <none> <none>
mysql-69d6f69557-ht5cp 1/1 Running 0 23m 172.25.92.115 k8s-master02 <none> <none>
redis-c9fdb57d5-4wd78 1/1 Running 0 152m 172.17.125.14 k8s-node01 <none> <none>
[root@k8s-master01 ~]# kubectl exec -ti debug-tools -- bash
(130 14:03 debug-tools:/) curl 172.17.125.14:6379
四、总结
### --- 总结
~~~ 可以看到此时default命名空间下的Pod并不能访问nw-demo的服务,
~~~ 如果想要MySQL和Redis对default命名空间开放,
~~~ 只需要添加一个access-nw-mysql-redis=true的标签即可。
~~~ 相对于传统架构,对中间件的访问限制,在Kubernetes中实现同样的效果,
~~~ 可能配置更加方便且易于管理