排查适用于 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。 它跨 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 文件夹中的 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 主机上工作,则可以使用 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 反馈社区提交产品反馈。