web-dev-qa-db-ja.com

Kubernetes + Rancher:複数のVLAN

ローカルネットワークにk8s + Rancherクラスターをデプロイするつもりですが、私の環境にはいくつかのVLANがあり、pfsenseはそのようなVLAN間のファイアウォールおよびルーターとして機能します。

私のクラスターはハイパーバイザーとしてXCP-NGに常駐しており、クラスターノードに渡す必要があることをVLANに通知します。

異なるVLANでいくつかのサービスを提供するつもりです。開発、DMZ、プロダクション、管理などにVLANを使用しているため、別のアプローチをとる必要があるかどうかを知りたいので、私の環境のためにK8s + Rancherの展開中に?

ポッドで動作するクラスターを複数のVLANにデプロイするには、クラスターノードに複数のNICが必要です。それぞれにVLAN使用する予定ですか?)

たとえば、クラスターに6つのノード、3つのマスター、3つのワーカーがある場合、それらは同じVLANにある必要がありますか、または異なるVLANにあり、それらの間の通信で十分ですか?

開発VLANにポッドをデプロイし、クラスターが管理VLANにある場合、それは可能ですか?

よろしくお願いします。

2
user562397

開発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 の記事をご覧ください。

1
mWatney