柯惠心 发表于 2025-6-3 10:50:56

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

部署组件

该 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 -o=:设置输出格式,如json、yaml等;
[*]Kubetcl explain :查看资源的定义。
更多参考: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。

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

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

需要对所有节点主机名进行相应配置。
root@localhost:~# hostnamectl set-hostname master01          #其他节点依次修改提示:如上需要在所有节点修改对应的主机名。\
生产环境通常建议在内网部署dns服务器,使用dns服务器进行解析,本指南采用本地hosts文件名进行解析。
如下hosts文件修改仅需在master01执行,后续使用批量分发至其他所有节点。
root@master01:~# cat >> /etc/hosts
页: [1]
查看完整版本: 附042.Kubernetes_v1.32.3生成环境高可用部署方案