3.3.3. サービス
Kubernetes サービス は内部ロードバランサーとして機能します。これは、受信する接続をプロキシー送信するために一連のレプリケートされた Pod を特定します。バッキング Pod は、サービスが一貫して利用可能な状態の間に任意でサービスに追加されたり、削除されたりします。これにより、サービスに依存して同じアドレスの Pod を参照するすべてのものを有効にします。 デフォルトのサービス clusterIP アドレスは OpenShift Container Platform 内部ネットワークからのもので、Pod が相互にアクセスできるように使用されます。
サービスへの外部アクセスを許可するには、クラスターの外部
にある追加の externalIP
および ingressIP アドレスをサービスに割り当てることができます。これらの externalIP
アドレスを、サービスへの高可用性のあるアクセスを提供する仮想 IP アドレスにすることもできます。
サービスには IP アドレスとポートのペアが割り当てられるため、アクセスされる際に、適切なバッキングポートにプロキシー送信されます。サービスは、ラベルセレクターを使用して特定ポートで特定のネットワークサービスを提供する実行中のすべてのコンテナーを見つけます。
Pod と同様に、サービスは REST オブジェクトです。以下の例は、上記の定義された Pod のサービス定義を示しています。
サービスオブジェクト定義 (YAML)
apiVersion: v1 kind: Service metadata: name: docker-registry 1 spec: selector: 2 docker-registry: default clusterIP: 172.30.136.123 3 ports: - nodePort: 0 port: 5000 4 protocol: TCP targetPort: 5000 5
Kubernetes ドキュメント には、サービスについての詳細が記載されています。
3.3.3.1. サービス externalIP
クラスターの内部 IP アドレスに加えて、ユーザーはクラスターの外部にある IP アドレスを設定することができます。管理者は、トラフィックがこの IP を持つノードに到達することを確認する必要があります。
externalIP は、クラスター管理者が master-config.yaml ファイルで設定される externalIPNetworkCIDRs 範囲から選択する必要があります。master-config.yaml に変更が加えられると、マスターサービスを再起動する必要があります。
externalIPNetworkCIDR /etc/origin/master/master-config.yaml のサンプル
networkConfig: externalIPNetworkCIDRs: - 192.0.1.0.0/24
サービス externalIP 定義 (JSON)
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"selector": {
"app": "MyApp"
},
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 9376
}
],
"externalIPs" : [
"192.0.1.1" 1
]
}
}
- 1
- ポート が公開される外部 IP アドレスの一覧です。これは内部 IP アドレス一覧に追加される一覧です。