首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从源构建运行Kubeadm

从源构建运行Kubeadm
EN

Stack Overflow用户
提问于 2020-10-01 15:34:59
回答 1查看 185关注 0票数 0

试图使用Kubernetes存储库的分支分支-1.19使用kubeadm部署k8主节点。在运行kubeadm init {opts...}之前需要进行什么配置

kubeadm 指南建议使用apt安装kubeadm、kubectl和kubelet。指南在安装之后指出,“kubelet现在每隔几秒钟重新启动一次,因为它在崩溃循环中等待kubeadm告诉它该做什么。”

在本地存储库中,我使用“make”方法编译Kubernetes二进制文件(kubeadm、kubectl和kubelet)。然后使用exec perms将它们放到/usr/local/bin的主节点上。

执行kubeadm init失败,因为kubelet没有运行/配置。但是,从kubelet二进制文件初始化所需的kubelet.service似乎需要我假设的kubeadm生成的证书(ca.pem)和信任(kubelet.config.yaml)。所以关于库贝丁和库贝利特的鸡蛋情况。

那么问题是,apt安装完成了哪些额外的配置来初始化kubelet.service?是否有一个最小的配置和服务模板kubelet可以在kubeadm init之前启动?kubeadm是否取代了预初始化的kubelet使用的证书?

任何帮助/指导都将不胜感激。用于从源构建的联机文档/线程是稀疏的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 09:19:28

对于任何搜索者,都找到了解决方案:

  1. 通过apt安装依赖关系:apt-transport、conntrack、socat、ipset。
  2. 将kubelet、kubeadm、kubectl二进制文件移动到/usr/local/bin,并给予执行人员权限。
  3. 将systemd kubelet.service文件写入/etc/systemd/system
代码语言:javascript
复制
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/home/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
  1. 将kubelet配置文件写入/etc/systemd/system/kubelet.service.d
代码语言:javascript
复制
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/default/kubelet
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
ExecStart=
ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
  1. 构建cni插件https://github.com/containernetworking/plugins ie。对于linux,build_linux.sh
  2. 将cni插件二进制文件复制到/opt/cni
  3. 启动Kubelet systemctl daemon-reload systemctl enable kubelet --now systemctl start kubelet
  4. 现在kubeadm init可以运行

简而言之,这在kubeadm init之前初始化了kubelet.service系统d进程;带有一些默认/最小的信任。kubeadm init然后修改流程对执行的信任。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64158642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档