在线教育平台青椒课堂:使用 KubeSphere+QKE 轻松实现容器多集群管理

本文介绍了青椒课堂如何使用 KubeSphere 和 QingCloud QKE 实现容器多集群管理,从背景、选型思路到具体实践,包括应用部署、统一认证、开发生产环境迁移、弹性扩容等方面,展示了 KubeSphere 在简化 Kubernetes 管理上的优势。

作者 | 卢兴民 红亚科技CTO

背景

青椒课堂是红亚科技推出的理实一体化授课平台,面向信息技术类专业提供教学实训服务。随着项目的迭代,从单体应用演化成为主站 + 资源调度服务(多可用区/客户混合部署)的架构。

在完全使用 KubeSphere 之前,由于我们的副本只在北京有一个集群,所以没有考虑用一个更方便的形式去部署多个集群,当时项目使用可视化 PAAS 平台来进行应用管理,这种形式极大地降低了团队接触上手 Kubernetes 的门槛,使得团队可以快速上手使用容器平台,但随着业务使用的深入,尤其是应用定义、应用配置变更较为繁琐,导致问题频出。

目前项目从开发到生产已经全量使用 Kubernetes,并使用 KubeSphere 进行管理。项目上线周期在一周一次左右的频率,开发环境进行了自动 CD 触发,每天进行数十次的发布和更新。

为什么使用 KubeSphere(QKE) ?

选型思路

对于中小型团队来说,在选择基础设施上,可以尽量使用第三方提供的成熟系统,避免自建。例如 Git 仓库、CI 服务、制品库、部署系统均使用第三方服务,Kubernetes 也尽量使用厂商提供的托管 K8s,避免采坑;日志、监控报警等系统也是如此(使用 aliyun sls、aliyun arms)。个人认为中小型企业在这方面投入过多并没有太大的实际意义,专注于业务即可。

在选择平台的过程中主要有以下几点考虑:

  • 不被某个云服务商所绑定

  • 开源解决方案

  • 可以接受能力范围内的商业化订阅(服务支持付费)

  • 部署难度低

  • 统一认证

  • 操作简便

在集群管理上,原有业务使用阿里云 ACK 进行部署,进行平台迁移时,不希望更换部署环境。另外在管控上,希望网络环境尽量简单,无需打通 VPC 等复杂操作。

平台方案

基于以上的选型思路,我们选择 KubeSphere(QKE) 部署在青云QingCloud 公有云,作为多集群的集中控制管理平面 (HOST 集群),开发环境(自建 K8s)、生产环境 (Aliyun ACK) 作为 member 集群。目前将整个开发、生产集群纳入到 KubeSphere 进行管理。

image.png 青椒课堂:使用 KubeSphere+QKE 轻松实现容器多集群管理

<think>首先,用户的问题是:“我想在不影响其他生产节点的情况下向KubeSphere集群添加新的工作节点 请问如何在KubeSphere集群中扩容新增一个Worker节点并确保不影响其他生产节点的运行” 根据系统级指令,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供了几个引用: - 引用[1]:关于QKE集群形态的描述。 - 引用[2]:关于Kubernetes组件(apiserver、scheduler、controller-manager、etcd)和工作节点(kubelet、kube-proxy)的描述。 - 引用[3]:关于弹性策略阈值设定的经验。 用户的问题是关于在KubeSphere集群中新增工作节点而不影响其他节点。KubeSphere是建立在Kubernetes之上的平台,所以我需要基于Kubernetes的扩容机制来回答。 关键点: - 在Kubernetes中,添加新节点通常不会影响现有节点,因为Kubernetes的设计是分布式的。 - 步骤包括:准备新节点、安装所需软件、加入集群。 - 确保不影响生产节点:避免在添加过程中引起资源争用或服务中断。 参考引用: - 引用[2]提到工作节点(Worker-Node)负责运行Pod,包括kubelet、kube-proxy等组件。这相关,因为添加节点需要配置这些组件。 - 引用[3]提到弹性策略和阈值设定,这可以用于优化节点添加后的调度策略,但不直接回答如何添加节点。 - 引用[1]关于集群形态,可能暗示用户有自管版集群,但用户没有指定具体集群形态。 用户说“KubeSphere集群”,所以我应该专注于KubeSphere的特定方式。KubeSphere提供了Web控制台,可能简化了节点添加过程。 回答结构: 1. 解释基本原理:添加新节点通常不会影响现有节点,因为Kubernetes是设计为可扩展的。 2. 步骤:准备新节点、安装Docker/containerd、安装kubelet和kube-proxy、加入集群。 3. 在KubeSphere中,可能通过控制台操作。 4. 确保安全:验证新节点、检查资源、监控集群状态。 5. 生成相关问题。 由于用户提到“不影响其他生产节点”,我需要强调在添加过程中如何最小化风险: - 避免在高峰时段添加。 - 确保新节点配置正确。 - 使用kubectl命令或KubeSphere UI。 生成相关问题:基于主题,如节点管理、监控、优化。 最终回答用中文。</think>### 在KubeSphere集群中安全添加工作节点的步骤 在KubeSphere集群中扩容新增一个Worker节点时,Kubernetes的分布式设计确保了该过程通常不会影响现有生产节点。核心原理是:Kubernetes的Master组件(如apiserver、scheduler)通过声明式API管理节点,新节点加入后由scheduler负责Pod调度,而不会干扰运行中的Pod[^2]。以下是详细步骤,确保操作安全且不影响其他节点。 #### 步骤1: 准备新节点 - **硬件和系统要求**:新节点需满足集群的硬件规格(如CPU、内存、磁盘),并与现有节点使用相同的操作系统(如Ubuntu 20.04或CentOS 7)。确保网络连通性,新节点能访问Master节点的API Server(默认端口6443)。 - **安全建议**:在集群低峰时段(如非业务高峰期)操作,避免资源争用。同时,备份集群状态(使用`kubectl get nodes -o yaml > nodes-backup.yaml`)以防意外[^2]。 #### 步骤2: 安装必要组件 在新节点上安装Kubernetes工作节点所需组件: - **安装容器运行时**:如Docker或containerd。例如,在Ubuntu上: ```bash sudo apt-get update sudo apt-get install docker.io sudo systemctl enable docker && sudo systemctl start docker ``` - **安装kubelet和kube-proxy**:这些是工作节点的核心组件,负责Pod生命周期管理和网络代理[^2]。从KubeSphere或Kubernetes官方源安装: ```bash sudo apt-get install -y kubelet kubeadm kubectl sudo systemctl enable kubelet ``` #### 步骤3: 将节点加入集群 - **获取加入命令**:在KubeSphere控制台操作(推荐): 1. 登录KubeSphere Web控制台。 2. 导航到“集群管理” > “节点” > “添加节点”。 3. 系统会生成一个`kubeadm join`命令(包含Token和CA证书)。 - **或使用命令行**:在Master节点执行`kubeadm token create --print-join-command`获取命令,然后在新节点运行该命令: ```bash sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH> ``` - **验证加入**:在Master节点检查节点状态: ```bash kubectl get nodes # 新节点状态应为"Ready" ``` #### 步骤4: 确保不影响现有节点 - **调度隔离**:Kubernetes的scheduler会自动将新Pod调度到新节点,而不会迁移运行中的Pod。这避免了现有节点的资源抖动[^3]。 - **资源监控**:添加后,使用KubeSphere仪表盘监控集群资源使用率(如CPU/内存),确保新节点未引发异常负载。可设置弹性阈值(如扩容CPU使用率>80%),但初始值宜保守以避免频繁伸缩[^3]。 - **故障预防**: - 如果新节点配置错误(如网络问题),Kubernetes会将其标记为"NotReady",但不会影响其他节点。 - 测试新节点:部署一个测试Pod(`kubectl run test-pod --image=nginx`),确认其正常运行后再部署生产负载。 #### 注意事项 - **KubeSphere特性**:如果集群是自管版(用户全权管理Master和Worker节点),操作需手动完成;托管版可能通过云平台自动处理[^1]。 - **性能影响**:添加节点本身消耗少量网络带宽(用于同步etcd数据),但通常可忽略。建议一次添加一个节点,并观察集群稳定性。 - **引用说明**:本过程基于Kubernetes架构设计,其中工作节点组件(kubelet、kube-proxy)负责本地容器管理,而Master组件协调全局状态[^2]。 通过以上步骤,您可以安全扩容Worker节点,同时保持生产环境稳定。如果操作中遇到问题,请提供更多集群细节以便进一步诊断。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值