ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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될 경우에도 마찬가지로 포드가 제거된다.  

     

    각 노드에 포드를 하나씩 생성하기 때문에 모니터링이나 로그 컬렉터, 네트워킹에 데몬셋이 적합하다.

     

    다음은 네트워킹을 위해 daemonset을 사용하는 경우

     

     

     

     

    3. Static pod

     

    static pod는 kube-api server의 개입 없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리되며

    항상 특정 노드의 kubelet에 매여 있다.

     

    static pod는 master node에 생성하거나 worker 노드에서 pod definition file을 읽어서 pod를 생성하는데

     

    먼저 master node에서 static pod를 생성하는 경우,

    control plane 노드의 /etc/kubernetes/manifests에 static pod definition들을 정의함으로써 pod를 생성할 수 있다.

    지울 때도 마찬가지다. 

     

     

    생성된 static pod들은 다음과 같이 이름 뒤에 위치한 노드들이 붙는다.

     

     

    work node의 경우에도 kubelet은 pod definition file을 읽어서 pod를 생성하며

    다음 과정을 통해서 static pod를 지우고 생성할 수 있다.  

     

    (참고로 kube-api-server가 문제가 있을 때

    static pod는 kubectl 써서 포드를 확인할 수 없으므로 docker ps를 통해서 확인해야 한다)

     

    우선 먼저 알아야 할 것은 node01에 있는 static pod를 지우기 위해서는

    static pod가 위치한 노드에서 지워야 한다.  

     

    즉 control plane 노드에서 지우는 것은 의미 없다.

     

     

    node01에 있는 static pod를 지우기 위해서 node01로 이동한 후,

    config.yaml 파일에서 staticpod가 위치한 경로를 확인한다. 

     

     

    경로로 이동하여 greenbox.yaml 파일을 지운 후, control plane node로 돌아와 static pod가 지워졌는지 확인한다. 

     

     

    반응형

    댓글

Designed by Tistory.