Static Pods

参考 https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/#pods-created-via-http

Scheduler 负责在给定的工作节点上调度 pod。一旦调度程序决定了节点,API 服务器就会与 kubelet 进行通信,而 kubelet 则负责运行 pod。

但是:

  • 可以直接通知 kubelet 它需要运行特定的 pod。
  • 可以通过多种方式告诉 kubelet 运行 pod。
  • 不使用Scheduler直接创建的 Pod 也称为Static Pod

实践

使用kubeadm搭建了一个k8s集群,登录到master节点。

进入/etc/kubernetes/manifests目录下,在这个目录下编写的yaml文件都会以static pod形式运行。

运行:

kubectl run --restart=Never --image=busybox static-busybox --dry-run -o yaml --command -- sleep 1000 >busybox.yaml

生成一个busybox定义文件:

image-20200315104702865

此时执行kubectl get pods, 发现master节点上已经自动创建好了这个pod:

image-20200315104809053

总结

static pod可以绕过scheduler的调度机制,直接强行在某个节点上运行。