Discovery&LBリソースとは
コンテナを外部公開するようなエンドポイントを提供するリソース
CluusterIP
kubernetesクラスタ内からのみアクセス可能な仮想IP
これがデフォルトのServiceTypeとなります。
sample-clusterip.yaml
apiVersion: v1
kind: Service # リソースの種類
metadata:
name: sample-clusterip # Serviceの名前
spec:
type: ClusterIP # Serviceの種類
ports:
- port: 8000 # ポート番号
targetPort: 80 # 転送する先のポート
selecter: sample-app # 転送先のPod
NodePort
全てのKubernetes NodeのIPアドレスポートで受信したトラフィックをコンテナに転送する形で、外部疎通を確立するリソースです。
sample-nodeport.yaml
apiVersion: v1
kind: Service # リソースの種類
metadata:
name: sample-nodeport # Serviceの名前
spec:
type: NodePort # Serviceの種類
ports:
- name: "http-port"
protocol: "TCP"
port: 8080 # ポート番号
targetPort: 80 # 転送する先のポート
nodePort: 30080
selecter: sample-app # 転送先のPod
LoadBalancer
Kubernetesクラスタ外のloadBalancerに外部疎通性のある仮想IPを払い出すことが可能。
sample-lb.yaml
apiVersion: v1
kind: Service # リソースの種類
metadata:
name: sample-lb # Serviceの名前
spec:
type: LoadBalancer # Serviceの種類
ports:
- name: "http-port"
protocol: "TCP"
port: 8080 # ポート番号
targetPort: 80 # 転送する先のポート
nodePort: 30080
selecter: sample-app # 転送先のPod
ExternalName
Service名の名前解決に対して外部のドメイン宛のCNAMEを返します
sample-ds.yaml
apiVersion: v1
kind: Service # リソースの種類
metadata:
name: sample-externalname # Serviceの名前
spec:
type: ExternalName # Serviceの種類
externalName: example.sophia-s.co.jp