google云部署 k3s 集群
google云部署 k3s 集群

背景与核心痛点:对于需要在海外云厂商部署轻量化微服务与 CI/CD 流水线的开发者而言,标准版 Kubernetes 动辄占用数 GB 内存且组件繁杂。在 Google Cloud Platform (GCP) 实例上部署轻量级 K3s(内存开销仅为原生 K8s 的一半、单二进制文件全内置),结合 cert-manager 自动申请 Let's Encrypt 证书及自托管 GitLab Runner,是兼具极低成本与生产级可用性的经典云原生集群方案。
目录
- K3s 轻量级架构与适用场景
- GCP 计算实例准备与内核网络调优
- 部署 K3s Server 核心控制节点
- 添加 K3s Agent 工作节点
- 部署 cert-manager 与 ACME 生产级证书签发
- 集成 GitLab Runner 实现云原生自动化交付
K3s 轻量级架构与适用场景
K3s 是经 CNCF 一致性认证的高可用轻量化 Kubernetes 发行版:
- 极致轻量:单个二进制文件小于 100MB,内存占用仅需传统 K8s 的 50%。
- 核心组件内置:默认集成 Flannel CNI、CoreDNS、Traefik Ingress Controller、Kine 与 SQLite/嵌入式 etcd。
- 理想场景:边缘计算节点、CI/CD 动态构建器、中小型团队独立出海业务集群。
GCP 计算实例准备与内核网络调优
在 GCP Compute Engine 中创建 1 台 Master 实例与多台 Agent 实例(建议至少 2vCPU / 4GB 内存):
1. 规范节点主机名
在各节点分别设置专属主机名:
# Server 控制节点
hostnamectl set-hostname k3s-master
# Agent 工作节点
hostnamectl set-hostname k3s-node1
2. 开启内核 IPv4 转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p
部署 K3s Server 核心控制节点
在 Master 节点上执行快速部署脚本:
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 600
获取集群加入凭据
读取 Worker 节点加入集群所必需的 Token:
sudo cat /var/lib/rancher/k3s/server/node-token
添加 K3s Agent 工作节点
在各个 Worker 节点执行加入脚本,传入 Server 节点内网/公网 IP 与 Token:
curl -sfL https://get.k3s.io | K3S_URL=https://<MASTER_IP>:6443 K3S_TOKEN=<NODE_TOKEN> sh -
在 Master 节点执行 kubectl get nodes,所有节点全部呈 Ready 状态即表示集群组网成功。
部署 cert-manager 与 ACME 生产级证书签发
使用 Helm 在集群中部署 cert-manager 实现 HTTPS 证书自动化:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.14.4 --set installCRDs=true
创建 Let's Encrypt ClusterIssuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@yourdomain.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
ingressClassName: traefik
集成 GitLab Runner 实现云原生自动化交付
- 安装二进制包:下载匹配架构的 gitlab-runner 并注册为系统服务。
- 集群权限授权:将 gitlab-runner 用户加入集群访问用户组,允许其读取
k3s.yaml并执行 Helm 发布。 - 镜像仓库凭证注入:配置 Docker auths 允许 Runner 容器拉取私有 Registry 镜像。
- CI/CD 流水线联动:在
.gitlab-ci.yml中直接调用helm upgrade --install将新镜像自动滚动发布至 K3s 集群。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 zszweb
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果