如何通过kubeadm

时间:2019-09-08 12:05:45

标签: kubernetes kubeadm

我对Kubernetes还是很陌生,他试图把头放在如何在已经运行的集群中管理ComponentConfig上。

例如: 最近,我在运行Ubuntu的测试环境中初始化了kubeadm集群。当我这样做时,我发现CoreDNS位于CrashLoopBackoff中,事实证明是这样的,因为Ubuntu配置为使用systemd-resolved,因此resolv.conf中配置了回送解析器。阅读coredns的文档后,我发现解决方案是通过命令行参数或在配置中更改kubelet的resolvConf参数。

那么如何在kubeadm管理的集群中正确地做到这一点?

阅读[文档中的本页] [1]时,我并没有真正的头绪,因为它似乎是为初始化新集群或加入新节点而设计的。

当然,在这种特殊情况下,我可以使用“ Kubeadm重置”并使用--config参数再次对其进行初始化,但这似乎不是运行集群的正确解决方案。

因此,在深入研究之后,我发现了一些信息:

  1. 我可以直接在节点上更改/var/lib/kubelet/kubeadm-flags.env,但是AFAICT仅对特定于节点的更改有意义。
  2. 在kube系统名称空间中有一个名为kubelet-config-1.14的ConfigMap。对于即将加入群集的节点来获得正确的配置,这似乎很有希望-但是更改CM是否会影响已经在运行的Kubelet?​​
  3. 我可以更改/var/lib/config/kubelet.yaml中正在运行的配置的编组版本,但AFAIU会被kubelet本身定期(?)或至少在kubeadm升级期间覆盖。
  4. 似乎有一个选项可以在node对象中指定一个configmap,以让kubelet从那里动态加载配置,但是鉴于已经存在一个configmap,更改它似乎更为明智。

似乎通过更改上述CM,随后运行kubeadm upgrade something并重新启动计算机的某种组合获得了成功(因为重新启动kubelet不能解决CoreDNS问题……但是也许我没耐心)。

所以我现在问:

  1. 有效有效且正在升级的kubelet配置(或我可能会通过kubeadm-config.yaml影响的任何其他配置)进行推荐的方式是什么? -safe适用于配置不是特定于节点的情况?
  2. 如果这涉及运行kubeadm ... config --config-如何提取现有的Kubeadm-config并将其反馈回kubeadm?

我对指向正确文档的指针感到非常满意,只是我自己没有找到正确的线索。

TIA

1 个答案:

答案 0 :(得分:0)

official documentation中对您要查找的内容进行了详细说明。

配置Kubelet的基本工作流程如下:

  • 写一个包含Kubelet配置的YAML或JSON配置文件。
  • 将此文件包装在ConfigMap中,然后将其保存到Kubernetes控制平面。 更新Kubelet的相应Node对象以使用此ConfigMap。

此外,从Kubernetes v1.11开始,默认情况下启用了DynamicKubeletConfig Feature Gate,但是您需要一些其他步骤来激活它。您需要记住,必须将Kubelet的--dynamic-config-dir标志设置为Node上的可写目录。