pods(4)
-
[Kubernetes in Action] Best practices for developing apps
Bringing everything together 앞선 여러 포스팅들을 통해 쿠버네티스가 어떤 리소스들을 갖는지, 어떤 식으로 리소스들을 구성하는지에 대해 살펴보았습니다. 이번 포스팅에서는 위의 내용들을 종합하여 일반적인 애플리케이션이 쿠버네티스 위에서 어떤 식으로 동작하는지 알아보겠습니다. 일반적으로 쿠버네티스를 통해 애플리케이션을 배포할 때는 Deployment 혹은 Statefulset을 반드시 사용합니다. 이들은 하나 이상의 컨테이너를 포함하는 파드 템플릿(pod template)을 가지고 있으며, 이 템플릿 안에는 liveness probe, readiness probe가 모두 정의되어 있습니다. 파드 안의 컨테이너 내에서 실행되는 애플리케이션은 서비스(Service)를 통해 접근할 수 있으며..
2022.03.20 -
[Kubernetes in Action] Advanced Scheduling
Using taints and tolerations to repel pods from certain nodes Taint는 "얼룩"이라는 뜻이고, Toleration은 "관용, 허용"등의 뜻을 지니고 있습니다. 따라서 Node에 Taint를 설정한다는 것은 노드에 "얼룩"을 묻힌다는 것을 의미하며 파드에 Toleration을 설정한다는 것은 "이 노드에 얼룩이 있는데 이거 눈감아 줘"라고 이야기하는 것을 의미합니다. Introducing taints and tolerations Taint는 key, value, effect로 구성되며 describe에서 =:의 문법으로 표현됩니다. 실제로 describe node를 하면 description에 "Taints"라는 항목이 나오는데 여기서 어떻게 설정되어 있..
2022.02.28 -
[Kubernetes in Action] Automatic scaling of pods and other cluster nodes
Overview 파드 내에서 동작하는 애플리케이션은 ReplicaSet이나 Deployment, 다른 Scalable Resource의 replicas필드를 수동으로 조작함으로써 스케일링할 수 있습니다(Horizontal Scaling). 또한 단일 파드의 CPU나 메모리를 requests나 limits설정을 통해 수동으로 스케일링할 수도 있습니다.(Vertical Scaling). 하지만 이러한 수동 스케일링 방식은 급작스럽거나 예측하기 어려운 트래픽 변화에 대해서 민감하고 효율적으로 대응하기 어렵기 때문에 쿠버네티스에서는 CPU usage 등의 메트릭을 사용해서 Automatic Scaling 하는 방법을 제공합니다. 이번 포스팅에서는 이러한 Automatic Scaling 방법에 대해 알아봅니다. ..
2022.02.19 -
[Kubernetes in Action] Deployments: Updating Applications Declaratively
Updating Applications Running in Pods 기본적으로 위의 구조와 같이 여러 개의 인스턴스를 통해 서비스되고 있는 애플리케이션을 업데이트하는 방법에는 두 가지가 있습니다. 일단 파드가 생성되고 나면 그 내부의 컨테이너 이미지를 수정할 수 없기 때문에 새로운 버전의 이미지를 서비스하고 싶다면 기존의 파드를 제거한 후에 새로운 버전의 이미지를 포함한 파드를 새로 생성해야 합니다. 우선 존재하는 파드를 모두 지운 후에, 새로운 파드들을 시작한다. 새로운 파드들을 시작한 이후에, 이들이 정상적으로 동작하기 시작하면 이전의 파드들을 제거한다. Deleting old pods and replacing them with new ones ReplicationController를 통해서 파드를 ..
2021.12.19