ローカルネットワークにk8s + Rancherクラスターをデプロイするつもりですが、私の環境にはいくつかのVLANがあり、pfsenseはそのようなVLAN間のファイアウォールおよびルーターとして機能します。
私のクラスターはハイパーバイザーとしてXCP-NGに常駐しており、クラスターノードに渡す必要があることをVLANに通知します。
異なるVLANでいくつかのサービスを提供するつもりです。開発、DMZ、プロダクション、管理などにVLANを使用しているため、別のアプローチをとる必要があるかどうかを知りたいので、私の環境のためにK8s + Rancherの展開中に?
ポッドで動作するクラスターを複数のVLANにデプロイするには、クラスターノードに複数のNICが必要です。それぞれにVLAN使用する予定ですか?)
たとえば、クラスターに6つのノード、3つのマスター、3つのワーカーがある場合、それらは同じVLANにある必要がありますか、または異なるVLANにあり、それらの間の通信で十分ですか?
開発VLANにポッドをデプロイし、クラスターが管理VLANにある場合、それは可能ですか?
よろしくお願いします。
開発VLANにポッドをデプロイし、クラスターが管理VLANにある場合、それは可能ですか?
これは不可能です。kubernetesクラスターには独自の内部ネットワークがあります。このネットワークは、ローカルネットワークから完全に分離されています。
Kubernetesクラスターをデプロイするときに(それがランチャーであるか、他のオンプレミスのkubernetesクラスターであるかは関係ありません)、クラスターが配置されるCIDRを定義できます。
あなたは考えているかもしれません:kubernetesに独自のネットワークがある場合、クラスターにデプロイしたアプリケーションとどのように通信できますか?
Serviceまたは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が定義された2つのサービスがあります。
シナリオでは、これらの外部IPをローカルネットワークからのIPにする必要があります。これは、MetalLBを使用して実現できます。
MetalLBでは、ローカルネットワークのどのIPを使用するかを定義できます。たとえば、次の構成では、IPを192.168.1.240
から192.168.1.250
までMetalLBで制御できます。
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を1つの範囲のみに結び付けるものであり、それが必要なものではありません。したがって、IPPoolを作成して使用する方法が説明されている this の記事をご覧ください。