腾讯云Lighthouse组建跨地域Kubernetes集群

腾讯云轻量服务器3周年刚过,买买买完后,发现手里又多了好几台轻量服务器,拿来干什么还没想好,那就先来个"分布式吃灰"吧。

环境要求

  • 所有节点须为全新安装的Debian11/12Ubuntu22.04操作系统
  • 脚本使用了腾讯云的metadata获取IP,所有节点部署在腾讯云上不同的地域(CVM、Lighthouse均可)

跨云集群请参考本站另一篇文章:跨云多地域组建Kubernetes集群(k3s)

使用的组件

  • K3s 一个轻量级的Kubernetes发行版,专为生产环境而设计
  • Flannel 一个虚拟网络层,用于为容器化工作负载创建网络隔离和通信
  • WireGuard 一种轻量级、高性能、安全的虚拟专用网络(VPN)协议,旨在提供安全的通信
  • Flannel-WireGuard Flannel网络插件的一种后端,使用WireGuard加密和隧道技术来保护网络通信

购买并配置Lighthouse服务器

Lighthouse是腾讯云推出的一款轻量应用服务器产品,它提供了高性价比、高可用性、高安全性和高灵活性的云端计算服务。具体信息参阅官方文档:轻量应用服务器概述

为了部署Kubernetes集群,我们需要至少2台轻量应用服务器,并配置好相关的环境和依赖。购买步骤参见官方文档:快速创建 Linux 实例操作系统选Debian或Ubuntu最新版本

在腾讯云控制台设置防火墙

参考下面的列表在腾讯云控制台设置防火墙规则。若无需精细控制的,可以设置为允许所有节点间TCP/UPD协议的全部端口互访。

协议 端口 目标 描述
TCP 6443 子节点 主节点 Kubernetes API Server
TCP 10250 所有节点 所有节点 Kubelet 指标收集
UDP 51820 所有节点 所有节点 Flannel WireGuard
TCP 5432-9876 所有地址 所有节点 自定义的 Node Port
TCP 80,443 所有地址 所有节点 Web 服务才需要

部署K3S主节点

下面这段代码在主节点 服务器上执行,注意替换SERVER_TOKEN为一个不少于32个字母的随机字符串。

shell 复制代码
apt update
apt install -y wireguard

echo "net.ipv4.ip_forward = 1" >/etc/sysctl.d/ip_forward.conf
sysctl -p /etc/sysctl.d/ip_forward.conf

export SERVER_TOKEN=r83nui54eg8wihyiteshuo3o43gbf7u9er63o43gbf7uitujg8wihyitr6

export PUBLIC_IP=$(curl -Ls http://metadata.tencentyun.com/latest/meta-data/public-ipv4)
export PRIVATE_IP=$(curl -Ls http://metadata.tencentyun.com/latest/meta-data/local-ipv4)

export INSTALL_K3S_SKIP_DOWNLOAD=true
export DOWNLOAD_K3S_BIN_URL=https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s

if [ $(curl -Ls http://ipip.rehi.org/country_code) == "CN" ]; then
   DOWNLOAD_K3S_BIN_URL=https://ghproxy.com/${DOWNLOAD_K3S_BIN_URL}
fi

curl -Lo /usr/local/bin/k3s $DOWNLOAD_K3S_BIN_URL
chmod a+x /usr/local/bin/k3s

curl -Ls https://get.k3s.io | sh -s - server \
    --cluster-init \
    --token $SERVER_TOKEN \
    --node-ip $PRIVATE_IP \
    --node-external-ip $PUBLIC_IP \
    --advertise-address $PRIVATE_IP \
    --service-node-port-range 5432-9876 \
    --flannel-backend wireguard-native \
    --flannel-external-ip

部署K3S子节点

下面这段代码在子节点服务器上执行,注意替换SERVER_TOKEN为和主节点相同的随机字符串,SERVER_IP为主节点的公网IP地址(在主节点执行命令curl -Ls http://metadata.tencentyun.com/latest/meta-data/public-ipv4即可获取)。

shell 复制代码
apt update
apt install -y wireguard

echo "net.ipv4.ip_forward = 1" >/etc/sysctl.d/ip_forward.conf
sysctl -p /etc/sysctl.d/ip_forward.conf

export SERVER_IP=43.129.195.33
export SERVER_TOKEN=r83nui54eg8wihyiteshuo3o43gbf7u9er63o43gbf7uitujg8wihyitr6

export PUBLIC_IP=$(curl -Ls http://metadata.tencentyun.com/latest/meta-data/public-ipv4)
export PRIVATE_IP=$(curl -Ls http://metadata.tencentyun.com/latest/meta-data/local-ipv4)

export INSTALL_K3S_SKIP_DOWNLOAD=true
export DOWNLOAD_K3S_BIN_URL=https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s

if [ $(curl -Ls http://ipip.rehi.org/country_code) == "CN" ]; then
   DOWNLOAD_K3S_BIN_URL=https://ghproxy.com/${DOWNLOAD_K3S_BIN_URL}
fi

curl -Lo /usr/local/bin/k3s $DOWNLOAD_K3S_BIN_URL
chmod a+x /usr/local/bin/k3s

curl -Ls https://get.k3s.io | sh -s - agent \
    --server https://$SERVER_IP:6443 \
    --token $SERVER_TOKEN \
    --node-ip $PRIVATE_IP \
    --node-external-ip $PUBLIC_IP

验证集群

shell 复制代码
kubectl get node
kubectl top node

kubectl get pods -A

须知 :本文同步自若海の技术写真,如有错漏请到原文下留言反馈。

相关推荐
丈剑走天涯5 小时前
kubernetes Jenkins 二进制安装指南
java·kubernetes·jenkins
roman_日积跬步-终至千里6 小时前
【k8s 实战】使用 Helm 在 Minikube 部署 StarRocks(实战避坑指南)
云原生·容器·kubernetes
IT枫斗者6 小时前
CentOS 7 一键部署 K8s 1.23 + Rancher 2.7 完整指南
java·linux·spring boot·后端·kubernetes·centos·rancher
Q鑫6 小时前
K8s之pod解析与调度策略
docker·容器·kubernetes
数据智能老司机15 小时前
Kubernetes 上的生成式 AI——模型定制化
kubernetes·llm
数据智能老司机2 天前
Kubernetes 上的生成式 AI——模型数据
kubernetes·llm·agent
数据智能老司机2 天前
Kubernetes 上的生成式 AI——部署模型
kubernetes·aigc
Java陈序员3 天前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
Johny_Zhao4 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
可观测性用观测云7 天前
云原生网关 Ingress-Nginx 链路追踪实战:OpenTelemetry 采集与观测云集成方案
nginx·kubernetes