Kim-Baek 개발자 이야기

Kubernetes Service, Deployment 본문

개발/k8s

Kubernetes Service, Deployment

킴백 개발자 2020. 9. 2. 23:00

Kubernetes Service

 

QwiklabsOrchestrating the Cloud with Kubernetes을 공부 하면서 정리한 내용이다.

 

Service

 

Kubernets Service는 논리적인 Pods set의 추상적개념으로 이해하면 된다.

즉 Pods의 Endpoint라고 생각하면 된다. 특정 Pod 들은 언제든지 restart되거나 stop 될 수 있다.

그래서 Service를 통해 Pod 들의 안정적인 Endpoint를 제공할 수 있다.

Servicelabel 를 사용해 어떤 Pod들을 묶을지 결정한다.

 

Service Type

 

Service는 4가지 Type을 가지고 있으며, default는 ClusterIP Type이다.

Service Type에 대해서는 간단하게 정리하고, 자세한 Spec은 아래 kubernetes
documentation에서 확인 할 수 있다.

k8s Service Type

  • ClusterIP - defatul type이며, Service는 오직 cluster-internal IP를 통해 Cluster 내부에만 노출된다.
  • NodePort - 외부에서 접근 가능하도록 static port (NodePort)를 노출한다.
  • LoadBalancer - Service에 Load balancer를 적용한다.
  • ExternalName - Service와 DNS name을 맵핑해준다.

 

Creating Service

 

Service를 정의한 Manifest파일을 적용시킨다.

kubectl create -f services/monolith.yaml

 

Deployment

 

Deployment는 Running 중인 Pod의 수를 유지하는 등 Pod를 관리해준다.

DeploymentReplicaSets를 통해 Pod의 Starting, Stopping을 관리한다.
(Replicasets의 개념은 추후에 다뤄 볼 예정이다.)

Pod의 수는 사용자가 정의해준 replicas 수 이다.

 

예를 들어, 위와 같이 replicas 이 3으로 정의된 Deployment가 있다고 가정하다.

Node3 이 예기치 못한 에러로 Down 된다면, Deployment는 3개의 Pod를 유지하기 위해서 Pod를 Node2 에 새로 생성하게 된다.

이 밖에, Deployment를 통해서 Scaling이나 Rolling update, 배포 등을 편하게 해준다.

 

Creating Deployment

Deployment 를 생성하는 방법 역시 매니페스트 파일을 정의 후 생성이 가능하다.

 

Reference

반응형

'개발 > k8s' 카테고리의 다른 글

Kubernetes StatefulSets  (0) 2020.09.20
Kubernetes Pod  (0) 2020.09.01
Comments