Alpine Linux 无法识别 DNS 名称 - /etc/hosts 行太长

问题描述 投票:0回答:1

我们有一个由提供商部署的 kubernetes 环境。在运行的 POD 中,我们需要将大约 60 个 DNS 别名映射到一个 IP 地址,因此这是在 /etc/hosts 文件中定义的。 据我们所知,所使用的部署过程不提供在多行上定义它的选项,它必须在一行中。

我们发现系统仅识别定义的前 500 个字符中的别名。所有其他别名均报告为错误地址。

对于我们来说,这看起来像是新使用的 Alpine Linux v3.20 的问题。之前用的centos7没有这个限制(或者不是500个字符)。

请不要问我为什么我们不拆分线路或者为什么我们不使用其他部署程序。这不在我们手中。不幸的是,该提供商缺乏经验,因此我们寻求帮助/解决方案,然后我们可以提出建议。

有人知道类似的问题并有一些解决方法吗?我认为 500 个字符非常有限。

非常感谢您的帮助

dns alias alpine-linux hosts
1个回答
0
投票

您似乎面临着与运行 Alpine Linux v3.20 的 Kubernetes pod 中的 /etc/hosts 文件处理相关的限制。具体来说,您遇到的问题是系统仅识别单行 /etc/hosts 中 DNS 别名的前 500 个字符。这不是您在 CentOS7 上可能遇到的情况,因为不同的操作系统发行版可能会处理 /etc/hosts 文件。

虽然 Linux 内核或 gethostbyname 函数本身没有固有的限制,但这里可能有几个因素在起作用。以下是潜在原因和需要探索的解决方案的细分:

  1. Alpine 的 musl libc 限制 Alpine Linux 使用 musl libc 而不是更常见的 glibc。 musl libc 可能对 /etc/hosts 文件中每行的长度施加限制。对于 CentOS7,这可能不是问题,因为 CentOS7 使用 glibc,它可以处理更长的行。

解决方案:

您可以通过将别名拆分为多行或调查 musl libc 是否有任何特定配置来扩展此限制来克服此问题。但是,正如您提到的,由于部署限制,拆分线路不是一个选项,这更多的是了解限制的诊断步骤。

© www.soinside.com 2019 - 2024. All rights reserved.