Kubernetes ClusterのScalewayでデプロイされている入力ポッドがあり、Kube-Systemネームスペースに存在します。誤ってdefault
ネームスペースでロードバランササービスを作成し、kube-system
ネームスペースで新しいものを削除して再作成したくないので、default
ネームスペースにロードバランサがエンドポッドとして入力ポッドを持つことができます。
apiVersion: v1
kind: Service
metadata:
name: ecom-loadbalancer
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- port: 443
targetPort: 443
type: LoadBalancer
それは可能ですか?セレクタフィールドに追加する必要があるものはありますか?
入力ポッドと通信するkube-system
ネームスペースでclusterIP
サービスを作成しようとしました。
apiVersion: v1
kind: Service
metadata:
name: ecom-loadbalancer
namespace: kube-system
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- port: 443
targetPort: 443
type: ClusterIP
次に、そのサービスをそのようなデフォルトのネームスペースでloadbalancer
に参照してみました。
apiVersion: v1
kind: Service
metadata:
name: ecom-loadbalancer
spec:
type: ExternalName
externalName: ecom-loadbalancer.kube-system.svc.cluster.local
ports:
- port: 443
targetPort: 443
type: LoadBalancer
しかし結果はありません。 clusterIP
は入力ポッドを指していますが、ロードバランサはエンドポイントなしで残ります。
正しく再作成する必要がある理由(2テクニカルとアドバイス):
ExternalName
他のネームスペースの外部サービスまたはサービスにアクセスするために使用されます。それが機能する方法は、サービスの名前が発生するときに起こります、CNAMEが返されます。その他の言葉では、要求が他の場所に向けられるべきな場合、それは出力接続のために機能します。
参照 service - externalname type とユースケース Kubernetesのヒント - Part 1 Blog Post - Alen Komljen .
あなたのユースケースは異なります。 Kubernetesクラスタの外部からのリクエストを露出させて、ロードバランタを露出し、次にクラスタ内の別のサービスにトラフィックを直接送信します。サービスがLoadBalancer
またはExternalName
のどちらでもかまいませんでした。最後のマニフェストで見ることができます2つ2つ( - === - )タイプがあります。参照 サービスタイプ 。
不要な複雑さを避けます。もっと多くのサービスや他の部品があるため、すべてを追跡するのは難しくなります。
ドキュメントに基づいて、一般的にExternalName
を使用して問題があるプロトコルを使用することが可能です。
警告:HTTPとHTTPSなど、いくつかの一般的なプロトコルのためにexternalnameを使用するのに問題があるかもしれません。 externalNameを使用すると、クラスタ内のクライアントが使用するホスト名は、外部名参照が参照されている名前とは異なります。
ホスト名を使用するプロトコルの場合、この違いはエラーまたは予期しない応答につながる可能性があります。 HTTPリクエストには、オリジンサーバーが認識していないホスト:ヘッダーがあります。 TLSサーバーは、クライアントが接続しているホスト名と一致する証明書を提供することはできません。