附034.Kubernetes_v1.21.0高可用部署架构二

kubeadm介绍 kubeadm概述

Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。
kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。kubeadm 只关心启动集群,而不关心其他工作,如部署前的节点准备工作、安装各种Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不属于 kubeadm 关注范围。

kubeadm功能

kubeadm 主要有如下功能:

kubeadm init 启动一个 Kubernetes 主节点;

kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群;

kubeadm upgrade 更新一个 Kubernetes 集群到新版本;

kubeadm config 如果使用 v1.7.x 或者更低版本的 kubeadm 初始化集群,您需要对集群做一些配置以便使用 kubeadm upgrade 命令;

kubeadm token 管理 kubeadm join 使用的令牌;

kubeadm reset 还原 kubeadm init 或者 kubeadm join 对主机所做的任何更改;

kubeadm version 打印 kubeadm 版本;

kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈。

本方案描述

本方案基于kubeadm部署,且实现高可用,同时提供相关Kubernetes周边组件。本方案可直接应用于生产环境

本方案采用kubeadm部署Kubernetes 1.21.0版本;

基础系统为CentOS8.3;

etcd采用混部方式;

KeepAlived:实现VIP高可用;

HAProxy:以系统systemd形式运行,提供反向代理至3个master 6443端口;

其他主要部署组件包括:

Metrics:度量;

Dashboard:Kubernetes 图形UI界面;

Helm:Kubernetes Helm包管理工具;

Ingress:Kubernetes 服务暴露;

containerd:Kubernetes底层容器时;

Longhorn:Kubernetes 动态存储组件。

worker04节点仅为测试模拟使用。

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

部署规划 节点规划 节点主机名 IP 类型 运行服务
master01   172.24.8.141   Kubernetes master节点   KeepAlived、HAProxy、containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、kubelet、metrics、calico、rook-osd  
master02   172.24.8.142   Kubernetes master节点   KeepAlived、HAProxy、containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、kubelet、metrics、calico、rook-osd  
master03   172.24.8.143   Kubernetes master节点   KeepAlived、HAProxy、containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、kubelet、metrics、calico、rook-osd  
worker01   172.24.8.144   Kubernetes worker节点   containerd、kubelet、proxy、calico、rook-osd、ingress  
worker02   172.24.8.145   Kubernetes worker节点   containerd、kubelet、proxy、calico、rook-osd、ingress  
worker03   172.24.8.146   Kubernetes worker节点   containerd、kubelet、proxy、calico、rook-osd、ingress  
worker04   172.24.8.147   Kubernetes worker节点   containerd、kubelet、proxy、calico、rook-osd、ingress  

Kubernetes的高可用主要指的是控制平面的高可用,即指多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。

架构图

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

所需机器资源少

部署简单,利于管理

容易进行横向扩展

etcd复用Kubernetes的高可用

风险大,一台master主机挂了,master和etcd就都少了一套,集群冗余度受到一定影响

提示:本实验使用Keepalived+HAProxy架构实现Kubernetes的高可用。

主机名配置

建议对所有节点主机名进行相应配置。

[root@master01 ~]# hostnamectl set-hostname master01 #其他节点依次修改 [root@master01 ~]# cat >> /etc/hosts << EOF 172.24.8.141 master01 172.24.8.142 master02 172.24.8.143 master03 172.24.8.144 worker01 172.24.8.145 worker02 172.24.8.146 worker03 EOF 变量准备

为实现自动化部署,便于管理和维护,建议做如下变量准备。

[root@master01 ~]# wget [root@master01 ~]# vi environment.sh #确认相关主机名和IP #!/bin/sh #****************************************************************# # ScriptName: environment.sh # Author: xhy # Create Date: 2020-05-30 16:30 # Modify Author: xhy # Modify Date: 2020-05-30 16:30 # Version: #***************************************************************# # 集群 MASTER 机器 IP 数组 export MASTER_IPS=(172.24.8.141 172.24.8.142 172.24.8.143) # 集群 MASTER IP 对应的主机名数组 export MASTER_NAMES=(master01 master02 master03) # 集群 NODE 机器 IP 数组 export NODE_IPS=(172.24.8.144 172.24.8.145 172.24.8.146) # 集群 NODE IP 对应的主机名数组 export NODE_NAMES=(worker01 worker02 worker03) # 集群所有机器 IP 数组 export ALL_IPS=(172.24.8.141 172.24.8.142 172.24.8.143 172.24.8.144 172.24.8.145 172.24.8.146) # 集群所有IP 对应的主机名数组 export ALL_NAMES=(master01 master02 master03 worker01 worker02 worker03) 互信配置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfyz.html