找回密码
 立即注册
首页 业界区 业界 附042.Kubernetes_v1.32.3生成环境高可用部署方案 ...

附042.Kubernetes_v1.32.3生成环境高可用部署方案

柯惠心 2025-6-3 10:50:56
部署组件

该 Kubernetes 部署过程中,对于部署环节,涉及多个组件,主要有 kubeadm 、kubelet 、kubectl。
kubeadm介绍

Kubeadm 为构建 Kubernetes 提供了便捷、高效的“最佳实践” ,该工具提供了初始化完整 Kubernetes 过程所需的组件,其主要命令及功能有:

  • kubeadm init:用于搭建 Kubernetes 控制平面节点;
  • kubeadm join:用于搭建 Kubernetes 工作节点并将其加入到集群中;
  • kubeadm upgrade:用于升级 Kubernetes 集群到新版本;
  • kubeadm token:用于管理 kubeadm join 使用的 token;
  • kubeadm reset:用于恢复(重置)通过 kubeadm init 或者 kubeadm join 命令对节点进行的任何变更;
  • kubeadm certs:用于管理 Kubernetes 证书;
  • kubeadm kubeconfig:用于管理 kubeconfig 文件;
  • kubeadm version:用于显示(查询)kubeadm 的版本信息;
  • kubeadm alpha:用于预览当前从社区收集到的反馈中的 kubeadm 特性。
更多参考:Kubeadm介绍
kubelet介绍

kubelet 是 Kubernetes 集群中用于操作 Docker 、containerd 等容器运行时的核心组件,需要在每个节点运行。通常该操作是基于 CRI 实现,kubelet 和 CRI 交互,以便于实现对 Kubernetes 的管控。
kubelet 主要用于配置容器网络、管理容器数据卷等容器全生命周期,对于 kubelet 而言,其主要的功能核心有:

  • Pod 更新事件;
  • Pod 生命周期管理;
  • 上报 Node 节点信息。
更多参考:kubelet介绍
kubectl介绍

kubectl 控制 Kubernetes 集群管理器,是作为 Kubernetes 的命令行工具,用于与 apiserver 进行通信,使用 kubectl 工具在 Kubernetes 上部署和管理应用程序。
使用 kubectl,可以检查群集资源的创建、删除和更新组件。
同时集成了大量子命令,可更便捷的管理 Kubernetes 集群,主要命令如下:

  • Kubetcl -h:显示子命令;
  • kubectl option:查看全局选项;
  • kubectl  --help:查看子命令帮助信息;
  • kubelet [command] [PARAMS] -o=:设置输出格式,如json、yaml等;
  • Kubetcl explain [RESOURCE]:查看资源的定义。
更多参考:kubectl介绍
方案概述

方案介绍

本方案基于 kubeadm 部署工具实现完整生产环境可用的 Kubernetes 高可用集群,同时提供相关 Kubernetes 周边组件。
其主要信息如下:

  • 版本:Kubernetes 1.32.3 版本;
  • kubeadm:采用 kubeadm 部署 Kubernetes ;
  • OS:Ubuntu Server 24.04 LTS;
  • etcd:采用融合方式;
  • HAProxy:以系统systemd形式运行,提供反向代理至3个master 6443端口;
  • KeepAlived:用于实现 apiserver 的高可用;
  • KubeSphere:是基于 Kubernetes 内核的分布式多租户商用云原生操作系统。在开源能力的基础上,在多云集群管理、微服务治理、应用管理等多个核心业务场景进行功能延伸。
  • Prometheus+Grafana:用于集群监控;
  • 其他主要部署组件包括:

    • Metrics:度量组件,用于提供相关监控指标;
    • Dashboard:Kubernetes 集群的前端图形界面;
    • Helm:Kubernetes Helm 包管理器工具,用于后续使用 helm 整合包快速部署应用;
    • Ingress:Kubernetes 服务暴露应用,用于提供7层的负载均衡,类似 Nginx,可建立外部和内部的多个映射规则;
    • containerd:Kubernetes 底层容器时;
    • Longhorn:Kubernetes 动态存储组件,用于提供 Kubernetes 的持久存储。

提示:本方案部署所使用脚本均由本人提供,可能不定期更新。
部署规划

节点规划

节点主机名IP类型可运行服务/组件master01172.24.8.181Kubernetes master节点kubeadm、kubelet、kubectl、KeepAlived、containerd
etcd、kube-apiserver、kube-scheduler、kube-controller-manager、calico
dashboard、metrics、ingress、Longhorn ui节点、Prometheus+Grafana节点
KubeSphere节点master02172.24.8.182Kubernetes master节点kubeadm、kubelet、kubectl、KeepAlived、containerd
etcd、kube-apiserver、kube-scheduler、kube-controller-manager、calico
dashboard、metrics、ingress、Longhorn ui节点、Prometheus+Grafana节点
KubeSphere节点master03172.24.8.183Kubernetes master节点kubeadm、kubelet、kubectl、KeepAlived、containerd
etcd、kube-apiserver、kube-scheduler、kube-controller-manager、calico
dashboard、metrics、ingress、Longhorn ui节点、Prometheus+Grafana节点
KubeSphere节点worker01172.24.8.184Kubernetes worker节点kubelet、containerd、calico、metrics、Longhorn driver节点
Prometheus+Grafana节点、KubeSphere节点worker02172.24.8.185Kubernetes worker节点kubelet、containerd、calico、metrics、Longhorn driver节点
Prometheus+Grafana节点、KubeSphere节点worker03172.24.8.186Kubernetes worker节点kubelet、containerd、calico、metrics、Longhorn driver节点
Prometheus+Grafana节点、KubeSphere节点Kubernetes集群高可用主要指的是控制平面的高可用,多个Master节点组件(通常为奇数)和Etcd组件的高可用,worker节点通过前端负载均衡VIP( 172.24.8.180 )连接到Master。
1.png

Kubernetes高可用架构中etcd与Master节点组件混合部署方式特点:

  • 所需服务器节点资源少,具备超融合架构特点
  • 部署简单,利于管理
  • 容易进行横向扩展
  • etcd复用Kubernetes的高可用
  • 存在一定风险,如一台master主机挂了,master和etcd都少了一个节点,集群冗余度受到一定影响
提示:本实验使用Keepalived+HAProxy架构实现Kubernetes的高可用。
主机名配置

需要对所有节点主机名进行相应配置。
  1. root@localhost:~# hostnamectl set-hostname master01            #其他节点依次修改
复制代码
提示:如上需要在所有节点修改对应的主机名。\
生产环境通常建议在内网部署dns服务器,使用dns服务器进行解析,本指南采用本地hosts文件名进行解析。
如下hosts文件修改仅需在master01执行,后续使用批量分发至其他所有节点。
[code]root@master01:~# cat >> /etc/hosts
您需要登录后才可以回帖 登录 | 立即注册