쿠버네티스(12)
-
[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] 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 -
[Kubernetes in Action] Securing Cluster nodes and the network
Using the host node's namespace in a pod 파드 안에서 동작하는 컨테이너들은 별도의 Linux Namespace 아래에서 동작합니다. 이는 다른 컨테이너의 프로세스나 노드의 default 프로세스로부터 해당 컨테이너의 프로세스를 격리시킵니다. 각각의 파드는 자신의 고유한 네트워크 Namepsace를 가져야 하기 때문에 자신만의 고유한 IP와 포트 Space를 갖습니다. 또한 자신만의 고유한 Process Tree를 가지며 자신만의 IPC Namespace를 사용합니다. (다른 파드와 통신할 때는 IPC를 사용해서만 통신이 가능합니다.) 이렇게 쿠버네티스는 특정 파드에 네트워크, Process, IPC 공간을 별도로 할당하고 다른 파드들과 철저하게 격리시키는 구조를 가지고 있..
2022.02.02 -
[Kubernetes in Action] StatefulSets: deploying replicated stateful applications
Replicating Stateful Pods 이전 포스팅에서 살펴본 ReplicaSet(Replication Controller도 있지만 비슷한 개념이므로 ReplicaSet만 언급하도록 하겠습니다.)은 하나의 파드 템플릿(pod template)으로부터 여러 개의 파드 복제본들을 생성합니다. 각각의 파드들은 name, IP주소를 제외하고는 모두 동일하며 만약 파드 템플릿이 PVC(Persistent Volume Claim)을 통한 스토리지를 가지고 있다면, 해당 파드 템플릿으로부터 생성된 모든 파드들은 동일한 PVC를 사용하게 되므로 동일한 스토리지를 사용하게 됩니다.(파드는 PVC를 레퍼런스 하고 있고 이 레퍼런스는 파드 템플릿에 명시되어 있기 때문에 동일한 참조를 갖게 되는 것입니다) 따라서 Re..
2021.12.26 -
[Kubernetes in Action] Accessing Pod Metadata and Other Resources
Kubernetes in Action 2nd Edition을 정리한 글입니다. Passing metadata through the Downward API 애플리케이션은 종종 자신이 동작하고 있는 환경에 대한 정보를 알아야 할 때가 있습니다. 실제로 대부분의 애플리케이션이 Dev, Staging, Production등의 환경을 구분해서 동작하며, 각각의 환경에 따라 서로 다른 정보들을 필요로 합니다. 이를 위해 지난 포스팅에서 살펴보았던 ConfigMap, Secret을 사용하는 방법도 있지만 쿠버네티스에서 제공하는 다른 기능인 DownwardAPI를 사용할 수 도 있습니다. 이번 포스팅에서는 DownwardAPI를 사용하여 running Pod에 Environment Variable에 대한 정보를 제공하..
2021.12.12 -
[Kubernetes in Action] ConfigMaps and Secrets
Kubernetes in Action 2nd Edition을 정리한 글입니다. Configuring Containerized Applications 애플리케이션을 개발하다 보면, 컨테이너화된 애플리케이션 안에 환경변수등을 주입해주어야 할 때가 있습니다. 데이터베이스에 접근하기 위한 암호이거나, 특정 Third-party Library를 사용하기 위한 private key와 같은 예시가 있는데, 이러한 정보들을 컨테이너화된 애플리케이션에 넣어주는 방법은 일반적으로는 크게 다음 3가지가 있습니다. Passing Command-line arguments to containers Setting Environment variables for a container Mouting Configuration files ..
2021.10.30