kubeadm介绍 kubeadm概述
Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。
kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。kubeadm 只关心启动集群,而不关心其他工作,如部署前的节点准备工作、安装各种Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不属于 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节点仅为测试模拟使用。
提示:本方案部署所使用脚本均由本人提供,可能不定期更新。
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) 互信配置