Docker Kubernetes-上载crisocket时出错:等待条件时超时

Docker Kubernetes-上载crisocket时出错:等待条件时超时,docker,kubernetes,cluster-computing,Docker,Kubernetes,Cluster Computing,我正在尝试为具有1个主节点和2个工作节点的Kubernetes群集创建一个模板。我已经安装了所有的pre-req软件,并在主节点上运行了kubeadmn init。但是当我尝试运行作为init命令输出的kubeadmn连接时,我得到了一个错误 [discovery]创建了群集信息发现客户端,请求信息 从“https://10.31.2.33:6443“[discovery]正在从请求信息 "https://10.31.2.33:6443“再次验证TLS与固定的 公钥[发现]群集信息签名和内容有效

我正在尝试为具有1个主节点和2个工作节点的Kubernetes群集创建一个模板。我已经安装了所有的pre-req软件,并在主节点上运行了kubeadmn init。但是当我尝试运行作为init命令输出的kubeadmn连接时,我得到了一个错误

[discovery]创建了群集信息发现客户端,请求信息
从“https://10.31.2.33:6443“[discovery]正在从请求信息
"https://10.31.2.33:6443“再次验证TLS与固定的
公钥[发现]群集信息签名和内容有效
TLS证书将使用API对固定根进行验证
服务器“10.31.2.33:6443”[discovery]已成功建立
连接API服务器“10.31.2.33:6443”[kubelet]下载
从“kubelet-config-1.12”配置图中配置kubelet
在kube系统名称空间[kubelet]中写入kubelet配置
将“/var/lib/kubelet/config.yaml”[kubelet]写入kubelet
带有要归档的标志的环境文件
“/var/lib/kubelet/kubeadm flags.env”[飞行前]激活
kubelet服务[tlsbootstrap]等待kubelet执行
TLS引导。。。[patchnode]上传CRI套接字信息
“/var/run/dockershim.sock”作为节点API对象”
上载crisocket时出现批注错误:等待
状况```
在WorkerNode2上运行此操作之前,我已经完成了swapoff-a

我能够运行一次连接,但是在那之后,作为脚本的一部分,我运行了kubeadmn重置,然后是init和join,这已经开始出现了几次

无法弄清楚我犯了什么或哪里的错误


我的主要目的是以shell脚本的形式(在主节点上)放置所有命令,以便它可以在集群上运行以创建网络。

我在Ubuntu 16.04 amd64上也遇到了同样的问题,通过以下命令修复了它:

swapoff -a    # will turn off the swap 
kubeadm reset
systemctl daemon-reload
systemctl restart kubelet
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X  # will reset iptables
另外,看看kubeadm GitHub中的这个问题,人们在关闭交换后仍然报告有问题

您还可以尝试在/etc/default/kubelet文件中添加--fail swap on=false标志,但对我的情况没有帮助


它似乎在最新的k8版本中得到了修复,因为自从升级集群以来,我没有经历过这种情况。

在重新启动节点后,我遇到了以下问题:

[kubelet]在名称空间kube系统中创建配置映射“kubelet-config-1.13”,其中包含集群中kubelet的配置
[patchnode]将CRI套接字信息“/var/run/dockershim.sock”作为注释上载到节点API对象“k8smaster”
[kubelet检查]通过了40秒的初始超时。
错误执行阶段上载配置/kubelet:写入控制平面节点的Crisocket信息时出错:等待条件时超时
解决此问题的步骤:

  • 重新启动后,请再次检查主机名,主机名可能已更改

    sudo vi/etc/hostname
    sudo vi/etc/hosts
    
  • 执行以下清理操作

    代码:

    sudo kubeadm重置
    rm-rf/var/lib/cni/
    sudo rm-rf/var/lib/cni/
    systemctl后台程序重新加载
    systemctl重新启动kubelet
    sudo iptables-F&&sudo iptables-t nat-F&&sudo iptables-t mangle-F&&sudo iptables-X
    
  • 使用特殊标记执行init操作,如下所示

    代码:

    sudo kubeadm init--pod网络cidr=192.168.0.0/16--apiserver播发地址=10.10.10.2--ignore preflight errors=all
    
    (其中10.10.10.2是主节点的IP,192.168.0.0/16是为POD分配的专用子网)


  • 你说“我运行了kubeadmn重置,然后是init和join几次”。可能是因为您没有更新由init生成的令牌,并试图使用无效的令牌加入吗?不,我确保我使用了更新的令牌,该令牌是我为运行的新init命令获取的。我还意识到多次重新运行reset和init会破坏设置。如果我尝试在新机器上创建模板时使用的脚本,它似乎运行正常。我跳过了关闭交换和重新加载
    systemctl守护程序
    位,因为服务器上有一个长时间运行的作业,我不想重新启动任何东西。在我的情况下,主IP是192.168.137.2,所以我应该使用--pod network cidr=192.168.0.0/16还是让我知道使用哪一个…注意,我运行的主IP是Hyper V的VmIroot@POC-k8s主机:~#sudo kubeadm init--pod网络cidr=10.10.0.0/16--apiserver播发地址=192.168.137.2--ignore preflight errors=all[init]使用Kubernetes版本:v1.16.3[preflight]运行飞行前检查[WARNING IsDockerSystemdCheck]:检测到“cgroupfs”作为Docker cgroup驱动程序。推荐的驱动程序为“systemd”。请遵循[WARNING SystemVerification]中的指南:此Docker版本不在已验证版本列表中:19.03.5。最新验证版本:18.09Getting core dns pending。。。。。。。root@POC-k8s主机:~#kubectl获取pods--所有名称空间名称就绪状态重新启动kube系统coredns-5644d7b6d9-7xk42 0/1挂起0 91s kube系统coredns-5644d7b6d9-mbrlx 0/1挂起0 91s kube系统etcd-poc-k8s-master 1/1运行0 51s kube系统kube-apiserver-poc-k8s-master 1/1运行0 32s~#kubeadm配置映像拉取[config/images]拉取k8s.gcr.io/kube apiserver:v1.16.3[config/images]拉取k8s.gcr.io/kube控制器管理器:v1.16.3[config/images]拉式k8s.gcr.io/kube调度程序:v1.16.3[config/images]拉式k8s.gcr.io/kube代理:v1.16.3[config/images]拉式k8s.gcr.io/pause:3.1[config/images]拉式k8s.gcr.io/etcd:3.3.15-0[config/images]拉式k8s.gcr.io/coredns:1.6.2root@POC-k8s主机:~#导出KUBECONFIG=/etc/kubernet