Kubernrtesサービスタイプ(サービスタイプ)の分析

Kubernrtesサービスタイプ(サービスタイプ)の分析

スコフィールド初心者の運用と保守の話

最初の写真

Kubernrtesサービスタイプ(サービスタイプ)の分析
Kubernetesクラスターでは、サービスはラベルセレクターを介して対応するポッドを選択し、リクエストを転送します。アニメーションを見ると、付箋セレクターを直接体験できます。
Kubernrtesサービスタイプ(サービスタイプ)の分析

ポッド、エンドポイント、およびサービス間の関係


1.たとえば、
最初にデプロイメントファイルを見て、主にコメント部分を見てみましょうファイルが長すぎるため、この記事ではyamlファイルの一部のフィールドが削除されています


---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: gogs
  labels:       # 定义StatefulSet的标签,为后面Service选择器提供标签
    app: gogs
spec:
  serviceName: gogs
  replicas: 1
  selector:
    matchLabels:  # 标签选择器,StatefulSet通过该标签选择pod
      app: gogs
  template:
    metadata:
      labels:    # 定义pod的标签
        app: gogs
    spec:
      terminationGracePeriodSeconds: 180
.......
---
apiVersion: v1
kind: Service
metadata:
  name: gogs
  labels:
    app: gogs
spec:
  type: NodePort
  ports:
  - port: 3000
    targetPort: 3000
  selector:      # 标签匹配器,Service通过该标签匹配到对应的Pod
    app: gogs

2.実行結果を表示します


[root@k8s-node001 ~]# kubectl  get po,ep,svc
NAME                                READY   STATUS    RESTARTS   AGE
pod/gogs-0                          1/1     Running   0          3d1h

NAME                   ENDPOINTS                                                        AGE
endpoints/gogs         100.68.150.197:3000                                              3d1h

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/gogs         NodePort    10.106.102.74   <none>        3000:30526/TCP   3d1h

3. kubectl describeを使用して、ポッド、エンドポイント、サービスの詳細を表示します

Kubernrtesサービスタイプ(サービスタイプ)の分析

4.上の図から、関連情報を確認できます
。1。ポッドとエンドポイントのIPは同じです。エンドポイントは、外部にサービスを提供できるポッドをマッピングするために使用されます。ポッドの実行ステータスが実行されていない場合は、エンドポイント
2は生成されません
。StatefulSetとポッドの関係はラベルセレクター3を介して関連付けられます。サービスはKubernetesに組み込まれたLoadBalancerとして簡単に理解でき、その役割は複数のポッドに負荷分散を提供することです。
4.サービスはラベルアプリを使用します:負荷分散に必要なポッドに一致するゴグ

さて、ポッド、エンドポイント、サービスの関係について簡単に紹介します。次に、Kubernetesのいくつかのサービスタイプを紹介しましょう。

ClusterIP


内部クラスターIPサービスによって公開されるServiceType、値を選択します。サービスにはクラスター内でのみアクセスできます。これがデフォルトの
欠点です。サービスにはクラスター
内でのみアクセスできます。


apiVersion: v1
kind: Service
metadata:
  name: gogs-clusterip
spec:
  type: ClusterIP
  ports:
  - port: 3000
    targetPort: 3000
  selector:
    app: gogs

結果


NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
gogs-clusterip   ClusterIP   10.104.1.9      <none>        3000/TCP         2m11s

10.104.1.9はクラスター内のIPであり、クラスター外ではアクセスできないことがわかります。

NodePort


タイプフィールドがNodePortに設定されている場合、Kubernetesは指定された範囲(デフォルト:30000〜32767)でポートを割り当てます。各ノードは、ランダムに割り当てられたポートをサービスにプロキシします。
栗を持ち上げる


apiVersion: v1
kind: Service
metadata:
  name: gogs
spec:
  type: NodePort
  ports:
  - port: 3000
    targetPort: 3000
  selector:
    app: gogs

結果


NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
gogs             NodePort    10.106.102.74   <none>        3000:30526/TCP   3d2h

ここに表示されているように、ポート30526はランダムに割り当てられ、クラスター内の任意のノードのIP +30526を介してサービスにアクセスできるようになりました。

イングレス


Ingressは、クラスターの外部からクラスター内のサービスへのHTTPおよびHTTPSルートを公開します。トラフィックルーティングは、Ingressリソースで定義されたルールによって制御されます。
入力は、外部からアクセス可能なURLを提供し、トラフィックの負荷を分散し、SSL / TLSを終了し、名前ベースの仮想ホスティング機能を提供するサービスとして構成できます。Ingressコントローラーは通常、ロードバランサーを介してIngressを実装する役割を果たしますが、トラフィックの処理を支援するためにエッジルーターやその他のフロントエンドを使用して構成することもできます。


---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gogs-gogs
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: gogs.test.cn
    http:
      paths:
      - path: /
        backend:
          serviceName: gogs
          servicePort: 3000

結果


NAME    CLASS    HOSTS             ADDRESS       PORTS   AGE
gogs-gogs   <none>    gogs.test.cn   10.26.25.21   80      3d19h

これで、ドメイン名gogs.test.cnを介してgogsにアクセスできます
。gogs.test.cnは、入力が配置されているマシンのIPにDNS解決を追加する必要があることに注意してください。

LoadBalancer


サービスを作成するときに、クラウドネットワークロードバランサーを自動的に作成することを選択できます。これにより、外部からアクセス可能なIPアドレスが提供され、クラスターノードの正しいポートにトラフィックを分散できます。LoadBalancerは通常、パブリッククラウドベンダーによって提供され、ここで説明するように、単独で構築する必要はありません。

Kubernrtesサービスタイプ(サービスタイプ)の分析
PS:フォローアップ記事はdev.kubeops.netに同期されます

注:記事の写真はインターネットからのものです。侵害がある場合は、時間内に削除するために私に連絡してください。

おすすめ

転載: blog.51cto.com/15060545/2657319