我搜索了文档,但是我无法确定是否可以在没有Scheduler的情况下在Kubernetes中运行pod。如果有人可以提供帮助,那将会很有帮助
更新: 我可以将标签附加到节点,并让pod粘贴到该标签,但这将涉及通过调度程序。有没有daemonset的方法,并且不使用调度程序。
答案 0 :(得分:6)
调度程序只在pod上设置spec.nodeName字段。如果您知道要运行pod的节点,则可以自己将其设置为节点名称,但是您负责确保节点有足够的资源来运行pod(足够的内存,可用的主机端口等等...所有内容调度程序通常负责在将pod分配给节点之前进行检查。
答案 1 :(得分:4)
您需要static pods
静态pod由特定节点上的kubelet守护程序直接管理,无需API服务器观察它。它没有关联任何复制控制器,kubelet守护进程本身会监视它并在崩溃时重新启动它。
答案 2 :(得分:1)
您可以简单地在容器定义中添加一个nodeName
属性,它们通常由调度程序进行字段设置,因此这不是必填字段。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
nodeName: node01
如果吊舱已经创建并且处于挂起状态,则必须使用新字段重新创建吊舱,否则不允许使用nodeName att进行编辑。
答案 3 :(得分:0)
您可以简单地将 nodeName 属性添加到 pod 定义
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName: controlplane
containers:
- image: nginx
name: nginx
现在重要的一点 - 使用以下命令检查列出的节点,然后分配给其中之一:
kubectl get nodes
答案 4 :(得分:0)
此处给出的所有答案都需要运行调度程序。
我认为您想要做的是创建 pod 的清单文件并将其放在相关节点的默认清单目录中。
默认目录为 /etc/kubernetes/manifests/
Pod 将自动创建,如果您想删除它,只需删除清单文件即可。