Service
- https://kubernetes.io/docs/concepts/services-networking/service/
- https://cloud.google.com/kubernetes-engine/docs/concepts/service
Overview
Podの集合で実行されている持続的なワークロードをネットワークサービスとして公開する抽象的な手法。
Serviceを使用すると、メンバーPodのIPアドレスが変更されても、Serviceが存続している間に固定のIPアドレスを取得できる。
Service定義ファイルのサンプル:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
これはKubernetesクラスタ内で my-service
という名前でアクセスできる。
仕様
- Label Selector … サービスを識別するためのラベルとそのセレクタ。
- Endpoints API … Service内のPodの変更に伴って更新される。
Serviceのtype
https://cloud.google.com/kubernetes-engine/docs/concepts/service?hl=ja#types_of_services
ClusterIP
(デフォルト) … クラスタ内で固定IPアドレスを獲得NodePort
… 指定された1つ以上のnodePort
値を利用して、ノードのIPアドレスを通じてアクセス可能になるLoadBalancer
… ネットワークロードバランサを介したアクセスを提供ExternalName
… See belowHeadless
ExternalName
https://kubernetes.io/ja/docs/concepts/services-networking/service/#externalname
外部から参照できるDNS名を提供する。
この機能を使うには、GKEなどのように、KubernetesにDNSコンポーネントが導入されている必要がある。
Example:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: prod
spec:
type: ExternalName
externalName: my.database.example.com
参考記事など
最終更新 2020-05-04: [software/k8s] Restructure Kubernetes pages (7114ade87)