关于#linux#的问题:请问装k8s遇到./initial_master.sh: line 33: kubeadm: command not found的问题后

请问装k8s遇到./initial_master.sh: line 33: kubeadm: command not found的问题后,博主解决了吗

【相关推荐】



  • 这篇博客: Ubuntu20.04虚拟机使用Kubeadm从0到1搭建K8S集群(超详细)中的 2.3 部署Master节点 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    在正式开始之前,我们要先做一件事——修改主机名,不然后面显示信息可能会有点困扰,具体做法如下:

    先修改/etc/hostname文件,改成k8s-master:
    在这里插入图片描述

    然后修改一下/etc/hosts文件:

    在这里插入图片描述

    重启机器即可生效。worker节点的名字在安装的时候就改好了,如果你没有修改的话,可以按照上述步骤进行修改。

    言归正传,新建一个kubeadm.yaml文件(因为书上是使用yaml文件初始化的,当然你也可以用命令行参数进行初始化,这里的yaml文件我已经修改过了),内容如下:

    apiVersion: kubeadm.k8s.io/v1beta3
    kind: InitConfiguration
    localAPIEndpoint:  
    	advertiseAddress: 10.211.55.122 
    	bindPort: 6443
    nodeRegistration:  
    	kubeletExtraArgs:    
    		cgroup-driver: "systemd"
    ---
    apiVersion: kubeadm.k8s.io/v1beta3
    kind: ClusterConfiguration
    imageRepository: registry.aliyuncs.com/google_containers
    kubernetesVersion: 1.23.0
    clusterName: "example-cluster"
    controllerManager:  
    	extraArgs:    
    		horizontal-pod-autoscaler-sync-period: "10s"    
    		node-monitor-grace-period: "10s"
    apiServer:  
    	extraArgs:    
    		runtime-config: "api/all=true"
    

    执行初始化命令:

    kubeadm init --config kubeadm.yaml
    

    报错:

    [kubelet-check] Initial timeout of 40s passed.
    [kubelet-check] It seems like the kubelet isn't running or healthy.
    [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
    

    解决方案:

    修改我们的docker配置文件/etc/docker/daemon.json,添加一行:

    {
        "exec-opts": ["native.cgroupdriver=systemd"],
        "registry-mirrors": [
            "https://xxxxxxxx.mirror.aliyuncs.com"
        ]
    }
    

    之后执行如下命令:

    # 重启docker
    systemctl daemon-reload
    systemctl restart docker
    # kubeadm重置
    kubeadm reset
    rm -rf $HOME/.kube/config
    # 重新初始化
    kubeadm init --config kubeadm.yaml
    

    这样就初始化成功啦:
    在这里插入图片描述

    按照提示,执行后续操作:

    mkdir -p $HOME/.kube  
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=/etc/kubernetes/admin.conf
    

    查看部署状态:

    kubectl get nodes
    # 显示结果
    NAME         STATUS     ROLES                  AGE     VERSION
    k8s-master   NotReady   control-plane,master   6m54s   v1.23.3
    

    可以看到STATUS显示的是NotReady,我们可以使用kubectl describe查看一下节点信息:

    kubectl describe node k8s-master
    

    在这里插入图片描述

    这里我们可以看到,出现NotReady的原因是我们尚未部署任何网络插件。

    另外,我们可以通过kubectl查询Pod状态:

    kubectl get pods -n kube-system
    

    在这里插入图片描述

    可以看到,CoreDNS的Pod处于Pending状态,因为它是依赖于网络的,这个状态是符合预期的。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^