Я собираюсь развернуть кластер k8s + Rancher в своей локальной сети, но в моей среде есть несколько виртуальных локальных сетей, при этом pfsense действует как межсетевой экран и маршрутизатор между такими виртуальными локальными сетями.
Мой кластер находится в XCP-NG в качестве гипервизора, и я проинформирую VLAN, что он должен передать его узлам кластера.
Я намерен иметь некоторые службы в разных VLAN, потому что у меня есть VLAN для разработки, DMZ, производства, управления и т. Д., И я хотел бы знать, нужно ли мне использовать другой подход во время развертывания K8s + Rancher из-за моя среда?
Чтобы развернуть кластер, который работает с модулями в нескольких VLAN, должны ли узлы кластера иметь несколько сетевых адаптеров, каждый из которых находится в VLAN, которую я собираюсь использовать?
Например, если в моем кластере 6 узлов, 3 главных и 3 рабочих, должны ли они находиться в одной VLAN или в разных VLAN, и связи между ними достаточно?
Если я хочу развернуть модуль в VLAN разработки, а мой кластер находится в VLAN управления, возможно ли это?
Заранее спасибо за вашу помощь.
Если я хочу развернуть модуль в VLAN разработки, а мой кластер находится в VLAN управления, возможно ли это?
Это невозможно, кластеры Kubernetes имеют собственную внутреннюю сеть. Эта сеть полностью отделена от вашей локальной сети.
При развертывании кластера кубернетов (неважно, является ли он владельцем ранчо или любым другим локальным кластером кубернетов) вы можете определить, на каком CIDR будет находиться ваш кластер.
Вы можете подумать: если у Kubernetes есть собственная сеть, как я могу общаться с приложениями, которые я развернул в своем кластере?
Вы можете раскрыть свои ресурсы с помощью службы или Ingress. Например: когда вы создаете услугу с type: LoadBalancer
ваша служба выделит внешний или общедоступный IP-адрес (конечную точку), к которому можно получить доступ из вашей внутренней сети.
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
custom-nginx-svc LoadBalancer 10.0.10.18 104.155.87.232 80:31549/TCP 11d
echo-svc LoadBalancer 10.0.10.14 23.251.138.185 80:30668/TCP 11d
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 11d
nginx-ing-nginx-ingress-controller NodePort 10.0.9.184 <none> 80:31745/TCP,443:31748/TCP 25h
nginx-ing-nginx-ingress-default-backend ClusterIP 10.0.1.169 <none> 80/TCP 25h
Как видно из приведенного выше примера, существуют две службы с определенным внешним IP-адресом.
В вашем сценарии вам нужно, чтобы эти внешние IP-адреса были IP-адресами из вашей локальной сети. Этого можно добиться с помощью MetalLB.
В MetalLB вы можете определить, какие IP-адреса из вашей локальной сети будут использоваться. Например, следующая конфигурация дает MetalLB контроль над IP-адресами от 192.168.1.240
к 192.168.1.250
:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.1.240-192.168.1.250
Это привязывает MetalLB только к одному диапазону, а это не то, что вам нужно. Итак, пожалуйста, взгляните на этот статья, где объясняется, как вы можете создавать IPPools и использовать их.