如何在主节点 运行 apiserver 上部署 pod

How to deploy a pod on a master node running apiserver

我有一个 pod,它本质上是一个 api 服务器的插件,它几乎没有工作负载 pod,它的任务是将 watches 外部化到另一个 pubsub 设施(就像一个 api 的桥梁一样给另一个) 为了减少实际网络连接的延迟和数量,我认为始终将其 1-replica 部署部署到同一台机器上可能是有意义的,即 运行 api 服务器本身。原来是主节点。 Pod 几乎不使用 ram 和 CPU,没有任何端点的纯流式 pod - 从 k8s 手表到其他东西的桥梁。我该怎么做?

如果你想在master节点上部署一个pod。
只是 运行:

kubectl taint nodes --all node-role.kubernetes.io/master-

如果您的目的只是运行主节点上的特定 pod 并且打开主节点,您应该实施tolerations并且nodeSelector。下面的示例将始终 运行 主节点上的 busybox:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  labels:
    run: busybox
spec:
  restartPolicy: Never
  nodeSelector:
    <a unique label on your master node>: <the label value>
  tolerations:
  - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule
  containers:
  - name: busybox
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["ash","-c","sleep 3600"]