4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes基礎(5):Service-ClusterIP, NodePort, LoadBalancer

Last updated at Posted at 2020-05-22

#Serviceの特徴

Serviceは基本的に自分のCluster IPを持っています。
ServiceをPodに接続しておけばService IPでPodへのアクセスが可能になります。

Podは性能障害またはKubernetes障害などに、いつでも再生成することができるように設計されているObjectです。Podが再生成されると、PodのIPアドレスも変わるため、PodのIPは外部からの接続には使えません。
ところがServiceはユーザーが削除しない限り、再生成されてIPアドレスが変わることがないため、Serviceにアクセスをすると常にServiceと連携されているPodにアクセスすることができます。
Serviceの種類はいくつかあり、種類に毎にPodにアクセスする方法が違います。

###1. ClusterIP
kubernetes_service1.jpg
Cluster内でアクセス可能なIPで外部からのアクセスはできません。
Serviceは1つ以上のPodへ接続できます。
複数のPodに接続している場合、ServiceはTrafficを分散してPodに配信をします。

1-1) Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  labels:
     app: pod
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node1
  containers:
  - name: container
    image: <image file name>
    ports:
    - containerPort: 8080

1-2) Service

apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  selector:
    app: pod
  ports:
  - port: 9000
   type: ClusterIP  ←省略可能
    targetPort: 8080

###2. NodePort
kubernetes_service2.jpg
ServiceをNodePort Typeで生成しても、基本的にClusterIPは割り当てられます。
NodePortはKubernetes Clusterの全てのNodeに同じPortを割り当てて、外部からどのNodeのPortに接続をしても
該当Serviceに接続され、またServiceに接続されているPodにtrafficが配信されるのが特徴です。
注意すべき点は、Podが属しているNodeのみPortが設定されるのではなく、全てのNodeに同じPortが設定されるのが大きな特徴です。

2-1) Service

apiVersion: v1
kind: Service
metadata:
  name: svc-2
spec:
  selector:
    app: pod
  ports:
  - port: 9000
    targetPort: 8080
    nodePort: 30000
  type: NodePort
  externalTrafficPolicy: Local

※nodePort:30000から32767まで設定が可能です。(Port値を設定をしないと上記の範囲で自動に設定される)
※externalTrafficPolicy:Local:特定のNode IPでアクセスしたtrafficは、ServiceがそのNodeに属しているPodにtrafficを配信します。(Node1のURIからアクセスした場合はNode1のPodにtrafficを配信し、Node2のPodには配信しない)

###3. Load Balancer
kubernetes_service3.jpg
Node Portの全ての機能を持っており、さらにLoad Balancerの機能が追加されてそれぞれのNodeにtrafficを分散させます。
注意すべき点は、Load balancerにアクセスするためのIPアドレスは、自動に生成されません。
別途、外部接続のIPアドレスを割り当てるPluginをインストールしないといけませんが
Cloud Platformを使用するときは、独自のPluginがインストールされていて、Load Balancer TypeのServiceを作成すると、自動に外部接続のIPアドレスを作ってくれるので、アクセスが可能となります。
#Referenece

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?