“参数列表过长”错误消息导致的应用程序失败

本文讨论解决由Microsoft Azure Kubernetes 服务(AKS)中的“参数列表过长”错误消息引起的应用程序故障的故障排除策略。

现象

当 kubelet 尝试运行可执行文件时,应用程序会失败,并且收到类似于以下输出的错误消息:

standard_init_linux.go:228:exec 用户进程导致:参数列表过长

原因 1:提供给可执行文件的参数列表太长

提供给应用程序的可执行文件的参数太长,无法处理。

解决方案:缩短参数列表

消除为可执行文件指定的任何冗余或不必要的参数。

原因 2:提供给可执行文件的环境变量集太大

如果在一个命名空间中部署了太多服务,则环境变量列表可能会变得太大,kubelet 会在尝试运行可执行文件时生成错误消息。 发生此错误的原因是 kubelet 会添加环境变量来记录每个活动服务的主机和端口,以便 服务可以使用此信息查找其他活动服务

解决方案 1:减少处于活动状态的服务数

可以减少活动服务的总数,以便 kubelet 添加较少的整体环境变量。

解决方案 2:重新配置 kubelet,以便它不会为服务主机和端口添加环境变量

PodSpec 核心 API 中,将 enableServiceLinks 字段设置为 false. 此更改将重新配置 kubelet 行为,以便不会为每个活动服务自动添加主机和端口作为环境变量。

警告

如果服务依赖于这些环境变量来查找其他服务,此字段更改将导致服务失败。 若要避免这种情况,请使用 CoreDNS 依赖 DNS 进行服务发现而不是环境变量。

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

联系我们寻求帮助

如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区