快速部署一套K8s集群-v1.28
1.前置知识点
1.1 生产环境可部署Kubernetes集群的两种方式
目前生产部署Kubernetes集群主要有两种方式:
- kubeadm
Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
- 二进制包
从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
这里采用kubeadm搭建集群。
kubeadm工具功能:
- kubeadm init:初始化一个Master节点
- kubeadm join:将工作节点加入集群
- kubeadm upgrade:升级K8s版本
- kubeadm token:管理 kubeadm join 使用的令牌
- kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
- kubeadm version:打印 kubeadm 版本
- kubeadm alpha:预览可用的新功能
1.2 准备环境
服务器要求:
- 建议最小硬件配置:2核CPU、2G内存、20G硬盘
- 服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点
软件环境:
软件 | 版本 |
操作系统 | CentOS7.9_x64 (mini) |
Docker | 20-ce |
Kubernetes | 1.28 |
服务器规划:
角色 | IP |
k8s-master | 192.168.52.15 |
k8s-node1 | 192.168.52.16 |
k8s-node2 | 192.168.52.17 |
架构图:
1.3 操作系统初始化配置【所有节点】
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld # 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时 # 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 # 根据规划设置主机名
hostnamectl set-hostname# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.52.15 k8s-master
192.168.52.16 k8s-node1
192.168.52.17 k8s-node2
EOF # 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system # 生效
# 开启IPv4转发
sudo cat <
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter # 时间同步
yum install -y chrony
systemctl restart chronyd
systemctl status chronyd
chronyc sources
2. 安装Docker/kubeadm/kubelet【所有节点】
2.1 安装Docker
# 安装相关依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看与选择docker版本
yum list docker-ce --showduplicates | sort -r
# 安装20.10.16版本
yum install -y docker-ce-20.10.16 docker-ce-cli-20.10.16 containerd.io
# 启动与开机启动
systemctl start docker
配置镜像下载加速器:
mkdir -vp /etc/docker/
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",