KubernetesにおけるService
とは、Podへの安定したネットワークアクセスを提供するためのリソースです。Serviceには複数のタイプがあり、それぞれの利用シーンに応じて使い分ける必要があります。
🔸 1. ClusterIP(デフォルト)
✅ 特徴
- クラスター内部専用の仮想IPを持つ
- 外部からのアクセスは不可
- 他のPodやServiceからのアクセスに使用
🧭 使用例
- マイクロサービス間の通信
- フロントエンドからバックエンドへの内部アクセス
📌 設定例
spec:
type: ClusterIP
🔸 2. NodePort
✅ 特徴
- クラスタ内の各ノードの特定のポート(30000~32767)を使用して外部からアクセス可能
- ClusterIPの機能も持つ
🌐 アクセス例
http://<Node IP>:<NodePort>
📌 設定例
spec:
type: NodePort
ports:
- port: 80
nodePort: 32600
🔸 3. LoadBalancer
✅ 特徴
- クラウド環境(AWS, GCP, Azureなど)で利用可
- 外部にパブリックIPを公開し、外部アクセスが可能
- 自動的にクラウドのロードバランサーを作成
📌 設定例
spec:
type: LoadBalancer
📝 備考
- Minikubeなどのローカル環境では利用不可
🔸 4. ExternalName
✅ 特徴
- Kubernetes内から外部のDNS名へ名前解決し、リダイレクト可能
- Podにルーティングせず、外部サービスを仮想的にServiceとして扱える
📌 設定例
spec:
type: ExternalName
externalName: example.com
🔗 使用例
- 外部のデータベースやAPIを参照したい場合
📋 まとめ表
タイプ | アクセス範囲 | 外部アクセス | 主な用途 |
---|---|---|---|
ClusterIP | クラスター内部のみ | ❌ | 内部通信、サービス間連携 |
NodePort | クラスター外も可能 | ✅ | 開発環境での簡易公開 |
LoadBalancer | クラウドの外部IP | ✅ | 本番環境での公開用途 |
ExternalName | 外部のDNS名へ転送 | ✅ | 外部リソースへの名前解決 |
✅ 補足:Service確認コマンド
kubectl get services # 全てのService一覧を表示
kubectl get services -o wide # 追加情報も含めて表示
クラスタ構築やアプリケーションデプロイ時には、適切なServiceタイプの選定が重要です。用途に応じて最適なタイプを使い分けましょう!