排查适用于 AKS 的 Azure Linux 容器主机的常见问题

本文提供有关在 Azure Kubernetes 服务 中使用 Azure Linux 容器主机时可能会遇到的一些常见报告的问题的故障排除步骤。 有关如何开始使用 AKS 中的 Azure Linux 容器主机的详细信息,请参阅 将 Azure Linux 与 AKS 配合使用。

开始之前

阅读有关 Kubernetes 群集故障排除的官方指南。 此外,请阅读 Microsoft 工程师的 Kubernetes 故障排除指南。 本指南包含用于对 Pod、节点、群集和其他功能进行故障排除的命令。

最后,查看 Azure Linux 中已知限制的列表。 你尝试解决的问题可能是我们正在处理的问题。

先决条件

  • Azure CLI 版本 2.31 或更高版本。 如果已安装 Azure CLI,可以通过运行 az --version找到版本号。

关于适用于 AKS 的 Azure Linux 容器主机

Azure Linux 是Microsoft创建的开源 Linux 分发版。 作为轻型 OS,Azure Linux 具有以下功能:

  • 仅包含运行容器工作负荷所需的包
  • 接受 Azure 验证测试
  • 与 Azure 代理兼容

适用于 AKS 的 Azure Linux 容器主机是 AKS 的操作系统映像,已针对运行容器工作负载进行优化。 它由Microsoft和基于 Azure Linux 进行维护。 它提供从云到边缘的可靠性和一致性,包括 AKSAzure Stack HCI 上的 AKS 和 Azure Arc 产品。 可以使用 Azure Linux 容器主机执行以下操作:

  • 在新群集中部署 Azure Linux 节点池。
  • 将 Azure Linux 节点池添加到现有 Ubuntu 群集。
  • 将 Ubuntu 节点迁移到 Azure Linux 节点。

有关 Azure Linux 的详细信息,请参阅 Azure Linux GitHub 存储库。

故障排除清单

步骤 1:查看 Ubuntu 和 Azure Linux 中的等效命令

Azure Linux OS 中的大多数命令(如进程状态 (ps) 命令)类似于 Ubuntu 中使用的命令。 但是,包管理是使用 Tiny DNF (tdnf) 命令完成的。 下表列出了 Ubuntu 中的一些常见命令及其在 Azure Linux 中的等效项。

Ubuntu 命令 建议的 Azure Linux 命令
apt -- list installed rpm -qa
apt autoclean tdnf clean all
apt autoremove dnf autoremove
apt dist-upgrade dnf distro-sync
apt download tdnf download
apt install tdnf install
apt install --reinstall tdnf reinstall
apt list - upgradable dnf list updates
apt remove tdnf remove
apt search tdnf search
apt show tdnf list
apt upgrade tdnf upgrade
apt cache dump tdnf list available
apt-cache dumpavail tdnf list available
apt-cache policy tdnf list
apt-cache rdepends dnf repoquery -- alldeps - whatrequires
apt-cache search tdnf search
apt-cache show tdnf info
apt-cache stats (没有确切的等效项;读取/var/lib/rpm 文件夹中的文件)
apt-config shell dnf shell
apt-file list dnf repoquery -l
apt-file search tdnf provides
apt-get autoremove dnf autoremove
apt-get install tdnf install
apt-get remove tdnf remove
apt-get update dnf clean expire-cache dnf check-update
apt-mark auto tdnf install dnf mark remove
apt-mark manual dnf mark install
apt-mark showmanual dnf history userinstalled

步骤 2:检查 Azure Linux 版本

确保使用的是正确的 Azure Linux 版本。 Azure Linux 的受支持使用版本为 Azure Linux 2.0。 在以下 az aks nodepool list 命令的输出中,该 osSKU 属性应读取 AzureLinux

az aks nodepool list --resource-group <resource-group-name> --cluster-name <aks-cluster-name>

尽管此命令可能无法解决所遇到的问题,但对于报告代理或扩展在 Azure Linux 上无法正常工作的用户,版本控制是一个常见问题。

步骤 3:了解证书文件路径的差异

Azure Linux(和其他 RPM 分发版)以不同于 Ubuntu 的方式存储证书。

在 Azure Linux 上,/etc/ssl/certs 路径是指向 /etc/pki/tls/certs 的符号链接。 如果容器希望映射 /etc/ssl/certs 以使用 Azure Linux 上的 ca-certificates.crt 证书文件,则容器将获取指向无处的符号链接。 此行为会导致容器中与证书相关的错误。 容器还必须映射 /etc/pki ,以便容器可以遵循符号链接链。 如果容器必须同时在 Ubuntu 和 Azure Linux 主机上工作,则可以使用 DirectoryOrCreate hostPath 卷中的类型映射 /etc/pki

步骤 4:更新 Azure CLI 和 AKS 预览版扩展

如果尝试使用 Azure CLI 部署 Azure Linux AKS 群集,可能会收到一条错误消息,指出 AzureLinux 该选项不受参数支持 OSSku 。 此消息意味着你可能使用的是过时版本的 Azure CLI 或 AKS 预览版扩展。 若要解决此问题,请执行以下两项操作中的一项或两项操作:

  • 如果 Azure CLI 不是最新的,请安装最新版本。 若要升级 Azure CLI,请运行以下 az upgrade 命令:

    az upgrade
    
  • 如果已安装较旧版本的 aks-preview 扩展,请安装较新版本,使 OSSku 参数具有值 AzureLinux。 若要升级扩展,请运行以下 az extension update 命令:

    az extension update --name aks-preview
    

第三方信息免责声明

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

第三方联系人免责声明

Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区