顺便说一句,我在kubernetes集群中所有服务的类型都是clusterIP
我知道我可以在kubernetes集群中执行一些网络策略,但是在DBA视图中,
这是您的事,我不敢相信您,我会通过iptables来制定规则。
答案 0 :(得分:0)
在mysql pod上定义网络策略规则。使用网络策略,您可以控制从特定容器或名称空间到mysql容器的流量
答案 1 :(得分:0)
尝试定义两种Kubernetes服务,向它们添加ExternalIP,然后根据您的首选项阻止外部IP(将其分配给服务,该服务公开您不希望使用iptables访问数据库或不接受连接的部署或pod)正确接受此连接。
例如:
对于要接受连接的广告连播,
标记此广告连播:
$ kubectl label pod test app=MyApp --namespace development
为它们定义服务,并为您添加到pod中的适当选择器对应标签
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 9376 externalIPs: - 80.11.12.10
创建它:
$ kubectl create -f service.yaml --namespace development
您也可以使用externaiIP修补服务,而不是将其添加到配置文件中。
从MySQL执行命令以允许Pod之间的连接
$ iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source x.x.x.x -p tcp --dport 80 -j ACCEPT
x.x.x.x 是外部IP
记住在部署Pod时在适当的名称空间中创建服务。
对于Pod,您不想拒绝连接:
标记此广告连播:
$ kubectl label pod egg app=test --namespace development
为它们定义服务,并为您添加到pod中的适当选择器对应标签
apiVersion: v1 kind: Service metadata: name: example1-service spec: selector: app: test ports: - name: http protocol: TCP port: 80 targetPort: 9376 externalIPs: - y.y.y.y
创建它:
$ kubectl create -f service.yaml --namespace development
您也可以使用externaiIP修补服务,而不是将其添加到配置文件中。
从MySQL执行命令以允许Pod之间的连接
$ iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source y.y.y.y -p tcp -- dport 80 -j DROP
y.y.y.y 是外部IP
我希望这会有所帮助。