Rancher/k3d 配置文件使用完全指南

Rancher/k3d 配置文件使用完全指南

k3d k3d 项目地址: https://gitcode.com/gh_mirrors/k3d/k3d

前言

在现代容器化开发环境中,Kubernetes集群的快速部署和管理变得尤为重要。Rancher/k3d作为轻量级Kubernetes发行版k3s的Docker封装工具,为开发者提供了便捷的本地开发环境搭建方案。随着k3d v4.0.0版本的发布,配置文件的引入使得集群管理更加灵活和可维护。

配置文件基础概念

配置文件优势

相比传统的命令行参数方式,使用配置文件具有以下显著优势:

  1. 版本控制友好:YAML文件可以轻松纳入版本控制系统
  2. 可复用性:同一配置文件可重复用于创建相似集群
  3. 可读性强:结构化展示所有配置参数
  4. 参数完整性:避免遗漏重要配置项

基本结构要求

k3d配置文件必须包含两个基本字段:

apiVersion: k3d.io/v1alpha5  # 当前配置文件版本
kind: Simple                 # 配置文件类型

这是最小化的有效配置文件,虽然它实际上不配置任何具体参数。

配置文件详解

核心配置项

集群基础配置
metadata:
  name: mycluster  # 集群名称(自动添加k3d-前缀)
servers: 1         # 控制平面节点数量
agents: 2          # 工作节点数量
image: rancher/k3s:v1.20.4-k3s1  # 使用的k3s镜像
网络配置
network: my-custom-net  # 自定义Docker网络
subnet: "172.28.0.0/16" # 指定子网范围
Kubernetes API配置
kubeAPI:
  host: "myhost.my.domain"  # API服务器地址
  hostIP: "127.0.0.1"       # 监听IP
  hostPort: "6445"          # 映射端口

高级配置项

存储卷映射
volumes:
  - volume: /my/host/path:/path/in/node
    nodeFilters:
      - server:0    # 应用到server0节点
      - agent:*     # 应用到所有agent节点
端口转发
ports:
  - port: 8080:80
    nodeFilters:
      - loadbalancer  # 应用到负载均衡器
环境变量
env:
  - envVar: bar=baz
    nodeFilters:
      - server:0  # 仅应用到server0节点

注册表配置

k3d支持多种注册表配置方式:

registries:
  create:  # 创建本地注册表
    name: registry.localhost
    hostPort: "5000"
    proxy:  # 配置为代理缓存
      remoteURL: https://registry-1.docker.io
  use:     # 使用现有注册表
    - k3d-myotherregistry:5000

最佳实践

配置优先级理解

k3d遵循以下配置优先级(从高到低):

  1. 命令行参数
  2. 环境变量
  3. 配置文件
  4. 默认值

这意味着您可以通过命令行参数覆盖配置文件中的设置。

环境变量扩展

配置文件支持环境变量扩展,例如:

volumes:
  - volume: ${HOME}/k3d-data:/data

验证配置文件

建议使用支持JSON Schema的编辑器编写配置文件,以获得自动补全和验证功能。k3d提供的Schema可以确保配置的正确性。

典型应用场景

开发环境配置示例

apiVersion: k3d.io/v1alpha5
kind: Simple
metadata:
  name: dev-cluster
servers: 1
agents: 2
ports:
  - port: 8080:80
    nodeFilters:
      - loadbalancer
volumes:
  - volume: ./k8s-manifests:/var/lib/rancher/k3s/server/manifests
    nodeFilters:
      - server:0
options:
  k3d:
    wait: true
    timeout: "60s"

生产模拟配置示例

apiVersion: k3d.io/v1alpha5
kind: Simple
metadata:
  name: prod-sim
servers: 3  # 高可用控制平面
agents: 5   # 多个工作节点
kubeAPI:
  host: "k3d-prod.local"
  hostPort: "6443"
registries:
  create:
    name: registry.prod.local
    volumes:
      - /mnt/registry-data:/var/lib/registry
options:
  k3s:
    extraArgs:
      - arg: "--tls-san=k3d-prod.local"
        nodeFilters:
          - server:*

常见问题解答

Q:配置文件与命令行参数可以混用吗? A:可以,命令行参数会覆盖配置文件中的对应设置。

Q:如何查看所有可用的配置选项? A:目前最可靠的方式是参考示例配置文件或JSON Schema定义。

Q:配置文件支持注释吗? A:支持,YAML格式的注释以#开头。

通过合理使用k3d配置文件,您可以实现Kubernetes集群的声明式管理,大大提高工作效率和配置的可维护性。随着k3d的发展,配置文件功能将会更加完善和稳定。

k3d k3d 项目地址: https://gitcode.com/gh_mirrors/k3d/k3d

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

### 不同Rancher镜像版本间的差异 #### Rancher Server 镜像 Rancher Server 是整个平台的核心组件,负责管理和编排Kubernetes集群。此镜像包含了运行Rancher管理控制台所需的所有服务和支持工具。它通常部署在一个独立的服务器或容器环境中,并作为入口点来配置和监控其他Kubernetes工作负载。 对于特定版本如v2.x系列,在安装过程中可以选择高可用模式(HA),通过外部数据库和其他冗余机制提高系统的稳定性和容错能力[^1]。 #### Rancher Agent (rancher/rancher) 镜像 相比之下,“`rancher/rancher`”这个名称实际上指的是用于启动代理程序(agent)的Docker镜像,这些代理被用来加入新的节点到由Rancher管理下的Kubernetes集群中去。该镜像内含必要的二进制文件以及脚本,使得目标机器能够注册成为worker node或者etcd member等角色的一部分[^2]. 两者的主要区别在于功能定位和服务范围: - **用途不同**: `rancher/server` 主要提供Web UI界面及API接口供管理员操作;而 `rancher/rancher` 则侧重于协助构建分布式架构内的各个组成部分。 - **依赖关系有别**: 前者可能需要额外设置诸如MySQL之类的持久化存储解决方案以实现数据保存;后者则更多关注如何无缝集成至已有的基础设施当中。 ```bash # 下载并导入离线环境所需的全部镜像包 mkdir -p /var/lib/rancher/k3s/agent/images/ wget https://github.com/k3s-io/k3s/releases/download/v1.30.0+k3s1/k3s-airgap-images-amd64.tar.gz ctr i import k3s-airgap-images-amd64.tar.gz ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

温宝沫Morgan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值