26

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

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

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

過去数日間、Microk8 でこれを実行しようとしてきましたが、頭を包むことができません。

  • これまでに得た最良の方法は、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
4

8 に答える 8

1

LoadBalancer (別名metallb ) を使用する場合、ほとんどすべてのドキュメントで重要な手順が欠落しています。

ingress-controller は、metallb LoadBalancer に公開する必要があります。

kubectl expose deploy nginx-deployment --port 80 --type LoadBalancer

これはyamlでも実行できますが、cliを使用する方が簡単です。

何日もグーグルで調べた後、ついにこのチュートリアルビデオに出会い、目を覚ましました。

https://www.youtube.com/watch?v=xYiYIjlAgHY

于 2020-05-05T14:53:06.457 に答える
0

ここで提案されているingress.classからnginxへの変更と、 (外部プロバイダーのコンソールを使用して) から パブリック IP (ホスト名ではない) への DNS エントリのセットアップは、Openshift スタイル(別名「名前ベースの仮想ホスティング」)をレプリケートするための 2 つの十分な条件でした。金属に取り付けました。public*routemicrok8s

  • より詳しい情報

MetalLB がインストールされていなくても、すべてのポッド レプリカ間のロード バランシングは正常に機能します ( の出力からわかるようにgcr.io/google-samples/hello-app)。イングレス コントローラーによって自動生成された自己署名証明書のおかげで、HTTPS でさえすぐに使用できました。

于 2021-05-04T09:28:35.497 に答える