24.2. 데몬 세트 생성
daemonets를 생성할 때 nodeSelector
필드는 daemonset에서 복제본을 배포해야 하는 노드를 나타내는 데 사용됩니다.
daemonset yaml 파일을 정의합니다.
apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: hello-daemonset spec: selector: matchLabels: name: hello-daemonset 1 template: metadata: labels: name: hello-daemonset 2 spec: nodeSelector: 3 type: infra containers: - image: openshift/hello-openshift imagePullPolicy: Always name: registry ports: - containerPort: 80 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log serviceAccount: default terminationGracePeriodSeconds: 10
daemonset 오브젝트를 생성합니다.
oc create -f daemonset.yaml
Pod가 생성되었고 각 노드에 Pod 복제본이 있는지 확인하려면 다음을 수행합니다.
daemonset Pod를 찾습니다.
$ oc get pods hello-daemonset-cx6md 1/1 Running 0 2m hello-daemonset-e3md9 1/1 Running 0 2m
Pod를 보고 Pod가 노드에 배치되었는지 확인합니다.
$ oc describe pod/hello-daemonset-cx6md|grep Node Node: openshift-node01.hostname.com/10.14.20.134 $ oc describe pod/hello-daemonset-e3md9|grep Node Node: openshift-node02.hostname.com/10.14.20.137
중요
- DaemonSet의 Pod 템플릿을 업데이트하면 기존 Pod 복제본에는 영향을 미치지 않습니다.
- DaemonSet을 삭제한 다음 다른 템플릿과 동일한 라벨 선택기를 사용하여 새 DaemonSet을 생성하면 기존 Pod 복제본을 일치하는 라벨이 있는 것으로 인식하므로 Pod 템플릿의 불일치에도 불구하고 기존 Pod 복제본을 업데이트하거나 새 복제본을 생성하지 않습니다.
- 노드 레이블을 변경하면 DaemonSet은 새 라벨과 일치하는 노드에 Pod를 추가하고 새 라벨과 일치하지 않는 노드에서 Pod를 삭제합니다.
DaemonSet을 업데이트하려면 이전 복제본 또는 노드를 삭제하여 새 Pod 복제본을 강제로 생성합니다.