先上错误log
[sudo] password for lan:
W1216 00:51:15.874111 12645 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join lb.kubesphere.local:6443 --token ii8gns.kuxurz3i0qxr6dlm --discovery-token-ca-cert-hash sha256:3f15b07eb8d32d115e3dcb88a6f38e54e6ec2686092bc50d5a76d43cef9dece6
[lanx 192.168.1.102] MSG:
sudo: /etc/sudoers.d is world writable
[sudo] password for lan:
lanx v1.18.3 [map[address:192.168.1.102 type:InternalIP] map[address:lanx type:Hostname]]
ERRO[00:51:16 CST] illegal base64 data at input byte 4 node=192.168.1.102
WARN[00:51:16 CST] Task failed ...
WARN[00:51:16 CST] error: interrupted by error
Error: Failed to init kubernetes cluster: interrupted by error
Usage:
kk create cluster [flags]

我的kk配置文件:

lan@lanx:~/repo/git/kubekey$ cat kk.config 
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: lanx, address: 192.168.1.102, internalAddress: 192.168.1.102, user: lan, password: 123}
  - {name: kube254, address: 192.168.1.254, internalAddress: 192.168.1.254, user: root, password: 123}
  roleGroups:
    etcd:
    - lanx
    master: 
    - lanx
    worker:
    - lanx
    - kube254
    ...  

当前pod情况:

lan@lanx:~$ kubectl get pods --all-namespaces
NAMESPACE     NAME                           READY   STATUS    RESTARTS   AGE
kube-system   coredns-6b55b6764d-4lnhg       0/1     Pending   0          9m4s
kube-system   coredns-6b55b6764d-w6ckj       0/1     Pending   0          9m4s
kube-system   kube-apiserver-lanx            1/1     Running   0          9m14s
kube-system   kube-controller-manager-lanx   1/1     Running   0          9m14s
kube-system   kube-proxy-tr6s4               1/1     Running   0          9m4s
kube-system   kube-scheduler-lanx            1/1     Running   0          9m14s
kube-system   nodelocaldns-tjm8n             1/1     Running   0          9m4s

看起来像是准备部署CNI的时候出错了,简单搜索了下源码,应该是在runner.go中的提示:

如果其他人有类似的经验麻烦提示一下,明晚我会尝试在kk源码中加点log跟踪一下出错的步骤,在此之前感谢任何帮助!

  • Forest-L 回复了此帖
  • Forest-L 感谢回复,目前使用离线部署成功了。

    在线方式使用了三个K8S版本都是卡在解码base64字符串的时候, 我尝试解决这个问题但是失败了。

    我将base64字符串单独拿出来写个测试代码跑了下是没问题的,不清楚根本问题。

    在线安装用的三个K8S版本是:v1.17.9/ v1.18.3/ v1.18.6/

    这个帖子就关闭了,其他人遇到一样的问题可以继续讨论。

    lan-liang 还没到网络CNI插件就报错了, lanx用户对/etc/kubernetes/目录下设置了权限没?
    手动在lanx机器上,用lanx用户执行这个指令cat /etc/kubernetes/admin.conf | base64 –wrap=0看看?

      Forest-L 感谢回复,cat /etc/kubernetes/admin.conf | base64 –wrap=0 可以正常执行,

      应该是initKubernetesCluster的时候loadKubeConfig报的错,

      我的网络有点慢,执行kk delete cluster以后重新kk create cluster又需要重新下载文件,感觉这里可以提供一个选项来保留下载的文件. 后面我再继续看问题 🙂

        lan-liang 是的,这条代码报错了kubeconfigStr, err := base64.StdEncoding.DecodeString(clusterStatus["kubeconfig"])

        卸载情况,K8s安装二进制都会保留,镜像也会保留,只是会把配置文件删掉,重新安装应该很快。现在环境部署成功了没?

          8 天 后

          Forest-L 感谢回复,目前使用离线部署成功了。

          在线方式使用了三个K8S版本都是卡在解码base64字符串的时候, 我尝试解决这个问题但是失败了。

          我将base64字符串单独拿出来写个测试代码跑了下是没问题的,不清楚根本问题。

          在线安装用的三个K8S版本是:v1.17.9/ v1.18.3/ v1.18.6/

          这个帖子就关闭了,其他人遇到一样的问题可以继续讨论。

            lan-liang

            sudo: /etc/sudoers.d is world writable

            我想跟这个有关,可以尝试把写权限关掉试下 chmod -w -R /etc/sudoers.d