kubernetes(17)
-
[Docker in Action] Software installation simplified (2)
Installation files and isolation 실제로 도커에서 우리가 "이미지"라고 부르는 개념은 "이미지 레이어"들의 조합(Collection)을 의미합니다. "이미지 레이어(layer)"는 파일과 파일 메타데이터의 조합으로, 하나의 "Atomic Unit"으로 기능합니다. 도커는 이 각각의 레이어를 이미지처럼 취급하며, 이렇게 이미지를 구성하는 이미지 레이어들과 이미지 사이의 관계를 이해하면 다음과 같은 핵심적인 질문들을 해결하는데 도움이 됩니다. What image properties factor into download and installation speeds? What are all these unnamed images that are listed when I use the doc..
2022.04.17 -
[Kubernetes in Action] Extending Kubernetes
Platforms built on top of Kubernetes (Helm) 이번 챕터에서는 Kubernetes를 조금 더 Custom 하게 사용할 수 있는 여러 방법들(CustomResourceDefinitions, Kubernetes Service Catalog)도 다루지만, 이번 포스팅에서는 해당 내용들보다는 실제로 현업에서 많이 사용되는 Kubernetes 확장 도구인 Helm을 위주로 가볍게 살펴보려고 합니다. Definition Helm은 공식 홈페이지에도 정의가 나와있는 것처럼 'Kubernetes의 패키지 관리'를 도와주는 도구입니다. Nodejs의 npm과 Python의 pip과 같은 역할을 한다고 생각할 수 있습니다. Helm을 이해하기 위해서는 다음 3가지 개념을 알아야 합니다. C..
2022.03.26 -
[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] Managing pods' computational resources
Requesting Resources for a pod's containers 파드를 생성할 때, 각각의 컨테이너가 얼마만큼의 CPU 리소스와 메모리를 사용할지를 명시할 수 있습니다. 쿠버네티스에서 CPU와 메모리 자원은 컨테이너 단위로 명시되며, 파드의 리소스는 파드 내의 컨테이너에서 사용되는 리소스들의 합으로 정의됩니다. 리소스는 request와 limit을 통해서 설정할 수 있습니다. request는 컨테이너가 필요로 하는(최소) CPU와 메모리의 양을 설정하는 것이고, limit은 컨테이너가 최대로 사용할 수 있는 CPU와 메모리의 양을 설정하는 것을 의미합니다. Creating pods with resource requests request를 갖는 파드는 다음과 같이 생성할 수 있습니다. api..
2022.02.12