K3S 是一个轻量级的 Kubernetes 发行版,适合在资源受限的环境中部署。本文将详细介绍如何在多节点环境中部署 K3S,包括服务器和节点的配置、网络设置、Ingress 部署及调试方法。无论你是 K3S 新手还是资深用户,这份指南都能帮助你顺利搭建高效的 K3S 集群。
以下是 K3S 多节点集群的环境准备表格,包括节点名称、子网、IP 地址及弹性 IP 绑定信息:
节点名称 | 子网 | IP 地址 | 备注 |
---|---|---|---|
K3S Server | 私有子网 | 172.31.23.155 | 主要控制节点,管理集群 |
K3S Node1 | 私有子网 | 172.31.9.76 | 常规工作节点 |
K3S Node2 | 公开子网 | 172.31.9.75 | 专用节点,用于处理外部流量 |
为确保集群在重建或灾难恢复时的快速恢复,并避免由于 IP 更换导致的 DNS 缓存问题,建议为 K3S Node2
(Ingress 节点)配置弹性 IP。弹性 IP 的使用可以确保外部访问不会因为节点 IP 的变化而中断服务。
K3S Node2
,确保其 IP 地址在任何重新启动或重建情况下保持IP地址不变。K3S 集群的网络配置至关重要,尤其是在涉及到 Ingress 控制器时。以下是网络配置的关键点:
使用以下命令部署 K3S Server:
curl -sfL https://get.k3s.io | sh -s - --disable=traefik,servicelb --data-dir=/opt/rancher/k3s --kube-apiserver-arg service-node-port-range=0-50000 --bind-address=0.0.0.0 --tls-san=172.31.23.155 --advertise-address=172.31.23.155 --node-external-ip=172.31.23.155
解释:
--disable=traefik,servicelb:禁用默认的 Traefik 和 Service LoadBalancer。
--data-dir=/opt/rancher/k3s:指定 K3S 数据目录。
--kube-apiserver-arg service-node-port-range=0-50000:设置 NodePort 服务范围。
--bind-address=0.0.0.0:监听所有网络接口。
--tls-san 和 --advertise-address:设置 TLS SAN 和广告地址。
在部署 K3S Agent 节点时,需要满足以下关键前提条件:
在 集群中 Agent 节点负责在集群中执行实际的工作负载任务,包括应用容器和服务。节点可以根据其角色和功能被划分为不同的类型,根据节点的具体角色,例如常规节点和专属节点,每种类型的配置和功能略有不同。
curl -sfL https://get.k3s.io | K3S_URL=<Server_URL> K3S_TOKEN=<Server_TOKEN> INSTALL_K3S_EXEC="--node-label genernal=true --node-ip=172.31.9.76 --node-external-ip=172.31.9.76" sh -
说明:
--node-label genernal=true:为节点添加标签,标识该节点为常规工作节点。标签用于在调度 Pods 时进行选择和过滤。
--node-ip 172.31.9.76 和 --node-external-ip 172.31.9.76:指定节点的内部和外部 IP 地址,确保网络流量能够正确路由到该节点。
curl -sfL https://get.k3s.io | K3S_URL=<Server_URL> K3S_TOKEN=<Server_TOKEN>
INSTALL_K3S_EXEC="--node-label ingress=true --node-taint key1=ingress:NoExecute --node-ip=172.31.9.75 --node-external-ip=172.31.9.75" sh -
说明: 专属节点的主要区别就是应用 Taint --node-taint key1=ingress
以便只有标记为 ingress 的 Pods 可以调度到该节点。Taint 确保了该节点只用于处理特定任务,例如 Ingress 流量。
在 K3S 集群中,不同类型的节点可以从以下三个维度进行区分:安全性、可靠性 和 成本控制。
维度/节点类型 | 常规节点 | 专属节点 |
---|---|---|
安全性 | 部署在私有子网中,减少对外暴露,降低安全风险。 | 部署在公开子网中,设置 Taint 限制调度,仅处理指定类型的 Pods。通过专门的入口点管理外部流量,进一步提高集群的安全性。 |
可靠性 | 作为集群的计算节点,处理应用任务。由于在私有子网中,主要处理内部流量,与外部流量隔离,确保集群的稳定性。 | 部署在公开子网中,通过隔离流量,减少对常规节点的负担,提高系统的整体可靠性。 |
成本控制 | 根据业务负载选择性能较高的实例,部署在私有子网中,处理核心业务。 | 根据流量负载选择实例类型,部署在公开子网中,根据实际需求进行扩展,避免不必要的资源浪费。 |
确保 Ingress 控制器在公开子网节点上运行,以处理外部流量。配置 Ingress Pod 以适应以下要求:
tolerations:
- key: "key1"
operator: "Equal"
value: "ingress"
effect: "NoExecute"
集群部署的健康状态和功能:
在遇到问题时,可以通过以下步骤进行调试:
通过遵循上述步骤和注意事项,你将能够成功部署和管理 K3S 多节点集群,确保高效的服务运行和流量处理,可以使用以下最小资源配置来模拟生产集群的形态
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。