[Kubernets] Replication Controller, ReplicaSet - Template, Replicas, Selector
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 컨트롤러에 대해 알아볼 것이다. `Kubernetes`의 컨트롤러는 여러 기능을 통해 서비스를 관리하고 운영하는데 큰 도움을 준다.  Auto Healing노드 위에 `Pod`가 있는데 해당 `Pod`가 갑자기 다운되던가 아니면 해당 `Pod`가 스케줄링 되어있는 노드가 다운되면해당 `Pod`에서 돌아가던 서비스에 장애가 온 것이다.이때, `Controller`는 이걸 즉각적으로 인지하고 `Pod`를 다른 노드에 새로 만들어준다.이걸 `Auto Healing` 기능이라고 한다. Auto Scaling`Pod`의 리소스가 리미트 상태가 됐을 때 `Controller`는 이 상태를 파악하고 `Pod`를 하나 더 만들어준다.즉, 부하가 분산되며 `Pod`가 죽지 않도록 ..
[Kubernetes] Namespace, ResourceQuota, LimitRange
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 `Namespace`, `ResourceQuota`, `LimitRange`에 관해 알아보려 한다. 우선, 해당 오브젝트들을 왜 사용해야 되는지 먼저 알아보자.  `Kubernetes` 클러스터 안에는 사용할 수 있는 자원들이 존재한다. 일반적으로는 메모리나 CPU가 있을 것이다. 클러스터 안에는 여러 `Namespace`들이 존재하며 `Namespace` 안에는 여러 `Pod`가 생성이 가능하다. 각 `Pod`는 필요한 자원을 클러스터 자원을 공유해서 사용하는데,만약 한 `Namepsace` 안에 있는 `Pod`가 이 클러스터에 남은 자원을 모두 사용해 버리면 다른 `Pod` 입장에서는더 이상 쓸 자원이 없어서 자원이 필요할 때 문제가 발생한다. 이런 문제를 해결..
[Kubernetes] ConfigMap, Secret - Env, Mount
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 `ConfigMap`과 `Secret`에 관한 설명이다. 설명하기에 앞서 해당 오브젝트를 사용해야 하는 상황은 어떤 경우일까? 개발 환경과 상용 환경이 있다고 하자.또한, A라는 서비스가 있다고 가정하자. 이때, A 서비스에는 일반 접근과 보안 접근이 가능하다. A 서비스(개발 환경)SSH: FalseUser: DevKey: LS0tLs... 따라서, 개발 환경에서는 해당 보안 접근을 해제할 수 있는 옵션이 있다.(`SSH : False`)만약, 보안 접근을 한다면 접근 유저와 키를 세팅할 수도 있다.(`User: Dev`, `Key: LS0tLs`)  개발 환경에서는 위처럼 사용한다고 하고, 상용 환경에서 배포를 해야 한다면 해당 값은 변경되어야 할 것이다. A ..
[Kubernetes] Volume - emptyDir, hostPath, PV/PVC
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 `emptyDir`과 `hostPath` 그리고 `pvc`와 `pv`라고 하는퍼시스턴트 볼륨 클라임과 퍼시스턴트 볼륨에 관해 알아보도록 하자.   emptyDir 먼저 `emptyDir`은 컨테이너들끼리 데이터를 공유하기 위해 `Volume`을 사용하는 것이다.최초로 해당 `Volume` 이 생성될 때는 항상 해당 `Volume`안의 내용이 비어있기 때문에 `emptyDir`이라는 명칭이 붙어졌다. 만약, 컨테이너1이 웹 역할을 하는 서버이고 컨테이너2가 백엔드단을 처리해주는 서버라고 했을 때, 해당 웹서버로 받은 어떤 특정 파일을 마운트가 된 `Volume`에 저장을 해놓고,백엔드단의 컨테이너 역시 해당 볼륨을 마운트를 하면 이 두 서버가 해당 `Volume`을 ..
[Kubernetes] Service - ClusterIP, NodePort, LoadBalancer
·
Infra/Kubernetes
Kubernetes  Service  서비스는 기본적으로 자신의 `클러스터 IP`를 가지고 있다.그리고 이 서비스를 파드에 연결을 시켜 놓으면 서비스의 IP를 통해서 파드에 접근이 가능하다. 그런데, 전 포스팅에서 살펴본 것처럼 파드도 똑같이 클러스터 내에서 접근할 수 있는 IP가 있었다.  그렇다면 굳이 왜 서비스를 이용하는 것일까?  사용 이유 `Pod`라는 존재는 `Kubernetes`에서 시스템 장애건, 성능 장애건 언제든지 죽을 수가 있다.그리고 그때 다시 재생성 되도록 설계가 되어있는 오브젝트이다. 근데 이때, `Pod`는 재생성시 IP가 변경된다. 따라서, 이 파드의 IP는 신뢰성이 떨어진다.그러나, `Pod`와는 별개로 서비스는 사용자가 직접 지우지 않는 한 삭제되거나 재생성되지 않는다. ..
[Kubernetes] 왜 쿠버네티스인가?
·
Infra/Kubernetes
Kubernetes 우리는 어떤 서비스든 원활하게 진행되기 위해서는 충분한 서버 자원이 있어야 한다는 것을 알고있다.신규 게임의 서버 문제수강신청등쿠버네티스는 위의 문제 발생시 다양한 방법으로 문제해결을 진행한다.예제 시나리오.한 회사에서 3개의 서비스를 오픈하고 있다고 하자.이른 아침에는 A 서비스의 접속량이 높다.3대의 서비스정오가 되면 B 서비스만 접속량이 높다.3대의 서비스밤이 되면 C 서비스만 접속량이 높다.3대의 서비스세가지 서비스 모두 다른 시간대의 트래픽이 적더라도 특정 시간의 서비스 운영을 위해서3대의 서비스가 필요하다. → 총 9대의 서비스 필요쿠버네티스의 가상화 기술 사용시AutoScaling 하루동안 A, B, C 서비스의 평균 트래픽을 계산해보면 4대분의 자원만 필요하다.이때 쿠버..