Python 版本与镜像选择¶
先选镜像,再检查目标节点 Python。 更新
spray-job镜像不会升级目标节点 Python;Python 版本符合要求也不等于完整集群生命周期已经验证。
两套镜像的要求¶
控制端是运行 Ansible 的 spray-job 容器;目标端是被管理的 Kubernetes 节点,包括 control-plane 和 worker。
以下对应当前源码的构建配置,镜像仓库为 ghcr.io/kubean-io/spray-job,<version> 表示 Kubean 版本。历史镜像以其实际依赖为准。
表中的
2.21及对应 Ansible 版本会随锁定的 Kubespray 升级而变化,以镜像实际内容为准,本页可能滞后。用页末命令自查。
| 镜像 tag | Ansible / ansible-core | 控制端 Python 支持范围 | 目标端 Python 支持范围 |
|---|---|---|---|
<version>-ansible-core2.16,别名 <version> |
9.13.0 / 2.16 | 3.10–3.12 | 2.7 或 3.6–3.12 |
<version>-ansible-core2.21,别名 <version>-modern |
当前为 14.4.0 / 2.21 | 3.12–3.14 | 3.9–3.14 |
- 范围包含两端,是 ansible-core 的支持范围,不是镜像内实际安装的 Python 版本。
- core 版本 tag 与对应别名指向同一次构建的镜像。core 版本从镜像读取;未来升级时,准确 tag 会随之变化,
<version>-modern保持简短入口。 modern跟随锁定的 Kubespray;latest也指向现代镜像,并非普通版本 tag 的别名。生产环境请选择明确版本或 digest。- Ansible 9 / core 2.16 已 EOL;旧版引擎不能保证兼容新 Kubespray 的所有操作,例如使用
mount_facts的 reset。
自查镜像内实际版本:docker run --rm --entrypoint ansible <image> --version。
主要系统的默认 Python 参考¶
以下覆盖 kubean 当前适配的全部离线系统软件包(os-pkgs-*),整理于 2026-10-08。标记 † 的行未经实机验证,为该发行版官方默认值或同源发行版(如 RHEL 兼容系统)的推断值,部署前建议在目标节点自查确认;未标记的为实机记录。补丁版本和命令别名可能随系统镜像、更新及配置变化,请以目标节点实际解释器为准;本表不是完整 OS 支持认证。
| 系统 | os-pkgs 标识 | python |
python3 |
满足 core 2.16 目标范围 (2.7 或 3.6–3.12) |
满足 core 2.21/现代镜像目标范围 (3.9–3.14) |
|---|---|---|---|---|---|
| BigCloud 21.10 † | os-pkgs-bigcloud2110 |
未记录 | 3.6.8 † | 是 | 否 |
| CentOS 7 | os-pkgs-centos7 |
2.7.5 | 未默认安装(可装 3.6.8) | 是 | 否 |
| Kylin V10 SP2 † | os-pkgs-kylin-v10sp2 |
2.7.18 † | 3.7.9 † | 是 | 否 |
| Kylin V10 SP3 | os-pkgs-kylin-v10sp3 |
2.7.18 | 3.7.9 | 是 | 否 |
| Kylin V11 2503(原 Swan25) | os-pkgs-kylin-v112503 |
未找到命令 | 3.11.6 | 是 | 是 |
| openEuler 22.03 LTS † | os-pkgs-openeuler22.03 |
未记录 | 3.9.9 † | 是 | 是 |
| Oracle Linux 8 † | os-pkgs-oracle8 |
未安装 | 3.6.8 † | 是 | 否 |
| Oracle Linux 9 † | os-pkgs-oracle9 |
未安装 | 3.9.18 † | 是 | 是 |
| RHEL 10 † | os-pkgs-redhat10 |
未安装 | 3.12.x † | 是(恰在上限) | 是 |
| RHEL 7 | os-pkgs-redhat7 |
2.7.5 | 未默认安装(可装 3.6.8) | 是 | 否 |
| RHEL 8 | os-pkgs-redhat8 |
未安装 | 3.6.8 | 是 | 否 |
| RHEL 9.2(Plow) | os-pkgs-redhat9 |
3.9.16 | 3.9.16 | 是 | 是 |
| Rocky Linux 8 † | os-pkgs-rocky8 |
未安装 | 3.6.8 † | 是 | 否 |
| Rocky Linux 9.2 | os-pkgs-rocky9 |
3.9.16 | 3.9.16 | 是 | 是 |
| SLES 15 SP7 | os-pkgs-sles15sp7 |
未找到命令 | 3.6.15 | 是 | 否 |
| TencentOS Server 3.1 † | os-pkgs-tencent31 |
未记录 | 3.6.8 † | 是 | 否 |
| Ubuntu 20.04 LTS | os-pkgs-ubuntu2004 |
未找到命令 | 3.8.10 | 是 | 否 |
| Ubuntu 22.04.4 LTS | os-pkgs-ubuntu2204 |
未找到命令 | 3.10.12 | 是 | 是 |
| Ubuntu 24.04 LTS | os-pkgs-ubuntu2404 |
未找到命令 | 3.12.3 | 是 | 是 |
结论速查:
- 满足现代镜像(
-modern/ core 2.21)要求,目标节点可直接使用:Kylin V11 2503、openEuler 22.03、Oracle Linux 9、RHEL 9/10、Rocky Linux 9、Ubuntu 22.04/24.04。 - 仅满足传统镜像(core 2.16)要求,默认 Python 版本低于 3.9,若要评估现代镜像需按「如何选择」一节额外准备受支持的 Python:BigCloud 21.10、CentOS 7、Kylin V10 SP2/SP3、Oracle Linux 8、RHEL 7/8、Rocky Linux 8、SLES 15 SP7、TencentOS Server 3.1、Ubuntu 20.04。
上述所有 Python 版本均在 core 2.16 的目标端支持范围内。python 命令缺失不代表无法使用 Ansible;关键是实际选中的解释器。
如何选择¶
- 目标节点已有 Python 3.9–3.14:可复用该解释器评估现代镜像,不必强制安装 Python 3.12。
- RHEL 8 / SLES 15 SP7 / 上表 Kylin V10 SP2/SP3:使用现代镜像前需额外准备受支持的 Python,并通过
ansible_python_interpreter指定实际路径;保留系统 Python。 - 新 Python 必须在执行依赖 Python 的预检查及 hooks 前准备好。离线环境还需提供匹配系统和架构的软件包及完整依赖;不能只更换控制端镜像。
SLES 15 SP7¶
SLES 15 SP7 的 /usr/bin/python3 是 Python 3.6,因此两条镜像线所需的主机配置不同。
| 镜像线 | 实际使用的解释器 | hosts-conf 配置 |
|---|---|---|
<version>(core 2.16) |
系统自带 /usr/bin/python3(3.6) |
不需要 |
<version>-modern(core 2.21) |
/usr/bin/python3.11 |
ansible_python_interpreter: /usr/bin/python3.11 |
使用现代镜像时,需在执行任何 playbook(包括 ping.yml)之前先装好解释器。
python311 来自 Python 3 模块,节点需先通过 SUSEConnect 注册,或以离线方式提供该模块
(Full ISO 的 Module-Python3 目录,或 sles os-pkgs 源):
zypper install python311
然后在对应主机上指定解释器:
all:
hosts:
node1:
ansible_python_interpreter: /usr/bin/python3.11
推荐使用现代镜像。Ansible 9 / core 2.16 已 EOL,不能保证兼容新 Kubespray 的所有操作。