Kubernetes CORE CONCEPTS - SERVICES

Serviceとは

ServiceはPodの集合で実行されているアプリケーションをネットワークサービスとして公開する為に使われる。ReplicaSetにより複数のPodのReplicaが存在する場合等、Podの前面Serviceを設置する事により自動のロードバランスを設定する事が出来る。

Serviceのタイプ達

種類は色々あるが、ClusterIPとNodePortは試験に出るそうな。

クライアントが自分のクラスタ内にいるのか、自分のクラスタの外からアクセスするかによってClusterIPかNodePortを選ぶ。

ClusterIP

  • クラスター内部のIPでServiceを公開
  • Serviceはクラスター内部からのみ疎通性がある
  • デフォルトのServiceType

NodePort

  • 外部に対してサービスを公開(例 Webサーバーの)
  • クラスタノードのポートを外部に公開しそのポートをNATでサービスに割当
  • 各NodeのIPにて、静的なポート(NodePort)上でServiceを公開する
  • そのNodePort のServiceが転送する先のClusterIP Serviceが自動的に作成れる
  • 外部から<NodeIP>:<NodePort>でアクセスし、NodePort Serviceにアクセスできるようになる

LoadBalancer

 

公式サイトでチェック >>> Service

 

NodePortの詳細

以下の場合同じネットワーク環境内からはアプリが置かれたPodにアクセス可能だが

PCから直接アクセス出来ない為、Serviceが必要となる。

ServiceのDefinition ファイルでは3つのポートの指定し設定を記入。

上記ポート番号を記入するだけではリンクはしなく、Service とPodのリンクはPodのlabelsをService のselectorに記入が必要である。

 

Service に関するコマンド例達

kubectl get service/svc 幾つのService が存在するか

kubectl describe service <service-name> serviceの詳細表示

この場合、TargetPortは6443

2つのLabelが設定されている

Endpointsは10.34.134.6:6443(Service に紐づけられたPodのこと)で1つ存在

 

Deploymentでポッドを作成するために使用されるイメージの調べ方

kubectl get deploy deploymentの名前を取得

kubectl describe deploy <deploy-name> deploymentの名前を使用して詳細を表示

 

既存のファイルを使用し、以下を指定して新しいサービスを作成するには

Name: webapp-service
Type: NodePort
targetPort: 8080
port: 8080
nodePort: 30080
selector:
  name: simple-webapp

YAMLファイルをvi等で編集

編集後

kubectl create -f <service-file-name> Serviceを作成

 

教材はこちら>>>

www.udemy.com