Go 标志重定义:两个组件是否可以具有相同的标志变量
我有一个带有5个容器的部署。 其中有两个参数是Go 标志重定义:两个组件是否可以具有相同的标志变量,go,kubernetes,go-flag,Go,Kubernetes,Go Flag,我有一个带有5个容器的部署。 其中有两个参数是--endpoint,其值是从ENV 所以我在部署后看到了这个错误 /home/xxx-csi-drivers/xxx-vpc-block-csi-driver flag redefined: endpoint panic: /home/xxx-csi-drivers/xxx-vpc-block-csi-driver flag redefined: endpoint 从中生成容器的代码具有 endpoint = flag.String("
--endpoint
,其值是从ENV
所以我在部署后看到了这个错误
/home/xxx-csi-drivers/xxx-vpc-block-csi-driver flag redefined: endpoint
panic: /home/xxx-csi-drivers/xxx-vpc-block-csi-driver flag redefined: endpoint
从中生成容器的代码具有
endpoint = flag.String("endpoint", "/tmp/storage-secret-sidecar.sock", "Storage secret sidecar endpoint")
也
从中生成容器B的代码也具有
endpoint = flag.String("endpoint", "unix:/tmp/csi.sock", "CSI endpoint")
是在代码中定义相同的var端点
导致上述错误
我已尝试更改
deployment
文件中的arg
名称。还有其他没用的选择。但是在代码中更改标志
名称解决了这个问题,但需要了解更多关于工作的信息。所以发布了这个问题它与不同的容器无关。无论哪个进程崩溃,代码都有一个错误,它两次注册同一个标志,这是不允许的。当应用程序中两次使用a标志名称时,标志包会崩溃。恐慌与变量名无关。谢谢@Penelope Stevens试图了解更多。这些包不是相互独立的,它们运行在不同的容器中。您的一个应用程序使用相同的名称定义了两个标志。