labring / sealos

Sealos is a production-ready Kubernetes distribution. You can run any Docker image on sealos, start high availability databases like mysql/pgsql/redis/mongo, develop applications using any Programming language.
https://cloud.sealos.io
Apache License 2.0
14.08k stars 2.08k forks source link

修改~/.sealos/config.yaml中的配置项, 导致panic: runtime error:index out of range [0] with length 0 #520

Closed fufengyuan closed 4 years ago

fufengyuan commented 4 years ago

哪个命令或者组件

sealos join --master 172.31.25.40

描述这个缺陷 操作步骤

sealos init --passwd '' \
--master 172.31.25.38  --master 172.31.25.39 --master 172.31.25.40  \
--pkg-url /root/kube1.19.3.tar.gz \
    --version v1.19.3

在172.31.25.38上使用以上命令安装成功,集群可以正常运行。 然后修改了每个节点的docker镜像地址,分别重启docker后发现master 172.31.25.40启动异常, 然后就在172.31.25.38上使用sealos clean --master 172.31.25.40命令清理掉异常节点,再使用sealos join --master 172.31.25.40就报错。

重现步骤(如果有需要可以附加图片)

  1. 清理节点sealos clean --master 172.31.25.40 image

2.加入节点 sealos join --master 172.31.25.40 image

测试结果

  1. panic: runtime error:index out of range [0] with length 0

期望结果

  1. 期望出现 加入master成功 前置条件: 已有两个master正常运行 操作步骤:
    1. sealos clean --master 172.31.25.40
    2. sealos join --master 172.31.25.40 预期结果:
    3. 加入成功

运行环境

oldthreefeng commented 4 years ago

清理master看一下wiki里面的清理, 还需要清etcd的节点, 另外这个panic我晚点看能不能重现一下。

fufengyuan commented 4 years ago

清理了还是一样的呢

fufengyuan commented 4 years ago

清理master看一下wiki里面的清理, 还需要清etcd的节点, 另外这个panic我晚点看能不能重现一下。

还是一样的,我试试重新安装整个集群,看看能不能解决

zhangguanzhang commented 4 years ago

感觉配置文件导致master0不存在

oldthreefeng commented 4 years ago

panic: runtime error:index out of range [0] with length 0

我复现不出来. 能把错误的完整 join 日志打印出来么?

oldthreefeng commented 4 years ago

我这边大概能定位到问题了. 你可能修改了.sealos/config.yaml 里面masters相关配置, 比如以下的一个基本配置. 删除masters的列表后, 则会出现 panic: runtime error:index out of range [0] with length 0.
导致了这个错误的发生.

masters:
- 192.168.60.128:22
- 192.168.60.129:22
- 192.168.60.130:22
nodes: []
dnsdomain: cluster.local
apiservercertsans:
- 127.0.0.1
- apiserver.cluster.local
- 192.168.60.128
- 192.168.60.129
- 192.168.60.130
- 10.103.97.2
user: root
passwd: ""
privatekey: /root/.ssh/id_rsa
pkpassword: ""
apiserverdomian: apiserver.cluster.local
vip: 10.103.97.2
pkgurl: kube1.19.3.tar.gz
version: v1.19.3
repo: k8s.gcr.io
podcidr: 100.64.0.0/10
svccidr: 10.96.0.0/12
certpath: /root/.sealos/pki
certetcdpath: /root/.sealos/pki/etcd
lvscarename: fanux/lvscare
lvscaretag: latest
alioss:
  ossendpoint: ""
  accesskeyid: ""
  accesskeysecrets: ""
  bucketname: ""
  objectpath: ""
fufengyuan commented 4 years ago

我这边大概能定位到问题了. 你可能修改了.sealos/config.yaml 里面masters相关配置, 比如以下的一个基本配置. 删除masters的列表后, 则会出现 panic: runtime error:index out of range [0] with length 0. 导致了这个错误的发生.

masters:
- 192.168.60.128:22
- 192.168.60.129:22
- 192.168.60.130:22
nodes: []
dnsdomain: cluster.local
apiservercertsans:
- 127.0.0.1
- apiserver.cluster.local
- 192.168.60.128
- 192.168.60.129
- 192.168.60.130
- 10.103.97.2
user: root
passwd: ""
privatekey: /root/.ssh/id_rsa
pkpassword: ""
apiserverdomian: apiserver.cluster.local
vip: 10.103.97.2
pkgurl: kube1.19.3.tar.gz
version: v1.19.3
repo: k8s.gcr.io
podcidr: 100.64.0.0/10
svccidr: 10.96.0.0/12
certpath: /root/.sealos/pki
certetcdpath: /root/.sealos/pki/etcd
lvscarename: fanux/lvscare
lvscaretag: latest
alioss:
  ossendpoint: ""
  accesskeyid: ""
  accesskeysecrets: ""
  bucketname: ""
  objectpath: ""

对的,就是因为这个master节点不可用,所以我就在kuboard上删除了这个master节点,然后再清理重新加入就报错

oldthreefeng commented 4 years ago

对的,就是因为这个master节点不可用,所以我就在kuboard上删除了这个master节点,然后再清理重新加入就报错

不用自己修改, sealos会自动帮你做这些事。

fufengyuan commented 4 years ago

对的,就是因为这个master节点不可用,所以我就在kuboard上删除了这个master节点,然后再清理重新加入就报错

不用自己修改, sealos会自动帮你做这些事。

原来是这样,也没有在文档里面看到相关的说明,如果能在官网将这些注意事项列出来就好了,那就能少走一些弯路。

oldthreefeng commented 4 years ago

没有其他问题我就关闭了。

fufengyuan commented 4 years ago

没有其他问题我就关闭了。

好的