本文中的脚本针对同地域的腾讯云服务器组建 Kubernetes 集群进行优化。腾讯云多地域请参考 腾讯云多地域组建 Kubernetes 集群,跨云多地域请参考 跨云多地域组建 Kubernetes 集群(k3s)。
多账号、CVM 、Lighthouse 混用,请先使用云联网打通内网
Lighthouse 是腾讯云推出的一款轻量应用服务器产品,它提供了高性价比、高可用性、高安全性和高灵活性的云端计算服务。具体信息参阅官方文档:轻量应用服务器概述。
为了部署 Kubernetes 集群,我们需要至少 2 台轻量应用服务器,并配置好相关的环境和依赖。购买步骤参见官方文档:快速创建 Linux 实例,操作系统选 Debian 或 Ubuntu 最新版本。
参考下面的列表在腾讯云控制台设置防火墙规则。若无需精细控制的,可以设置为允许所有节点间 TCP/UPD 协议的全部端口互访。
本文中将 k8s 默认的Node Port端口30000-32767
更改为了常用的5432-9876
,读者朋友也可以根据自己的情况重新定义,只要保持service-node-port-range
参数和防火墙放开的端口对应即可。
协议 | 端口 | 源 | 目标 | 描述 |
---|---|---|---|---|
TCP | 6443 | 子节点 | 主节点 | K8s API Server |
TCP | 10250 | 所有节点 | 所有节点 | Kubelet 指标收集 |
UDP | 8472 | 所有节点 | 所有节点 | Flannel vxlan |
TCP | 5432-9876 | 所有地址 | 所有节点 | 自定义 Node Port ,可选 |
UDP | 5432-9876 | 所有地址 | 所有节点 | 自定义 Node Port ,可选 |
TCP | 80,443 | 所有地址 | 所有节点 | Web 服务,可选 |
下面这段代码在主节点服务器上执行,注意替换SERVER_TOKEN
为一个不少于 32 个字母的随机字符串。
export SERVER_TOKEN=r83nui54eg8wihyiteshuo3o43gbf7u9er63o43gbf7uitujg8wihyitr6
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 \
--service-node-port-range 5432-9876
下面这段代码在子节点服务器上执行,注意替换SERVER_TOKEN
为和主节点相同的随机字符串,SERVER_IP
为主节点的内网 IP 地址(在主节点执行命令curl -Ls http://metadata.tencentyun.com/latest/meta-data/local-ipv4
即可获取)。
export SERVER_IP=10.0.12.6
export SERVER_TOKEN=r83nui54eg8wihyiteshuo3o43gbf7u9er63o43gbf7uitujg8wihyitr6
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
在主节点执行下面的命令,查看节点和容器状态
kubectl get node
kubectl top node
kubectl get pods -A