mirror of
https://github.com/calofmijuck/blog.git
synced 2025-12-06 22:53:51 +00:00
chore: reorganize all image files and linted documents (#80)
* [PUBLISHER] upload files #62 * [PUBLISHER] upload files #63 * [PUBLISHER] upload files #64 * [PUBLISHER] upload files #65 * [PUBLISHER] upload files #66 * [PUBLISHER] upload files #67 * PUSH NOTE : test-document.md * PUSH NOTE : 09. Lp Functions.md * PUSH ATTACHMENT : mt-09.png * PUSH NOTE : 03. Measure Spaces.md * PUSH ATTACHMENT : mt-03.png * PUSH NOTE : 08. Comparison with the Riemann Integral.md * PUSH ATTACHMENT : mt-08.png * PUSH NOTE : 07. Dominated Convergence Theorem.md * PUSH ATTACHMENT : mt-07.png * PUSH NOTE : 06. Convergence Theorems.md * PUSH ATTACHMENT : mt-06.png * PUSH NOTE : 05. Lebesgue Integration.md * PUSH ATTACHMENT : mt-05.png * PUSH NOTE : test-document.md * [PUBLISHER] upload files #68 * [PUBLISHER] upload files #69 * PUSH NOTE : 08. Comparison with the Riemann Integral.md * PUSH ATTACHMENT : mt-08.png * PUSH NOTE : 02. Construction of Measure.md * PUSH ATTACHMENT : mt-02.png * DELETE FILE : _posts/2023-09-09-test-document.md * DELETE FILE : _posts/Mathematics/Measure Theory/2023-09-09-test-document.md * [PUBLISHER] upload files #70 * PUSH NOTE : Rules of Inference with Coq.md * PUSH NOTE : 수학 공부에 대한 고찰.md * PUSH NOTE : 04. Measurable Functions.md * PUSH ATTACHMENT : mt-04.png * PUSH NOTE : 07. Dominated Convergence Theorem.md * PUSH ATTACHMENT : mt-07.png * PUSH NOTE : 08. Comparison with the Riemann Integral.md * PUSH ATTACHMENT : mt-08.png * PUSH NOTE : 05. Lebesgue Integration.md * PUSH ATTACHMENT : mt-05.png * PUSH NOTE : 03. Measure Spaces.md * PUSH ATTACHMENT : mt-03.png * PUSH NOTE : 09. Lp Functions.md * PUSH ATTACHMENT : mt-09.png * PUSH NOTE : 06. Convergence Theorems.md * PUSH ATTACHMENT : mt-06.png * PUSH NOTE : 02. Construction of Measure.md * PUSH ATTACHMENT : mt-02.png * PUSH NOTE : 01. Algebra of Sets and Set Functions.md * PUSH ATTACHMENT : mt-01.png * PUSH NOTE : 블로그 이주 이야기.md * PUSH ATTACHMENT : blog-logo.png * PUSH ATTACHMENT : github-publisher.png * PUSH NOTE : 05. Services - Enabling Clients to Discover and Talk to Pods.md * PUSH ATTACHMENT : k8s-05.jpeg * PUSH NOTE : 18. Extending Kubernetes.md * PUSH ATTACHMENT : k8s-18.jpeg * PUSH NOTE : 11. Understanding Kubernetes Internals.md * PUSH ATTACHMENT : k8s-11.jpeg * PUSH NOTE : 04. Replication and Other Controllers - Deploying Managed Pods.md * PUSH ATTACHMENT : k8s-04.jpeg * PUSH NOTE : 10. StatefulSets - Deploying Replicated Stateful Applications.md * PUSH ATTACHMENT : k8s-10.jpeg * PUSH NOTE : 02. First Steps with Docker and Kubernetes.md * PUSH ATTACHMENT : k8s-02.jpeg * PUSH NOTE : 06. Volumes - Attaching Disk Storage to Containers.md * PUSH ATTACHMENT : k8s-06.jpeg * PUSH NOTE : 12. Securing the Kubernetes API Server.md * PUSH ATTACHMENT : k8s-12.jpeg * PUSH NOTE : 07. ConfigMaps and Secrets - Configuring Applications.md * PUSH ATTACHMENT : k8s-07.jpeg * PUSH NOTE : 13. Securing Cluster Nodes and the Network.md * PUSH ATTACHMENT : k8s-13.jpeg * PUSH NOTE : 09. Deployments - Updating Applications Declaratively.md * PUSH ATTACHMENT : k8s-09.jpeg * PUSH NOTE : 17. Best Practices for Developing Apps.md * PUSH ATTACHMENT : k8s-17.jpeg * PUSH NOTE : 16. Advanced Scheduling.md * PUSH ATTACHMENT : k8s-16.jpeg * PUSH NOTE : 08. Accessing Pod Metadata and Other Resources from Applications.md * PUSH ATTACHMENT : k8s-08.jpeg * PUSH NOTE : 15. Automatic Scaling of Pods and Cluster Nodes.md * PUSH ATTACHMENT : k8s-15.jpeg * PUSH NOTE : 01. Introducing Kubernetes.md * PUSH ATTACHMENT : k8s-01.jpeg * PUSH NOTE : 03. Pods - Running Containers in Kubernetes.md * PUSH ATTACHMENT : k8s-03.jpeg * PUSH NOTE : 14. Managing Pods' Computational Resources.md * PUSH ATTACHMENT : k8s-14.jpeg * [PUBLISHER] upload files #71 * PUSH NOTE : test-document.md * PUSH NOTE : test-document.md * PUSH ATTACHMENT : test-image.png * DELETE FILE : assets/img/posts/test/test-image.png * [PUBLISHER] upload files #72 * PUSH NOTE : test-document.md * PUSH ATTACHMENT : test-image.png * DELETE FILE : assets/img/posts/test/test-image.png * [PUBLISHER] upload files #73 * PUSH NOTE : test-document.md * PUSH ATTACHMENT : test-image.png * chore: remove test files * [PUBLISHER] upload files #74 * PUSH NOTE : 01. Algebra of Sets and Set Functions.md * PUSH ATTACHMENT : mt-01.png * DELETE FILE : assets/img/posts/Mathematics/Measure Theory/mt-01.png * [PUBLISHER] upload files #76 * PUSH NOTE : 01. Algebra of Sets and Set Functions.md * PUSH ATTACHMENT : mt-01.png * [PUBLISHER] upload files #77 * PUSH NOTE : 09. Lp Functions.md * PUSH ATTACHMENT : mt-09.png * PUSH NOTE : 08. Comparison with the Riemann Integral.md * PUSH ATTACHMENT : mt-08.png * PUSH NOTE : 07. Dominated Convergence Theorem.md * PUSH ATTACHMENT : mt-07.png * PUSH NOTE : 06. Convergence Theorems.md * PUSH ATTACHMENT : mt-06.png * PUSH NOTE : 05. Lebesgue Integration.md * PUSH ATTACHMENT : mt-05.png * PUSH NOTE : 04. Measurable Functions.md * PUSH ATTACHMENT : mt-04.png * PUSH NOTE : 03. Measure Spaces.md * PUSH ATTACHMENT : mt-03.png * PUSH NOTE : 01. Algebra of Sets and Set Functions.md * PUSH ATTACHMENT : mt-01.png * chore: remove images * [PUBLISHER] upload files #78 * PUSH NOTE : 09. Lp Functions.md * PUSH ATTACHMENT : mt-09.png * PUSH NOTE : 08. Comparison with the Riemann Integral.md * PUSH ATTACHMENT : mt-08.png * PUSH NOTE : 07. Dominated Convergence Theorem.md * PUSH ATTACHMENT : mt-07.png * PUSH NOTE : 06. Convergence Theorems.md * PUSH ATTACHMENT : mt-06.png * PUSH NOTE : 05. Lebesgue Integration.md * PUSH ATTACHMENT : mt-05.png * PUSH NOTE : 04. Measurable Functions.md * PUSH ATTACHMENT : mt-04.png * PUSH NOTE : 03. Measure Spaces.md * PUSH ATTACHMENT : mt-03.png * PUSH NOTE : 01. Algebra of Sets and Set Functions.md * PUSH ATTACHMENT : mt-01.png * PUSH NOTE : 18. Extending Kubernetes.md * PUSH ATTACHMENT : k8s-18.jpeg * PUSH NOTE : 17. Best Practices for Developing Apps.md * PUSH ATTACHMENT : k8s-17.jpeg * PUSH NOTE : 16. Advanced Scheduling.md * PUSH ATTACHMENT : k8s-16.jpeg * PUSH NOTE : 15. Automatic Scaling of Pods and Cluster Nodes.md * PUSH ATTACHMENT : k8s-15.jpeg * PUSH NOTE : 14. Managing Pods' Computational Resources.md * PUSH ATTACHMENT : k8s-14.jpeg * PUSH NOTE : 13. Securing Cluster Nodes and the Network.md * PUSH ATTACHMENT : k8s-13.jpeg * PUSH NOTE : 12. Securing the Kubernetes API Server.md * PUSH ATTACHMENT : k8s-12.jpeg * PUSH NOTE : 11. Understanding Kubernetes Internals.md * PUSH ATTACHMENT : k8s-11.jpeg * PUSH NOTE : 10. StatefulSets - Deploying Replicated Stateful Applications.md * PUSH ATTACHMENT : k8s-10.jpeg * PUSH NOTE : 09. Deployments - Updating Applications Declaratively.md * PUSH ATTACHMENT : k8s-09.jpeg * PUSH NOTE : 08. Accessing Pod Metadata and Other Resources from Applications.md * PUSH ATTACHMENT : k8s-08.jpeg * PUSH NOTE : 07. ConfigMaps and Secrets - Configuring Applications.md * PUSH ATTACHMENT : k8s-07.jpeg * PUSH NOTE : 06. Volumes - Attaching Disk Storage to Containers.md * PUSH ATTACHMENT : k8s-06.jpeg * PUSH NOTE : 05. Services - Enabling Clients to Discover and Talk to Pods.md * PUSH ATTACHMENT : k8s-05.jpeg * PUSH NOTE : 04. Replication and Other Controllers - Deploying Managed Pods.md * PUSH ATTACHMENT : k8s-04.jpeg * PUSH NOTE : 03. Pods - Running Containers in Kubernetes.md * PUSH ATTACHMENT : k8s-03.jpeg * PUSH NOTE : 02. First Steps with Docker and Kubernetes.md * PUSH ATTACHMENT : k8s-02.jpeg * PUSH NOTE : 01. Introducing Kubernetes.md * PUSH ATTACHMENT : k8s-01.jpeg * [PUBLISHER] upload files #79 * PUSH NOTE : 02. Construction of Measure.md * PUSH ATTACHMENT : mt-02.png
This commit is contained in:
@@ -7,14 +7,17 @@ title: "03. Pods: Running Containers in Kubernetes"
|
||||
date: "2021-03-17"
|
||||
github_title: "2021-03-17-03-pods"
|
||||
image:
|
||||
path: /assets/img/posts/k8s-03.jpeg
|
||||
path: /assets/img/posts/Development/Kubernetes/k8s-03.jpeg
|
||||
attachment:
|
||||
folder: assets/img/posts/Development/Kubernetes
|
||||
---
|
||||
|
||||
 _A container shouldn’t run multiple processes. (출처: https://livebook.manning.com/book/kubernetes-in-action/chapter-3)_
|
||||
 _A container shouldn’t run multiple processes. (출처: https://livebook.manning.com/book/kubernetes-in-action/chapter-3)_
|
||||
|
||||
다양한 쿠버네티스 오브젝트 (resources) 를 살펴보는 단원이다. 가장 기본이 되는 Pod 부터 시작한다. 이외의 모든 것들은 pod 를 관리하거나, pod 를 노출하거나, pod 에 의해 사용된다.
|
||||
|
||||
## 3.1 Introducing Pods
|
||||
|
||||
---
|
||||
|
||||
**Pod**는 컨테이너의 모임이며, 쿠버네티스의 기본적인 building block 이 된다. 하나 기억할 사실은, 하나의 pod 는 하나의 노드 위에 있게 되므로, pod 내부의 모든 컨테이너는 같은 노드에 존재하게 된다.
|
||||
@@ -35,7 +38,7 @@ image:
|
||||
|
||||
#### Pod 내의 partial isolation
|
||||
|
||||
Pod 를 사용하면 서로 연관된 프로세스를 실행하는 컨테이너들을 함께 실행할 수 있게 되며, 마치 하나의 머신/컨테이너 안에서 실행되는 것처럼 환경을 제공할 수 있게 된다.
|
||||
Pod 를 사용하면 서로 연관된 프로세스를 실행하는 컨테이너들을 함께 실행할 수 있게 되며, 마치 하나의 머신/컨테이너 안에서 실행되는 것처럼 환경을 제공할 수 있게 된다.
|
||||
|
||||
물론 각 컨테이너도 서로 어느 정도 독립적으로 동작하지만, 같은 pod 내의 container 는 같은 namespace 를 가지고 있고, 또 쿠버네티스 *volume* 을 사용해서 컨테이너들 끼리 파일을 공유하도록 설정할 수도 있다.
|
||||
|
||||
@@ -88,6 +91,7 @@ Pod 내에 여러 컨테이너를 넣는다면 그에 합당한 이유가 있어
|
||||
기본적으로는 pod 를 분리하는 쪽으로 결정하는 것이 바람직하다. 특별한 이유가 없다면!
|
||||
|
||||
## 3.2 YAML/JSON 파일로부터 pod 만들기
|
||||
|
||||
---
|
||||
|
||||
보통 pod 를 비롯한 쿠버네티스 리소스를 만들 때는 YAML/JSON 파일을 Kubernetes API 에 POST 해서 만든다.
|
||||
@@ -144,7 +148,6 @@ $ kubectl create -f <YAML_FILE>
|
||||
|
||||
생성 후 잘 돌아가는지 확인하려면 `kubectl get pods` 로 확인하면 된다.
|
||||
|
||||
|
||||
### 3.2.4 로그 확인하기
|
||||
|
||||
컨테이너 내의 앱은 파일에 로그를 떨구기보다는 보통은 stdout, stderr 로 로그를 내보낸다. 이렇게 하면 다양한 컨테이너들에서 다양한 애플리케이션을 실행할 때 통일된 방법으로 로그를 확인할 수 있다.
|
||||
@@ -179,6 +182,7 @@ $ kubectl port-forward <POD_NAME> <LOCAL_PORT>:<POD_PORT>
|
||||
- 로컬의 포트를 pod 의 포트로 포워딩해준다.
|
||||
|
||||
## 3.3 레이블을 이용한 pod 구성
|
||||
|
||||
---
|
||||
|
||||
Pod 의 개수가 많아질수록 관리가 힘들어지고, 한 서비스에 pod 가 여러 개 존재하게 되므로 (복제본) pod 를 묶어서 관리할 방법이 필요하다. 쿠버네티스는 pod 뿐만 아니라 다른 object 들도 **레이블**을 이용해서 관리한다.
|
||||
@@ -218,6 +222,7 @@ $ kubectl label po <POD_NAME> <LABEL_KEY>=<LABEL_VALUE>
|
||||
- 해당 key 가 존재하지 않아야 한다. 만약 덮어쓰고 싶다면 `--overwrite` 를 붙여야 한다.
|
||||
|
||||
## 3.4 Label selector 를 사용하여 pod 목록 출력하기
|
||||
|
||||
---
|
||||
|
||||
레이블에 따라 검색하는 기능을 제공한다.
|
||||
@@ -242,7 +247,7 @@ $ kubectl get po -l [CONDITION]
|
||||
- `'!<KEY>'` 와 같이 `'...'` 로 감싸주어야 shell 이 `!` 를 계산하지 않는다.
|
||||
- `<KEY>!=<VALUE>`: 해당 key 를 갖지만 value 가 아닌 pod 출력
|
||||
- `<KEY> in (<VALUE_1>, <VALUE_2>, ...)`: key 의 값이 value 목록에 포함되는 pod 를 출력
|
||||
- `<KEY> notin (<VALUE_1>, <VALUE_2>, ...)`: key 의 값이 value 목록에 포함되지 않는 pod 를 출력
|
||||
- `<KEY> notin (<VALUE_1>, <VALUE_2>, ...)`: key 의 값이 value 목록에 포함되지 않는 pod 를 출력
|
||||
|
||||
### 3.4.2 Label selector 에서 여러 조건을 이용하기
|
||||
|
||||
@@ -251,6 +256,7 @@ $ kubectl get po -l [CONDITION]
|
||||
이 section 에서는 pod 목록을 가져오는 용도로 레이블을 사용했지만, 여러 개의 pod 를 한꺼번에 삭제할 때도 사용할 수 있는 등 특정 명령을 pod 의 부분집합에 적용할 수 있게 된다.
|
||||
|
||||
## 3.5 Pod 스케쥴링 제한
|
||||
|
||||
---
|
||||
|
||||
일반적으로는 worker node 들에 pod 들이 적당히 배치되어 돌아간다. 그리고 밖에서 볼 때는 어떤 pod 가 어느 노드에 있는지는 보통 상관 없다. 하지만 pod 가 특정 하드웨어가 필요한 경우에는 pod 가 어느 노드로 스케쥴링 되어야 하는지 제한할 필요가 있다. (GPU가 필요하다던가...)
|
||||
@@ -290,6 +296,7 @@ spec:
|
||||
개별적인 하나의 노드가 아니라 node label selector 를 이용해 특정 성질을 가진 노드의 집합을 고려하는 것이 쿠버네티스의 사고방식이다.
|
||||
|
||||
## 3.6 Annotating Pods
|
||||
|
||||
---
|
||||
|
||||
쿠버네티스 리소스들은 레이블 뿐만 아니라 어노테이션도 가질 수 있는데, 얘도 key-value pair 이다. 레이블과 비슷하지만 selector 가 따로 존재하지는 않아서 이를 이용해 리소스를 분류할 수는 없다.
|
||||
@@ -311,6 +318,7 @@ $ kubectl annotate pod <POD_NAME> <KEY>=<VALUE>
|
||||
`kubectl describe pod <POD_NAME>` 으로 추가된 어노테이션을 확인할 수 있다.
|
||||
|
||||
## 3.7 Namespace 를 이용한 리소스 그룹화
|
||||
|
||||
---
|
||||
|
||||
`kubectl get pods` 를 했을 때, 매번 레이블을 이용해서 필터링하지 않으면 모든 pod 가 다 목록에 출력된다. 또한 레이블은 한 집합 내에서 부분집합으로 구분하기 위해서 사용했다. 부분집합들은 서로 겹치기도 한다.
|
||||
@@ -327,7 +335,7 @@ Namespace 를 사용하면 많은 컴포넌트를 가진 복잡한 시스템을
|
||||
|
||||
더불어 namespace 에 따라 접근 제한을 할 수 있는데 12~14장에서 더 알아본다.
|
||||
|
||||
거의 대부분의 리소스들이 namespace 로 관리할 수 있지만, 몇 개는 그렇지 않으며 대표적으로 노드의 경우 namespace 에 구애받지 않는다.
|
||||
거의 대부분의 리소스들이 namespace 로 관리할 수 있지만, 몇 개는 그렇지 않으며 대표적으로 노드의 경우 namespace 에 구애받지 않는다.
|
||||
|
||||
(아마 다른 cluster 레벨의 리소스도 구애받지 않을 것 같다)
|
||||
|
||||
@@ -378,6 +386,7 @@ Namespace 를 사용하면 object 들을 분리하여 그룹화 한 후, 특정
|
||||
예를 들어 두 pod 가 다른 namespace 에 있다고 해서 반드시 통신이 불가능한 것은 아니다.
|
||||
|
||||
## 3.8 Pod 중지 및 삭제
|
||||
|
||||
---
|
||||
|
||||
### 3.8.1 이름으로 삭제
|
||||
@@ -422,19 +431,22 @@ $ kubectl delete all --all
|
||||
|
||||
### `kubectl apply` 와 `kubectl create` 의 차이점
|
||||
|
||||
- Imperative vs Declarative
|
||||
- Imperative vs Declarative
|
||||
- https://kubernetes.io/docs/concepts/overview/working-with-objects/object-management/
|
||||
- https://stackoverflow.com/questions/47369351/kubectl-apply-vs-kubectl-create
|
||||
|
||||
### Kubernetes object 와 Kubernetes resource 의 차이점
|
||||
|
||||
- https://stackoverflow.com/a/59952807/7788730
|
||||
|
||||
### Namespace 의 올바른 사용법
|
||||
|
||||
### JSON vs YAML
|
||||
|
||||
- https://stackoverflow.com/questions/1726802/what-is-the-difference-between-yaml-and-json
|
||||
|
||||
### Label 과 namespace 의 차이
|
||||
|
||||
- Label selector 를 이용하면 namespace 처럼 분리가 가능
|
||||
- 하지만 namespace 는 label 보다 상위 개념
|
||||
- Namespace 를 이용하면 resource quota 를 이용해서 하드웨어 리소스 분배가 가능
|
||||
@@ -443,12 +455,16 @@ $ kubectl delete all --all
|
||||
### Annotation 의 올바른 사용법
|
||||
|
||||
### Linux 에 존재하는 namespace 들의 종류
|
||||
|
||||
- UTS namespace 란?
|
||||
|
||||
|
||||
|
||||
### Pod 에 각각 IP 주소가 부여되는 원리
|
||||
|
||||
- https://ronaknathani.com/blog/2020/08/how-a-kubernetes-pod-gets-an-ip-address/
|
||||
|
||||
### MSA vs Microservice 간 통신으로 인한 오버헤드
|
||||
|
||||
- MSA 를 사용하면
|
||||
- 책임이 분배되어 프로젝트 관리가 용이하고
|
||||
- 개발하기 편하고 확장이 쉬워짐 (microservice 별로 확장)
|
||||
|
||||
Reference in New Issue
Block a user