역할
-
K8S command와 argsK8S 2021. 6. 15. 19:11
Dockerfile의 CMD, ENTRYPOINT와 K8S의 command, args를 비교함으로써 yaml 파일에서 command와 args의 역할을 알아보자. Dockerfile의 CMD와 ENTRYPOINT에 대해서 잘 모른다면 다음을 참고 Dockerfile CMD vs ENTRYPOINT Dockerfile을 이용해서 ubnutu image를 빌드하고 컨테이너가 시작되자마자 sleep 5라는 커맨드를 실행하고 싶다. 이때는 dockerfile에서 CMD sleep 5 라고 지정해주면 컨테이너가 시작하자마자 sleep 5가 실행된 seungjuitmemo.tistory.com 위 도커파일을 통해서 만들어진 ubuntu-sleeper 이미지는 컨테이너가 실행되자 마자 sleep 5 커맨드가 실행된다..
-
K8S Scheduling 정리2 (Resource, Daemonsets, Static pod)K8S 2021. 6. 13. 18:02
1. 리소스 관리 Docker container에서의 컨테이너 리소스 제한은 없다. 즉 계속 확장된다. 하지만 쿠버네티스에서 리소스 사용량을 제한하며 default resource request는 container당 0.5vcpu와 256Mi, default resource limit는 container당 1vcpu와 512Mi로 생성된다. 물론 default이므로 리소스 사용 제한을 다음과 같이 다르게 변경해 줄수도 있다. 2. Daemonsets 클러스터 각 노드에 포드를 하나씩 생성하는 오브젝트다. 대표적인 데몬셋으로 kube-proxy가 있다. 클러스터에 노드가 추가되면 데몬셋 포드 또한 추가되며 노드가 detach될 경우에도 마찬가지로 포드가 제거된다. 각 노드에 포드를 하나씩 생성하기 때문에 ..
-
K8S 아키텍처 정리 (Kube-scheduler, Kubelet, Kube-proxy)K8S 2021. 6. 2. 22:06
1. Kube-Scheduler 스케줄러는 어떤 포드가 어떤 노드로 갈지를 결정하는 등 스케줄을 짠다. 하지만 스케줄을 짤 뿐, 실제로 노드 위에 포드를 놓지는 않는다. (노드 위에 포드를 할당하는 것은 Kubelet의 역할) 스케줄러는 오직 포드를 어떤 노드로 옮길 것인지만 결정한다. 그렇다면 스케줄러는 어떻게 적당한 노드를 선택하고 포드를 옮길까? 스케줄러는 먼저 포드들을 관찰하면서 포드가 할당되기 좋은 최적의 노드를 결정한다. 예를 들어 다음과 같이 CPU 10을 필요로 하는 포드를 CPU 4, CPU 4, CPU 12, CPU 16를 리소스를 갖는 노드에 배포한다고 해보자. 이 때 다음과 같은 과정을 통해 최적의 노드를 결정한다. 1) Filter Nodes 해당 포드에 적합하지 않는 노드는 먼저..