在Kubernetes中运行无计划程序的POD



我搜索了该文档,但是我无法找到如果没有调度程序,我是否可以在Kubernetes中运行POD。如果有人可以帮助任何指针,那将是有帮助的

更新:我可以将标签附加到节点上,并让Pod贴在该标签上,但这将涉及浏览调度程序。是否没有任何方法,没有Daemonset,并且不使用调度程序。

调度程序刚刚在POD上设置了Spec.NodeName字段。如果您知道要运行POD的节点,则可以将其设置为一个节点名称,尽管然后您负责确保节点具有足够的资源来运行POD(足够的内存,免费的主机端口,等等……所有事物调度程序通常负责在将豆荚分配给节点之前检查)

您想要静态豆荚

静态豆荚是在特定节点上直接通过kubelet守护程序管理的,而无需观察API服务器。它没有关联任何复制控制器,库贝特守护程序本身会观看并在崩溃时重新启动。

您可以简单地将nodeName属性添加到POD定义中,这些属性通常由调度程序列出,这不是强制性字段。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  -  image: nginx
     name: nginx
  nodeName: node01

如果创建了POD,并且处于待处理状态,则必须使用新字段重新创建它,则不允许使用NodeName ATT进行编辑。

此处给出的所有答案都需要调度程序运行。

我认为您想做的是创建POD的清单文件,然后将其放在所讨论节点的默认清单目录中。

默认目录IS/etc/kubernetes/ustests/

将自动创建POD,如果您想删除它,只需删除清单文件。

您可以简单地将 nodeName 属性添加到POD定义

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  nodeName: controlplane
  containers:
  -  image: nginx
     name: nginx

现在重要点 - 检查使用以下命令列出的节点,然后分配给其中之一:

kubectl get nodes

您可以在实验室中非常容易地证明这一点

kubectl run static-pod --image=nginx --dry-run=client -o yaml > static-pod.yaml
sudo mv /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes/
# make sure scheduler is gone
sudo crictl ps | grep -i sched 
sudo cp static-pod.yaml /etc/kubernetes/manifests/
kubectl get pods static-pod-cp1 # my controlpoint is called cp1
# Put the scheduler back 
sudo mv /etc/kubernetes/kube-scheduler.yaml /etc/kubernetes/manifests/

由于POD正在运行,并且您没有调度程序,因此静态豆荚不使用调度程序。

最新更新