DaemonSets - 왜, 언제, 어떻게


이유와 시기

kubernetes의 기본 배포 단위는 Pod이고 보장된 복제본 수를 가진 관리 객체는 Deployment입니다. 배치의 경우 포드가 착륙하는 노드는 스케줄링 정책에 따라 스케줄러에 의해 결정됩니다.

다음과 같은 경우 DaemonSet 사용
  • 각 노드(또는 식별된 노드 하위 집합)에서 애플리케이션의 포드 하나를 실행하려는 경우
  • 로드 밸런서를 통하지 않고 해당 포드의 주소를 직접 지정하려는 경우

  • 일반적인 사용 사례
  • Kubernetes 작업자 노드에서 에이전트 실행 - 에이전트 모니터링
  • 노드별로 수집기 실행 - 로그 수집기
  • 로드 분산을 위해 노드 방식 데몬 프로세스 실행 -




  • 어떻게

    창조

    cat /tmp/ds.yaml
    ---
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: fluentd-ds
      namespace: kube-system
    spec:
      selector:
        matchLabels:
          name: fluentd-ds
      template:
        metadata:
          labels:
            name: fluentd-ds
        spec:
          tolerations:
            # this toleration is to have the daemonset runnable on master nodes
            # remove it if your masters can't run pods
            - key: node-role.kubernetes.io/master
              effect: NoSchedule
          containers:
            - name: fluentd-ds
              image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
    
    ❯ kubectl create -f /tmp/ds.yaml
    daemonset.apps/fluentd-ds created
    
    ❯ kubectl get daemonsets.apps/fluentd-ds -n kube-system
    NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    fluentd-ds   4         4         4       4            4           <none>          116s
    
    ❯ kubectl get pods -n kube-system -o wide | grep fluentd-ds
    fluentd-ds-mm26b                                1/1     Running   0          2m45s   10.244.0.6   macbook-control-plane   <none>           <none>
    fluentd-ds-nx9hb                                1/1     Running   0          2m45s   10.244.3.4   macbook-worker2         <none>           <none>
    fluentd-ds-tfrvn                                1/1     Running   0          2m45s   10.244.2.3   macbook-worker          <none>           <none>
    fluentd-ds-vv5rx                                1/1     Running   0          2m45s   10.244.1.4   macbook-worker3         <none>           <none>
    
    


    의사소통
    모든 일반적인 서비스 모드 - ClusterIP, NodePort, LoadBalancer 및 Headless 서비스가 작동합니다(ClusterIP 및 LoadBalancer는 별로 의미가 없습니다). 일반적인 기준은 ports.hostPort를 사용한 다음 NodePort를 통해 매핑하고 <node-ip>:<node-port>를 통해 주소를 매핑하는 것입니다.

    ports:
    - containerPort: 24224
      hostPort: 24224
      name: "fluentd-port"
    





    더 많은 정보


  • 좋은 웹페이지 즐겨찾기