零成本!用Typhoon在AWS极速部署Fedora CoreOS Kubernetes集群

零成本!用Typhoon在AWS极速部署Fedora CoreOS Kubernetes集群

【免费下载链接】typhoon Minimal and free Kubernetes distribution with Terraform 【免费下载链接】typhoon 项目地址: https://gitcode.com/gh_mirrors/typ/typhoon

你还在为Kubernetes集群部署的复杂性和成本而烦恼吗?本文将带你一步到位,使用Poseidon/Typhoon在AWS上快速部署一个稳定、安全且免费的Fedora CoreOS Kubernetes集群。读完本文,你将掌握从环境准备到集群验证的全流程,以及后续的维护和优化技巧,让你的Kubernetes之旅事半功倍。

为什么选择Typhoon与Fedora CoreOS?

Typhoon是一个极简且免费的Kubernetes发行版,它提供了上游Kubernetes的稳定基础,结合声明式基础设施和配置,既尊重用户自由又保护隐私,非常适合实验室、数据中心和云环境使用。而Fedora CoreOS作为一款专为容器优化的操作系统,具有自动更新、轻量级和安全性高等特点,是构建Kubernetes集群的理想选择。

Typhoon的核心优势

  • 极简稳定:基于上游Kubernetes,提供稳定的集群基础
  • 声明式配置:使用Terraform管理基础设施,配置即代码
  • 完全免费:自由使用,无需支付许可费用
  • 安全可靠:内置RBAC、网络策略和SELinux强制模式

架构概览

mermaid

环境准备

前置要求

  • AWS账号及IAM凭证
  • AWS Route53 DNS区域(已注册域名或委托子域名)
  • Terraform v0.13.0+
  • SSH密钥对

安装Terraform

# 下载Terraform(以Linux为例)
wget https://releases.hashicorp.com/terraform/1.0.0/terraform_1.0.0_linux_amd64.zip
unzip terraform_1.0.0_linux_amd64.zip
sudo mv terraform /usr/local/bin/

# 验证安装
terraform version
# 应输出:Terraform v1.0.0

部署步骤

1. 配置AWS凭证

创建AWS凭证文件~/.aws/credentials

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

2. 创建Terraform配置

创建工作目录并初始化:

mkdir -p infra/clusters/aws
cd infra/clusters/aws

创建providers.tf文件:

provider "aws" {
  region                  = "eu-central-1"
  shared_credentials_file = "/home/user/.config/aws/credentials"
}

provider "ct" {}

terraform {
  required_providers {
    ct = {
      source  = "poseidon/ct"
      version = "0.13.0"
    }
    aws = {
      source  = "hashicorp/aws"
      version = "4.61.0"
    }
  }
}

创建main.tf文件,定义Kubernetes集群:

module "tempest" {
  source = "git::https://gitcode.com/gh_mirrors/typ/typhoon//aws/fedora-coreos/kubernetes?ref=v1.33.3"

  # AWS
  cluster_name = "tempest"
  dns_zone     = "aws.example.com"
  dns_zone_id  = "Z3PAABBCFAKEC0"

  # 实例配置
  worker_count = 2
  worker_type  = "t3.small"

  # 认证配置
  ssh_authorized_key = "ssh-ed25519 AAAAB3Nz..."
}

# 输出kubeconfig
resource "local_file" "kubeconfig" {
  content  = module.tempest.kubeconfig-admin
  filename = "/home/user/.kube/configs/tempest-config"
  file_permission = "0600"
}

3. 初始化Terraform

terraform init

4. 部署集群

# 检查执行计划
terraform plan

# 应用配置,创建集群
terraform apply

部署过程大约需要4-8分钟,Terraform将创建以下资源:

  • VPC、子网和互联网网关
  • 安全组规则
  • 控制器节点和工作节点
  • 网络负载均衡器
  • etcd集群和Kubernetes控制平面组件

网络与安全配置详解

网络架构

Typhoon在AWS上的网络架构采用VPC、公有子网和网络负载均衡器,确保高可用性和可扩展性。

mermaid

关键网络参数

参数描述默认值
host_cidrEC2实例IP地址范围10.0.0.0/16
pod_cidrKubernetes Pod IP地址范围10.20.0.0/14
service_cidrKubernetes Service IP地址范围10.3.0.0/16
networking网络插件选择cilium

安全组规则

控制器节点安全组主要规则:

协议端口来源描述
TCP220.0.0.0/0SSH访问
TCP64430.0.0.0/0Kubernetes API
TCP2379-2380自身etcd通信
UDP8472自身和工作节点VXLAN网络

工作节点安全组主要规则:

协议端口来源描述
TCP220.0.0.0/0SSH访问
TCP800.0.0.0/0HTTP ingress
TCP4430.0.0.0/0HTTPS ingress
UDP8472自身和控制器节点VXLAN网络

集群验证

配置kubectl

export KUBECONFIG=/home/user/.kube/configs/tempest-config

检查节点状态

kubectl get nodes

预期输出:

NAME           STATUS  ROLES    AGE  VERSION
ip-10-0-3-155  Ready   <none>   10m  v1.33.3
ip-10-0-26-65  Ready   <none>   10m  v1.33.3
ip-10-0-41-21  Ready   <none>   10m  v1.33.3

检查系统组件

kubectl get pods -n kube-system

预期输出应包含运行中的coredns、cilium或flannel、kube-proxy等Pod。

检查集群信息

kubectl cluster-info

预期输出:

Kubernetes control plane is running at https://tempest.aws.example.com:6443
CoreDNS is running at https://tempest.aws.example.com:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy

高级配置选项

自定义工作节点

可以通过修改Terraform变量来自定义工作节点配置:

module "tempest" {
  # ... 其他配置 ...

  # 工作节点数量
  worker_count = 3
  
  # 实例类型
  worker_type = "t3.medium"
  
  # 磁盘大小
  worker_disk_size = 50
  
  # 使用Spot实例节省成本
  worker_price = "0.03"
  
  # 添加节点标签
  worker_node_labels = ["environment=production", "workload=app"]
}

网络插件选择

Typhoon支持Cilium和Flannel两种网络插件,默认使用Cilium:

module "tempest" {
  # ... 其他配置 ...
  
  # 切换到Flannel网络
  networking = "flannel"
}

Cilium vs Flannel对比:

特性CiliumFlannel
网络策略支持不支持
负载均衡内置不支持
监控能力丰富基础
资源占用较高较低
学习曲线较陡平缓

添加Butane配置片段

通过Butane配置片段可以自定义节点系统配置:

module "tempest" {
  # ... 其他配置 ...
  
  # 控制器节点配置片段
  controller_snippets = [
    file("butane/controller-custom.yaml")
  ]
  
  # 工作节点配置片段
  worker_snippets = [
    file("butane/worker-custom.yaml")
  ]
}

示例butane/worker-custom.yaml

variant: fcos
version: 1.5.0
storage:
  files:
    - path: /etc/sysctl.d/custom.conf
      contents:
        inline: |
          net.ipv4.ip_forward=1
          net.ipv6.conf.all.forwarding=1

集群维护

升级集群版本

Typhoon推荐使用蓝绿部署策略升级集群:

  1. 部署新集群(使用新版本Typhoon模块)
  2. 迁移工作负载
  3. 验证新集群
  4. 下线旧集群
# 新版本集群配置
module "tempest_v2" {
  source = "git::https://gitcode.com/gh_mirrors/typ/typhoon//aws/fedora-coreos/kubernetes?ref=v1.34.0"
  
  # ... 其他配置 ...
}

扩展工作节点

通过修改worker_count变量并应用配置来扩展工作节点:

module "tempest" {
  # ... 其他配置 ...
  
  # 增加工作节点数量
  worker_count = 4
}

应用变更:

terraform apply

AWS会自动执行实例刷新,逐步替换工作节点。

备份etcd数据

定期备份etcd数据是确保集群可恢复性的重要措施:

# 获取etcd证书
sudo cp /etc/kubernetes/pki/etcd/ca.crt /tmp/
sudo cp /etc/kubernetes/pki/apiserver-etcd-client.crt /tmp/
sudo cp /etc/kubernetes/pki/apiserver-etcd-client.key /tmp/

# 执行备份
sudo ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  --cacert=/tmp/ca.crt \
  --cert=/tmp/apiserver-etcd-client.crt \
  --key=/tmp/apiserver-etcd-client.key \
  snapshot save /backup/etcd-snapshot-$(date +%Y%m%d).db

常见问题解决

节点无法加入集群

检查以下几点:

  1. 安全组规则是否允许节点间通信
  2. 网络负载均衡器是否正常工作
  3. 节点是否有权限访问AWS API

etcd集群健康检查

kubectl -n kube-system exec -it etcd-<controller-node> -- etcdctl \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key \
  endpoint health

增加SSH调试日志

如果遇到SSH相关问题,可以增加调试日志:

TF_LOG=DEBUG terraform apply

总结与展望

通过本文,你已经掌握了使用Typhoon在AWS上部署Fedora CoreOS Kubernetes集群的完整流程。Typhoon提供了一个稳定、安全且易于维护的Kubernetes发行版,结合Fedora CoreOS的自动更新特性,可以大大减少集群的日常维护工作量。

未来,你可以进一步探索:

  • 部署Ingress控制器以暴露应用服务
  • 集成Prometheus和Grafana进行监控
  • 配置自动扩缩容以应对负载变化
  • 实现CI/CD流水线自动化部署应用

希望本文对你的Kubernetes之旅有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。别忘了点赞、收藏并关注我们,获取更多Kubernetes相关教程和最佳实践。

下期预告:使用Typhoon在GCP上部署高可用Kubernetes集群

【免费下载链接】typhoon Minimal and free Kubernetes distribution with Terraform 【免费下载链接】typhoon 项目地址: https://gitcode.com/gh_mirrors/typ/typhoon

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

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

抵扣说明:

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

余额充值