我正在我的命名空间下部署我的服务。我们有一个工作节点场,我的服务将只使用其节点的一小部分。
我想部署cAdvisor的DaemontSet,但我只希望它们在与我的命名空间无关的节点中运行。如果可能,如何做到这一点?
谢谢!
ScheduleDaemonSetPods
是一个kubernetes功能,它允许您使用默认调度程序而不是DaemonSet控制器来调度DaemonSets,方法是将NodeAffinity
项而不是.spec.nodeName
项添加到DaemonSetpod中。Kubernetes文档
例如,下面的k8s清单将在具有type=target-host-name
:的节点上创建Pods
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: testdaemon
spec:
template:
metadata:
labels:
app: testdaemon
annotations:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: In
values:
- target-host-name
containers:
- name: testdaemon
image: nginx
DaemonSet每个节点运行一个pod。不能绕过节点。