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

本文提供有关在 Azure Kubernetes 服务 (AKS) 中使用 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 上的 AKSAzure 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 文件夹中的 Packages 文件)
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 主机上工作,则可以使用 DirectoryOrCreatehostPath 卷中的 类型映射 /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 反馈社区提交产品反馈。