Kubespray项目中的Ansible使用指南

Kubespray项目中的Ansible使用指南

kubespray kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray

前言

Kubespray是一个基于Ansible的Kubernetes部署工具,它通过Ansible playbook实现了Kubernetes集群的自动化部署和管理。本文将详细介绍在Kubespray项目中如何正确使用Ansible,包括环境准备、Inventory配置、变量优先级以及常用操作等核心内容。

Ansible环境准备

安装推荐方式

Kubespray支持多个Ansible版本,建议使用Python虚拟环境来隔离Ansible环境:

# 创建虚拟环境
VENVDIR=kubespray-venv
KUBESPRAYDIR=kubespray
python3 -m venv $VENVDIR
source $VENVDIR/bin/activate

# 安装依赖
cd $KUBESPRAYDIR
pip install -U -r requirements.txt

Python版本兼容性

Kubespray对Ansible和Python版本有特定要求,以下是主要兼容性对照表:

| Ansible版本 | Python版本要求 | |------------|--------------| | ≥ 2.15.5 | 3.9-3.11 |

如果安装时出现版本不兼容错误,请检查Python版本是否符合要求。

Inventory配置详解

Inventory是Ansible管理的主机清单,在Kubespray中有特定的分组规则:

核心分组

  1. kube_node:运行Pod的工作节点
  2. kube_control_plane:运行控制平面组件(API Server等)的节点
  3. etcd:组成etcd集群的节点(建议至少3个保证高可用)

分组关系注意事项

  • 不要随意修改k8s_cluster的子组关系
  • 如果希望节点同时承担控制平面和工作节点角色,需同时加入kube_control_planekube_node
  • 如需独立不调度的工作节点,只需加入kube_control_plane

完整Inventory示例

node1 ansible_host=95.54.0.12 ip=10.3.0.1
node2 ansible_host=95.54.0.13 ip=10.3.0.2
node3 ansible_host=95.54.0.14 ip=10.3.0.3

[kube_control_plane]
node1
node2

[etcd]
node1
node2
node3

[kube_node]
node2
node3

[k8s_cluster:children]
kube_node
kube_control_plane

变量优先级与覆盖

Kubespray中变量定义有明确的优先级规则:

| 变量来源 | 说明 | |---------|------| | role默认值 | 最佳覆盖方式 | | inventory group_vars | 推荐在all.ymlk8s_cluster.yml中覆盖 | | 主机facts | Kubespray内部使用的状态标志 | | role和include变量 | 不推荐直接覆盖 | | 额外变量(-e) | 最高优先级,总是生效 |

常用Ansible标签

Kubespray定义了丰富的Ansible标签,用于精确控制执行流程:

核心组件标签

  • etcd:etcd集群配置
  • kube-apiserver:API Server配置
  • kubelet:Kubelet服务配置
  • network:网络插件配置

网络插件标签

  • calico:Calico网络插件
  • flannel:Flannel网络插件
  • cilium:Cilium网络插件

运行时标签

  • docker:Docker容器运行时
  • containerd:Containerd运行时
  • crio:CRI-O运行时

完整标签列表可通过scripts/gen_tags.sh脚本生成。

实用命令示例

仅执行DNS配置

ansible-playbook -i inventory/sample/hosts.ini cluster.yml \
    --tags preinstall,facts \
    --skip-tags=download,bootstrap-os

准备本地容器镜像

ansible-playbook -i inventory/sample/hosts.ini cluster.yml \
    -e download_run_once=true \
    -e download_localhost=true \
    --tags download \
    --skip-tags upload,upgrade

通过堡垒机访问

对于私有网络中的节点,可通过堡垒机进行访问:

[bastion]
bastion ansible_host=x.x.x.x

配置后,Ansible将通过堡垒机连接到内网节点执行操作。

注意事项

  1. 使用标签(--tags/--skip-tags)时需明确知道其影响范围
  2. Mitogen支持已被弃用,不建议使用
  3. Ansible 2.9后项目结构有变化,但Kubespray已做适配

通过本文介绍,您应该已经掌握了在Kubespray项目中有效使用Ansible的核心要点。合理利用这些知识,可以更灵活地部署和管理Kubernetes集群。

kubespray kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮静滢Annette

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值