Kubespray 核心变量配置详解

Kubespray 核心变量配置详解

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

前言

Kubespray 是一个基于 Ansible 的 Kubernetes 集群部署工具,它通过大量的变量配置来实现集群部署的灵活性和可定制性。本文将深入解析 Kubespray 中的关键配置变量,帮助用户理解如何根据实际需求调整集群部署参数。

基础配置变量

通用 Ansible 变量

Kubespray 基于 Ansible 实现,因此支持所有标准的 Ansible 变量:

  • ansible_user:用于 SSH 连接的用户名
  • ansible_default_ipv4.address:Ansible 自动选择的主机 IP 地址,基于 ip -4 route get 8.8.8.8 命令输出生成

组件版本控制

Kubespray 允许精确控制各个核心组件的版本:

calico_version: "v3.24.1"  # Calico 网络插件版本
calico_cni_version: "v3.24.1"  # Calico CNI 插件版本
docker_version: "20.10"  # Docker 版本(需为字符串)
containerd_version: "1.6.8"  # containerd 运行时版本
etcd_version: "v3.5.4"  # etcd 分布式存储版本
kube_version: "v1.25.5"  # Kubernetes 版本

网络配置详解

网络插件配置

Kubespray 默认使用 Calico 作为网络插件,支持多种封装模式:

kube_network_plugin: calico  # 可选值:calico、flannel、weave等
calico_ipip_mode: Never  # IPIP 封装模式:Never/Always/CrossSubnet
calico_vxlan_mode: Always  # VXLAN 封装模式:Never/Always/CrossSubnet
calico_network_backend: vxlan  # 网络后端:none/bird/vxlan
kube_proxy_mode: ipvs  # 代理模式:iptables/ipvs/nftables

IP 地址配置

Kubespray 支持多种 IP 地址配置方式,适用于复杂网络环境:

ip: 192.168.1.100  # 服务绑定IP(通常为公网IP)
access_ip: 10.0.0.100  # 其他节点访问本节点的IP(通常为内网IP)
ip6: 2001:db8::1  # IPv6服务绑定IP
access_ip6: fd00::1  # IPv6内部访问IP

ipaccess_ip 未定义时,将自动使用 ansible_default_ipv4.address

集群核心参数

基础集群配置

cluster_name: my-cluster  # 集群名称(默认cluster.local)
container_manager: containerd  # 容器运行时:containerd/docker/crio
dns_domain: cluster.local  # 集群DNS域名

网络地址规划

kube_service_addresses: 10.233.0.0/18  # Service CIDR
kube_pods_subnet: 10.233.64.0/18  # Pod CIDR
kube_network_node_prefix: 24  # 每个节点的Pod子网前缀长度

重要提示:Service CIDR 和 Pod CIDR 不能重叠!

双栈网络配置

Kubespray 支持 IPv4/IPv6 双栈网络:

ipv4_stack: true  # 启用IPv4(默认true)
ipv6_stack: false  # 启用IPv6(默认false)

双栈模式下,IPv4 具有更高优先级。也可以配置纯 IPv6 集群。

高级功能配置

特性门控

Kubernetes 的 alpha/experimental 功能可通过特性门控启用:

kube_feature_gates:
  - "RotateKubeletServerCertificate=true"
  - "TTLAfterFinished=true"

可以针对不同组件单独配置:

kube_apiserver_feature_gates:
  - "ServiceAccountIssuerDiscovery=true"
kubelet_feature_gates:
  - "DevicePlugins=true"

认证授权配置

authorization_modes: ["Node", "RBAC"]  # 默认启用Node和RBAC

准入控制

可以配置 EventRateLimit 等准入控制器:

kube_apiserver_admission_event_rate_limits:
  limit_1:
    type: Namespace
    qps: 50
    burst: 100
    cache_size: 2000

系统优化配置

Kubelet 调优

kubelet_rotate_certificates: true  # 自动轮换客户端证书
kubelet_rotate_server_certificates: true  # 自动轮换服务端证书
kubelet_image_gc_high_threshold: 85  # 镜像垃圾回收高水位线
kubelet_image_gc_low_threshold: 80  # 镜像垃圾回收低水位线
kubelet_max_parallel_image_pulls: 5  # 并行拉取镜像数

CPU 和 NUMA 管理

kubelet_cpu_manager_policy: static  # CPU管理策略
kubelet_topology_manager_policy: single-numa-node  # NUMA拓扑策略
kubelet_topology_manager_scope: pod  # 资源对齐范围

安全加固

系统级安全

kubelet_systemd_hardening: true  # 启用systemd安全加固
preinstall_selinux_state: enforcing  # SELinux模式:permissive/enforcing/disabled

网络代理配置

http_proxy: "http://proxy.example.com:8080"
https_proxy: "https://proxy.example.com:8080"
no_proxy: "localhost,127.0.0.1,.cluster.local"

最佳实践建议

  1. 版本控制:生产环境应明确指定所有关键组件版本
  2. 网络规划:提前规划好Service和Pod的CIDR,避免与现有网络冲突
  3. 资源预留:为系统组件预留足够的CPU和内存资源
  4. 安全配置:生产环境应启用RBAC和网络策略
  5. 监控考量:根据集群规模调整监控组件资源配置

通过合理配置这些变量,Kubespray 可以满足从开发测试到生产环境的各种 Kubernetes 集群部署需求。建议在正式部署前,先在测试环境中验证配置方案。

kubespray 一个基于Ansible的Kubernetes集群部署工具,提供自动化部署、集群管理等功能。 - 功能:Kubernetes集群部署、节点管理、容器管理、存储管理、网络管理等。 - 特点:基于Ansible;支持多种Kubernetes版本;支持离线安装;易于上手。 kubespray 项目地址: https://gitcode.com/gh_mirrors/ku/kubespray

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

农爱宜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值