排查适用于 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 进行维护。 它提供从云到边缘的可靠性和一致性,包括 AKS、 Azure 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 反馈社区。