web-dev-qa-db-ja.com

microk8sを使用したホストからの単純な入力?

MicroK8sで2つのことを実行したいと思います。

  1. ホストマシン(Ubuntu 18.04)のポート80/443をMicrok8sにルーティングします。
  2. kubernetes.io docsで定義されている単純なイングレスのようなものを使用します

私の最終目標は、Ubuntuホスト上に配置する単一ノードのKubernetesクラスターを作成し、次に、ingressを使用して、サービス内のそれぞれのポッドに異なるドメインをルーティングすることです。

私はこれまで数日間Microk8sでこれをやろうとしてきましたが、頭を包むことができません。

  • これまでに得た最高のものは、ロードバランサーを作成するために MetalLB を使用することです。しかし、これには、ホストマシンのIPアドレスではなく、ローカルネットワークで利用可能な無料のIPアドレスを使用する必要がありました。

  • また、default-http-backendを有効にし、これらの構成ファイルをエクスポートして編集しようとしましたが、成功しませんでした。

例として、これはMinikubeで機能します。入力アドオンが有効になると、次の例は、クラスターIPのポート80にあるベースNginxサーバーイメージを示しています。

# ingress-service.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    # - Host: nginx.ioo
    - http:
        paths:
          - path: /
            backend:
              serviceName: nginx-cluster-ip-service
              servicePort: 80
# nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: nginx
  template:
    metadata:
      labels:
        component: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
# nginx-cluster-ip-service

apiVersion: v1
kind: Service
metadata:
  name: nginx-cluster-ip-service
spec:
  type: ClusterIP
  selector:
    component: nginx
  ports:
    - port: 80
      targetPort: 80
9
denski

私があなたを正しく理解していれば、いくつかの見方があるかもしれません。

1つは、すでに言及した MetalLB です

MetalLB は、サポートされているクラウドプロバイダーで実行されないKubernetesクラスターにネットワークロードバランサーを実装し、任意のクラスター内でLoadBalancerサービスを効果的に使用できるようにします。

詳細な実装を読むことができます 純粋なソフトウェアソリューション:MetalLB

別の方法は NodePortサービス経由

このアプローチには、他に認識しておくべきいくつかの制限があります。

  • ソースIPアドレス

タイプ NodePort のサービスは、デフォルトで 送信元アドレス変換 を実行します。これは、HTTPリクエストのソースIPが常にNGINXの観点からリクエストを受信したKubernetesノードのIPアドレスであることを意味します。

ホストネットワークも使用できます

利用可能な外部ロードバランサーはないが、NodePortsの使用がオプションではない設定では、ingress-nginxポッドは、専用のネットワーク名前空間の代わりに、実行するホストのネットワークを使用します。このアプローチの利点は、NGINXイングレスコントローラーがポート80および443をKubernetesノードのネットワークインターフェースに直接バインドできることです。NodePortServicesによる追加のネットワーク変換は必要ありません。

また、POD内の構成を編集すると、ポッドが再起動されたり、クラッシュしたりすると、その構成が失われることを覚えておく必要があります。

これがあなたのアイデアにどの方向に行くかを決定するのに役立つことを願っています。

6
Crou