Kubernetes 从源代码构建运行Kubeadm

Kubernetes 从源代码构建运行Kubeadm,kubernetes,makefile,kubeadm,kubelet,Kubernetes,Makefile,Kubeadm,Kubelet,试图使用Kubernetes存储库分支版本1.19中的kubeadm部署k8主节点。在运行kubeadm init{opts…} kubeadm建议使用apt安装kubeadm、kubectl和kubelet。该指南指出,安装后,“kubelet现在每隔几秒钟就重新启动一次,因为它会在紧急情况下等待kubeadm告诉它该做什么。” 从本地存储库中,我正在使用“全部生成”方法编译Kubernetes二进制文件(kubeadm、kubectl和kubelet)。然后使用exec perms将它们发送

试图使用Kubernetes存储库分支版本1.19中的kubeadm部署k8主节点。在运行
kubeadm init{opts…}

kubeadm建议使用apt安装kubeadm、kubectl和kubelet。该指南指出,安装后,“kubelet现在每隔几秒钟就重新启动一次,因为它会在紧急情况下等待kubeadm告诉它该做什么。”

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

由于kubelet未运行/配置,执行kubeadm init失败。但是,从kubelet二进制文件初始化所需的kubelet.service似乎需要我假设kubeadm生成的证书(ca.pem)和配置(kubelet.config.yaml)。因此,关于库比德和库贝莱的鸡蛋情况

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


任何帮助/指导都将不胜感激。从源代码构建的在线文档/线程很少

对于搜索的任何人,找到了解决方案:

  • 通过apt安装依赖项:apt传输https、conntrack、socat、ipset
  • 将kubelet、kubeadm、kubectl二进制文件移动到/usr/local/bin并给exec perms
  • 将systemd kubelet.service文件写入/etc/systemd/system
  • 将kubelet配置文件写入/etc/systemd/system/kubelet.service.d
  • 构建cni插件 例如,对于linux,构建_linux.sh

  • 将cni插件二进制文件复制到/opt/cni

  • 启动Kubelet
    systemctl后台程序重新加载
    systemctl启用kubelet--现在
    systemctl启动kubelet

  • 现在kubeadm init可以运行了


  • 简而言之,这在kubeadm初始化之前初始化了kubelet.service systemd流程;使用一些默认/最小配置。然后,kubeadm init在执行时修改进程的配置。

    kubeadm init
    失败时,您看到的确切错误消息是什么?
    [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
    
    # 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