用helm最小化安装,job任务失败
VanLiuZhi opened this issue · 4 comments
都是国人,我就不写英文了
安装的时候,我看启动了一个job,但是它执行失败,日志如下:
Waiting for generate ssl files for etcd...
panic: Error creating etcd secrets: can not detect secret erda-etcd-server-secret in namespace erda-system exist or not
goroutine 1 [running]:
main.createEtcdSecretsByK8sClient(0xc00035cb00, 0x1516e43, 0x19)
/Users/tianxiang.liu/work/go/wip-erda-release/erda-helm/etcd_ssl/etcd_ssl.go:120 +0xc0f
main.main()
/Users/tianxiang.liu/work/go/wip-erda-release/erda-helm/etcd_ssl/etcd_ssl.go:48 +0x9a
这是helm包里面的内容吧,我找到了那个etcd_ssl.go的文件,看来是创建 secret失败了,createEtcdSecretsByK8sClient这个方法。
我看了这个job镜像的Entrypoint
"Entrypoint": [
"/bin/sh",
"-c",
"/opt/etcd_ssl/etcd_ssl"
],
这是把erda-release项目中,etcd-ssl的文件打成了job镜像吧,大致看了一下代码,之前有个读取文件的
createEtcdSecretsByK8sClient(clientset, "./etcd-server-secret.yaml")
总感觉这个有问题,这个路径难道不应该是./templates/etcd-client-secret.yaml
吗?不过看代码,检查的步骤都是通过的,是执行
_, err = cli.CoreV1().Secrets(secret.Namespace).Get(context.TODO(), secret.Name, metav1.GetOptions{})
进到了这个逻辑中,panic了
if errors.IsNotFound(err) {
_, err = cli.CoreV1().Secrets(secret.Namespace).Create(context.TODO(), &secret, metav1.CreateOptions{})
if err != nil {
panic(err.Error())
}
fmt.Printf("Create secret %s in namespace %s by file %s successfully.\n", secret.Name, secret.Namespace, filename)
} else if err != nil {
panic(fmt.Errorf("Error creating etcd secrets: can not detect secret %s in namespace %s exist or not", secret.Name, secret.Namespace).Error())
}
我测试了 v1.5 v1.4 都是不行的,求助一下
补充一下环境:
centos 8,内核 4.18,k8s 1.19.6
@VanLiuZhi 这个地方的关键日志没有被暴露出来,可以给我们提一个 pr, 该问题已知,暂未修复。
一般此处报错大部分是跟当前 k8s 集群环境有关,可以输出下具体错误。
} else if err != nil {
panic(fmt.Errorf("Error creating etcd secrets: can not detect secret %s in namespace %s exist or not", secret.Name, secret.Namespace).Error())
}
可能是的,没打印具体日志,我看之前有人也提问了 #3927 (comment) ,我估计他也是这个问题,我们是 centos8 的环境,我猜测和环境有关
@iutx 关闭太快了吧😂,我检查过,我的k8s没有问题,我切换回centos 7.4了,3.10内核。我检查过k8s创建pod是没有问题的,并且nodeport访问,集群内ip访问,包括服务发现,coredns都验证过。在job中通过api创建一个secret失败,一般会是什么原因呢?
好吧,我找到问题了,还是网络的原因,已解决