25.2. 创建守护进程集
在创建 daemonset 时,请使用 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 模板中存在不匹配。
- 如果您更改了节点标签,DaemonSet 会将 pod 添加到与新标签匹配的节点,并从不匹配新标签的节点中删除 pod。
要更新 DaemonSet,请通过删除旧副本或节点来强制创建新的 pod 副本。