Kubernetes Object: Service
3408 ワード
パードには次の問題があります.ポンドが生成されるたびに、まぶたが変わります.ノード上でパイドをスケジューリングし,パイドを生成すると,IPが決定され,クライアントはサーバパイドIPを事前に知ることができない. は、アクセスする必要があるサーバに対応する1つ以上のシードを持たない場合もあります.コネチカットにはscaloutという友達がいます.この場合、1つのサービスにアクセスする場合は、残りの部分で負荷バランスをとる必要があります. この問題を解決するために使用される機能は
サービス
ラベルセレクタに一致するパードの8080ポートに移動します. kube-svc.yaml
このサービスを作成すると、
実行中のコンテナで通信をリモートでテストするには、シードを解放します.
kube-pods.yaml
以上のコマンドを図に示します.すなわち,kubiaというpardに10.98.167.164の内部クラスタIpiでアクセスし,サービスは負荷バランスをとり,pardに近づける.
このようにして、サービスは接続を任意の帯域に伝達し、サービスエージェントは任意の帯域を選択して伝送し、上記の3つの帯域のいずれかを知らない.
特定のクライアントのすべてのリクエストを毎回同じパラメータにリダイレクトする場合は、
顧客グループはどのようにサービスIPとサービスポートを知っていますか?
クベルネディスは、クライアント・パイドがサービスIPとポートを検索する機能を提供します.
主に,環境変数探索,dns探索,FQDNの3つの手法を用いる.クーベルネディスパード環境変数 を表示
これまで,サービスがクラスタ内で通信する方法を理解してきた.しかし、私たちがよく知っているページ画面は外部からアクセスする必要があります.では、クバーネディス国内でサービスを外部に暴露するにはどうすればいいのでしょうか.
方法は3つあります
1)NodePort:各クラスタノードは、ノード自体からポートを開き、そのポートを受信したトラフィックをサービスに渡します.
2)LoadBalaner:クラウドインフラストラクチャの構成済みロードバランササービスへのアクセス
3)Ingress:単一IPで複数のサービスを暴露するIngressリソースを作成する
あります.それぞれの方法を理解してみましょう.
サービスyamlファイルをTypeのNodePortとして30000-32767ポートを指定します.
서비스
である.サービス
クバーネディスサービスは、同じサービスを提供するシードグループに持続的な単一接触点を作成しようとしたときに生成されるリソースである.
各サービスには、サービスが存在する場合に絶対に変更されないIPアドレスとポートがあります.
サービスを作成する方法は2つあります.
サービスの作成方法
1.kubectl exposeの使用
https://kubernetes.io/ko/docs/tutorials/stateless-application/expose-external-ip-address/ kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
2.yamlディスクレバーを使用したサービスの作成
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: kubia
kubectl apply -f kube-svc.yamlこのサービスを作成すると、
Cluster IP
がサービスに割り当てられていることがわかります.Cluster IP
は、クバーネディス内部でしかアクセスできないIPである.実行中のコンテナで通信をリモートでテストするには、シードを解放します.
kube-pods.yaml
apiVersion: v1
kind: Pod
metadata:
name: kubia
labels:
app: kubia
spec:
containers:
- image: luksa/kubia
name: kubia
kubectl execで通信をテストする以上のコマンドを図に示します.すなわち,kubiaというpardに10.98.167.164の内部クラスタIpiでアクセスし,サービスは負荷バランスをとり,pardに近づける.
サービスの使用
sessionAffinity: ClientIP
このようにして、サービスは接続を任意の帯域に伝達し、サービスエージェントは任意の帯域を選択して伝送し、上記の3つの帯域のいずれかを知らない.
特定のクライアントのすべてのリクエストを毎回同じパラメータにリダイレクトする場合は、
sessionAffinity
オプションを使用します.apiVersion: v1
kind : Service
spec:
sessionAffinity : ClientIP
複数ポートへの露出
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
- name: http
port: 80
targetPort: 8080
- name: https:
port: 443
targetPort: 8443
selector:
app: kubia
サービス名のポートを参照してください
apiVersion: v1
kind: Service
spec:
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
検索サービス
顧客グループはどのようにサービスIPとサービスポートを知っていますか?
クベルネディスは、クライアント・パイドがサービスIPとポートを検索する機能を提供します.
主に,環境変数探索,dns探索,FQDNの3つの手法を用いる.
kubectl exec {pod} env
サービスを外部に露出
これまで,サービスがクラスタ内で通信する方法を理解してきた.しかし、私たちがよく知っているページ画面は外部からアクセスする必要があります.では、クバーネディス国内でサービスを外部に暴露するにはどうすればいいのでしょうか.
方法は3つあります
1)NodePort:各クラスタノードは、ノード自体からポートを開き、そのポートを受信したトラフィックをサービスに渡します.
2)LoadBalaner:クラウドインフラストラクチャの構成済みロードバランササービスへのアクセス
3)Ingress:単一IPで複数のサービスを暴露するIngressリソースを作成する
あります.それぞれの方法を理解してみましょう.
NodePort
サービスyamlファイルをTypeのNodePortとして30000-32767ポートを指定します.
Reference
この問題について(Kubernetes Object: Service), 我々は、より多くの情報をここで見つけました https://velog.io/@borab/Serviceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol