在Kubernetes

时间:2017-09-24 13:30:16

标签: kubernetes

我搜索了文档,但是我无法确定是否可以在没有Scheduler的情况下在Kubernetes中运行pod。如果有人可以提供帮助,那将会很有帮助

更新: 我可以将标签附加到节点,并让pod粘贴到该标签,但这将涉及通过调度程序。有没有daemonset的方法,并且不使用调度程序。

5 个答案:

答案 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 将自动创建,如果您想删除它,只需删除清单文件即可。