IT/Kubernetes21 [Kubernetes] Internals - Pause Container 이번 포스팅에서는 Pod 내부의 Pause Container에 대해 알아보려고 한다. 그림 1. Node Overview 그림 1을 살펴보면 Node에 여러 구성 요소들이 존재하는 것을 확인 할 수 있다. 특히 그림 1에서 kubelet과 Docker를 주목해보자.Node가 생성될 때 기본 구성처럼 kubelet이 만들어지는데 이는 kubelet이 Node에서 Pods 및 Containers 관리를 하기 때문이다. 추가로 볼 수 있는 Docker는 k8s에서 기본적으로 사용하는 Container Runtime이다. (rkt 와 같은 다른 Container Runtime이 사용될 수 있다.) 그럼 여기서는 Docker를 기본 Container Runtime으로 가정하고 Pods가 실행할 때 내부에서 어떤 .. 2019. 5. 16. [Kubernetes] Internals - Init Pod 이번 포스팅에서는 Pod가 초기화 되는 시점에 발생하는 내부 작업에 대해 알아보려고 한다. ContainerContainer는 엄밀히 따지면 시스템 내부에서 동작하는 여타 Process와 다를게 없다. 그런데 Container로 따로 명명이 되는 이유는 다른 Process와 다르게 리눅스 커널에서 제공하는 namespace와 cgroups 기능을 사용하기 때문이다. 멀리 떠날 것 없이 주변에서 가장 많이 쓰이는 Container인 Docker만 봐도 Container를 구성하는데 namespace와 cgroups이 가장 핵심적인 기능이다.(리눅스의 LXC 이전까지만 해도 전가상화(Full Virtualization) 또는 반가상화(Para Virtualization)와 같은 VM 기술이 주를 이루었다.).. 2019. 5. 16. [Kubernetes] Namespace 이번 포스팅에서는 k8s의 namespace에 대해 알아보자. NamespaceNamespace는 k8s에서 사용하는 가상 클러스터이다. 즉, 리소스를 Namespace 단위로 분리하여 사용할 수 있게 한다.한 예로 여러 사용자들이 사용하는 환경에서 리소스의 Label만 가지고 구분하기가 힘들다. 더욱이 많은 사용자들이 사용하다보면 리소스에 Label에 겹칠 수가 있다. 그렇기 때문에 각각 고유한 Namespace로 구분하여 동일한 Label이라도 Namespace가 다르면 사용할 수 있다.이처럼 k8s는 Multi-tenant 환경에서 리소스를 적절히 분할하는데 큰 역할을 한다. (같은 이치로 복잡한 k8s 내부 사용 환경을 더 작게 분리한다.)(참고로 Versioning을 위해 Namespace를 구.. 2019. 5. 14. [Kubernetes] Networking - Pods 이번 포스팅에서는 Pod에서 발생하는 Networking에 대해 알아보려고 한다.그런데 k8s는 다양한 모델의 Network 방식을 지원한다. 각 모델 마다 특징이 존재하기 때문에 자세한 부분은 아래 URL을 참조하고 일반적인 Network 방식에 대해 알아 본다.(https://kubernetes.io/docs/concepts/cluster-administration/networking/) Inter Pod Networking 그림 1. Flat Network (No NAT) 일반적으로 Inter-Pod Network의 구성은 그림 1과 같다. NAT 없이 Pod와 Pod, Pod와 Node(Host)의 통신은 그림 1과 같이 구성되어 있다. (설명을 위해 Pod와 Pod 간의 통신으로 제한한다.)NA.. 2019. 4. 27. 이전 1 2 3 4 5 6 다음