Попробуйте определить два вида сервисов Kubernetes, добавьте к ним ExternalIP и позже, в соответствии с вашим блоком настроек ExternalIP (который назначается сервису, предоставляющему развертывание или модуль, которому вы не хотите принимать соединение, используя iptables для доступа к вашей базе данных или правильно примите это соединение.
Например:
Для модулей вы хотите принять соединение:
Маркируйте эти капсулы:
$ kubectl label pod test app=MyApp --namespace development
Определите сервис для них с помощью соответствующего селектора соответствующей метки, который вы добавляете в модуль
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, чтобы разрешить соединение между модулями
$ 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
Вспомните, как создать службу в подходящем пространстве имен при развертывании ваших модулей.
Для модулей, которые вы не хотите отклонять соединение:
Маркируйте эти капсулы:
$ kubectl label pod egg app=test --namespace development
Определите сервис для них с соответствующим селектором соответствующей метки, которую вы добавляете в модуль
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, чтобы разрешить соединение между модулями
$ 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
Надеюсь, это поможет.