Skip to content

Conversation

@xgopilot
Copy link
Contributor

@xgopilot xgopilot bot commented Nov 24, 2025

Requested by @zhangzqs

本 PR 实现了一键部署 Kubernetes 集群的 Terraform 模块。

变更摘要

新增 k8s/simple 模块,用于在七牛云上快速部署 Kubernetes 集群。

功能特性

  • 自动化部署: 一键创建 K8s 集群(1 Master + N Workers)
  • 版本可配置: 支持指定 Kubernetes 版本(默认 1.28.0)
  • CNI 插件选择: 支持 Flannel、Calico、Weave 三种 CNI
  • 网络可配置: 可自定义 Pod 和 Service 网络 CIDR
  • 安全性: 自动生成 bootstrap token 和实例密码
  • 高可用性: 使用置放组确保节点分散部署
  • 完整输出: 提供集群端点、节点 IP、认证信息等输出

模块结构

k8s/
├── README.md                    # 详细使用文档
├── common/                      # 共享配置
│   ├── common_variables.tf      # 通用变量
│   ├── common_versions.tf       # Provider 版本
│   └── image_data.tf            # 镜像数据
└── simple/                      # 单 Master 集群
    ├── main.tf                  # 主配置
    ├── data.tf                  # 数据源和 locals
    ├── k8s_variables.tf         # K8s 特定变量
    ├── outputs.tf               # 输出配置
    ├── init_master.sh           # Master 初始化脚本
    ├── init_worker.sh           # Worker 初始化脚本
    └── *.tf -> ../common/       # 符号链接

使用示例

module "k8s_cluster" {
  source = "./k8s/simple"

  instance_type            = "ecs.t1.c2m4"
  instance_system_disk_size = 40
  worker_count             = 2
  k8s_version              = "1.28.0"
  cni_plugin               = "flannel"
}

output "master_ip" {
  value = module.k8s_cluster.k8s_master_ip
}

技术实现

  1. 仅使用现有资源: 完全基于仓库中已有的 qiniu_compute_* 资源
  2. 遵循现有模式: 模块结构与 MySQL 模块保持一致
  3. 自动化初始化: 通过 user_data 脚本实现节点自动初始化
  4. 智能依赖: Worker 节点等待 Master 就绪后再加入集群

最小配置要求

  • Master 节点: 至少 2C4G(ecs.t1.c2m4)
  • Worker 节点: 至少 2C4G(ecs.t1.c2m4)
  • 系统盘: 至少 20GB(推荐 40GB)

文档

详细的使用文档、配置说明、故障排查指南请查看 k8s/README.md

测试说明

由于需要实际的七牛云账号和凭证,本 PR 仅包含模板代码。建议在合并前进行以下测试:

  1. ✅ Terraform 语法检查(已通过本地验证)
  2. ⚠️ 实际部署测试(需要云账号凭证)
  3. ⚠️ 多种配置组合测试

关联 Issue

Closes #7

- 创建 k8s/simple 模块,支持单 Master + 多 Worker 部署
- 支持自定义 K8s 版本、Worker 数量、网络 CIDR
- 支持 Flannel、Calico、Weave 三种 CNI 插件
- 自动生成 bootstrap token 和实例密码
- 使用置放组确保节点分散部署
- 提供完整的集群信息输出和 kubeconfig 获取方式
- 包含详细的使用文档和故障排查指南

仅使用仓库中已有的 qiniu_compute_* 资源

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: zhangzqs <34616640+zhangzqs@users.noreply.github.com>
@xgopilot xgopilot bot mentioned this pull request Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

一键创建k8s集群

2 participants