0

外部と内部の 2 つの ingress-nginx コントローラーを実行しています。すべてが機能し、トラフィックが流れていますが、何らかの理由で、kubernetes イングレス リソースにコントローラーのアドレスが表示されません。

Every 2.0s: kubectl get ingress

NAME                     CLASS            HOSTS             ADDRESS   PORTS     AGE
my-app-external          nginx-external   my.app.com                  80, 443   21h

すべてが機能しますが、アドレスが表示されないのが気になります。私のコントローラーは適切に展開されています

Every 2.0s: kubectl get services -n ingress-nginx

NAME                                          TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
nginx-external-ingress-nginx-controller       LoadBalancer   10.191.93.78    <pub_ip>        80:30470/TCP,443:31251/TCP   10d
nginx-external-ingress-nginx-defaultbackend   ClusterIP      10.191.95.41    <none>          80/TCP                       10d
nginx-internal-ingress-nginx-controller       LoadBalancer   10.191.71.162   10.227.13.2     80:31858/TCP,443:30080/TCP   10d
nginx-internal-ingress-nginx-defaultbackend   ClusterIP      10.191.78.126   <none>          80/TCP                       10d

ingress-nginx/ingress-nginx helm チャートの値は次のようになります

# internal
controller:
  ingressClassResource:
    name: "nginx-internal"
    controllerValue: "k8s.io/internal-ingress-nginx"

  service:
    annotations:
      cloud.google.com/load-balancer-type: "Internal"
      networking.gke.io/internal-load-balancer-allow-global-access: "true"

# external
controller:
  ingressClassResource:
    name: "nginx-external"
    controllerValue: "k8s.io/external-ingress-nginx"

私のkubernetesイングレスリソースはそのように見えます

apiVersion: networking.k8s.io/v1
kind: Ingress
...
spec:
  ingressClassName: "nginx-external"

そして私のIngressClassはこのように見えます

Every 2.0s: kubectl get ingressclass

NAME             CONTROLLER                      PARAMETERS   AGE
nginx-external   k8s.io/external-ingress-nginx   <none>       21h
nginx-internal   k8s.io/internal-ingress-nginx   <none>       3d21h

その上、この変更の前に、私は同じ外部および内部イングレスを実行していcontrollerValueたので、イングレスクラスは次のようになりました

Every 2.0s: kubectl get ingressclass                                       MacBook-Pro-5.local: Tue Dec  7 12:31:02 2021

NAME             CONTROLLER                      PARAMETERS   AGE
nginx-external   k8s.io/ingress-nginx   <none>       21h
nginx-internal   k8s.io/ingress-nginx   <none>       3d21h

すべてうまくいきました!!!!!、しかし、そのシナリオのイングレスは間違ったアドレスを表示し、間違ったイングレスコントローラーと通信していることを示しました。このように(外部と内部の両方が外部IPを表示していることに注意してください)

Every 2.0s: kubectl get ingress                                            MacBook-Pro-5.local: Tue Dec  7 12:33:30 2021

NAME                              CLASS            HOSTS                             ADDRESS         PORTS     AGE
tst-my-app-1                      nginx-external   tst-my.app.domain                 <pub_ip>        80, 443   180d
tst-my-app-2                      nginx-internal   tst-my.app2.domain                <pub_ip>        80        206d
...

そして、それらは適切に機能しました!!、トラフィックは想定どおりに進んでいました-私の観点からは、それは単なる視覚的なバグでした)-私の質問は、他の誰かもそれに遭遇しましたか? または、それを修正して、イングレスがコントローラーから取得したアドレスをkubernetesに適切に表示させる方法を知っていますか?

4

0 に答える 0