【问题标题】:kube-controller-manager & kube-apiserver questions for a kubeadm created clusterkubeadm 创建集群的 kube-controller-manager 和 kube-apiserver 问题
【发布时间】:2018-12-21 15:03:49
【问题描述】:

我使用 kubeadm 创建了一个 k8s 集群,并且有几个关于 kube-controller-manager 和 kuber-apiserver 组件的问题。

  • 使用 kubeadm 创建时,这些组件作为 pod 启动,而不是 systemd 守护进程。如果我杀死任何这些 pod,它们就会重新启动,但谁在重新启动它们?我没有看到任何副本控制器或部署负责这样做。

  • 更新配置的“正确”方式是什么?想象一下,我想更改 api 服务器的授权模式。在主节点中,我们可以找到一个带有kube-apiserver.yaml 文件的/etc/kubernetes/manifests 文件夹。我们是否应该更改此文件并杀死 pod 以便它使用新配置重新启动?

【问题讨论】:

    标签: kubernetes kubeadm


    【解决方案1】:

    您描述的功能称为静态 Pod。这是documentation 的一部分,描述了他们的行为。

    静态 Pod 由特定节点上的 kubelet 守护进程直接管理, 没有 API 服务器观察它。它没有关联的 复制控制器,并且 kubelet 守护进程本身会监视它并 崩溃时重新启动它。没有健康检查。静态 pod 是 始终绑定到一个 kubelet 守护进程并始终在同一节点上运行 用它。

    Kubelet 自动尝试在 Kubernetes 上创建一个镜像 pod 每个静态 pod 的 API 服务器。这意味着豆荚是可见的 在 API 服务器上,但无法从那里控制。

    配置文件只是 json 中的标准 pod 定义或 yaml 格式在特定目录中。使用 kubelet --pod-manifest-path=<the directory> 启动 kubelet 守护进程,它定期扫描目录并创建/删除静态 pod yaml/json 文件在那里出现/消失。请注意,kubelet 将忽略 扫描指定目录时以点开头的文件。

    当 kubelet 启动时,它会自动启动所有定义在 在--pod-manifest-path=--manifest-url= 中指定的目录 参数,即我们的静态网络。

    通常,这些清单存储在目录/etc/kubernetes/manifests
    如果您对这些清单中的任何一个进行任何更改,则该资源将被调整,就像您运行 kubectl apply -f something.yaml 命令一样。

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 1970-01-01
      • 2019-09-30
      • 2019-08-11
      • 1970-01-01
      • 2017-04-19
      • 2020-06-16
      • 2019-05-08
      • 2018-07-26
      相关资源
      最近更新 更多