Kubernetes CORE CONCEPTS - SERVICES
Serviceとは
ServiceはPodの集合で実行されているアプリケーションをネットワークサービスとして公開する為に使われる。ReplicaSetにより複数のPodのReplicaが存在する場合等、Podの前面Serviceを設置する事により自動のロードバランスを設定する事が出来る。
Serviceのタイプ達
種類は色々あるが、ClusterIPとNodePortは試験に出るそうな。
クライアントが自分のクラスタ内にいるのか、自分のクラスタの外からアクセスするかによってClusterIPかNodePortを選ぶ。
ClusterIP
NodePort
- 外部に対してサービスを公開(例 Webサーバーの)
- クラスタノードのポートを外部に公開しそのポートをNATでサービスに割当
- 各NodeのIPにて、静的なポート(
NodePort
)上でServiceを公開する - その
NodePort
のServiceが転送する先のClusterIP
Serviceが自動的に作成れる - 外部から
<NodeIP>:<NodePort>
でアクセスし、NodePort
Serviceにアクセスできるようになる
LoadBalancer
- クラウドプロバイダーのロードバランサーを使用して、Serviceを外部に公開
- クラスター外部にあるロードバランサーが転送する先の
NodePort
とClusterIP
Serviceは自動的に作成される
公式サイトでチェック >>> 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-serviceType:
NodePorttargetPort:
8080port:
8080nodePort:
30080selector:
name:
simple-webapp
YAMLファイルをvi等で編集
編集後
kubectl create -f <service-file-name> Serviceを作成
教材はこちら>>>