前回に引き続きDockerから更に発展してkubernetesを学んでいるので、学んだことをつれづれなるまゝに自分の整理の為にも綴っておこうと思います。

前回はこちら

見習いインフラエンジニアがkubernetesを本気で勉強してみている話 その3デプロイメント編Deployment — Goalist Blog — Medium

サービスとは何か??利点は??

クラスタ内のポッドへのアクセスを安定して提供するための機能で、ポッドのIPアドレスが変わっても同じエンドポイントを提供することができます!

サービスの種類

  • ClusterIP

デフォルトのサービスタイプ。

クラスター内の内部IPを割り当て、クラスター内の他のポッドからアクセス可能にします。

  • NodePort

各ノードの特定のポートを開放し、そのポートを通じてクラスター外部からアクセス可能にします。

  • LoadBalancer

クラウドプロバイダー(AWS、GCP、Azureなど)のロードバランサを利用し、外部アクセスを提供します。

  • ExternalName

外部DNS名に対してサービスを設定し、内部から外部サービスへのアクセスを提供します。

How to use

serviceリソースを用いるにはまずはそのマニフェストファイルをyaml形式で記載し、それをKubernetesクラスタに適応します

例 ClusterIPタイプのサービス

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376

このserviceリソースの作成コマンド

kubectl apply -f service.yaml

!このサービスの解説!

Selector(セレクタ)

サービスがどのポッドにトラフィックを送るかを決定するためのラベルセレクタで上記の例では、

app: MyApp というラベルを持つポッドが対象です。

PortとTargetPort

port はサービスが公開するポート番号であり
targetPort はポッド内のアプリケーションがリスニングしているポート番号を定義しています。

この定義があることでポッドのIPアドレスが変わっても問題なく通信できるわけですね~~

--

--