Bootstrap

Kubernetes最新版v1.27.4安装和集群搭建保姆级教程

1. Kubernetes 1.27.4 发布

一:k8s1.27.x 的概述
太平洋时间 2023 年 4 月 11 日,Kubernetes 1.27 正式发布。此版本距离上版本发布时隔 4 个月,是 2023 年的第一个版本。
新版本中 release 团队跟踪了 60 个 enhancements,比之前版本都要多得多。其中 13 个功能升级为稳定版,29 个已有功能进行优化升级为 Beta,另有 18 个 Alpha 级别的功能,大多数为全新功能。

1.1:k8s 1.27.x 更新
镜像仓库切换 http://k8s.gcr.io 到 http://registry.gcr.io
KEP-1847:StatefulSet PVC 自动删除功能特性 Beta
KEP-3453:优化大型集群中 kube-proxy 的 iptables 模式性能
KEP-2831 和 KEP-647:APIServer 和 Kubelet 的 Tracing 功能 Beta
KEP-3077:上下文日志
KEP-1287:Pod 资源的纵向弹性伸缩
KEP-3386:Kubelet 事件驱动 PLEG 升级为 Beta
KEP-3476:Volume Group 快照 Alpha(API)
KEP-3838 和 KEP-3521:Pod 调度就绪态功能增强
KEP-3243:Deployment 滚动更新过程中的调度优化
KEP-2876:使用通用表达式语言(CEL)来验证 CRD
KEP-2258:节点日志查询
KEP-3659:kubectl apply –prune 重新设计

2. 环境准备

2.1 主机操作系统说明

序号 操作系统及版本 备注
1 CentOS7.9

2.2 主机硬件配置说明

CPU 内存 硬盘 角色 主机名
2C 2G 50GB master Master01
2C 24G 50GB worker(node) Node02
2C 2G 50GB worker(node) Node03

2.3 主机名配置

由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master;其中2台为worker节点,名称分别为:k8s-k8s-node1及k8s-node2

master节点
# hostnamectl set-hostname master01
worker01节点
# hostnamectl set-hostname node01
worker02节点
# hostnamectl set-hostname nodeo2

2.4 主机名与IP地址解析

所有集群主机均需要进行配置。

# cat >> /etc/hosts << EOF

192.168.1.10 master01
192.168.1.11 node01
192.168.1.12 node02
EOF

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.10 master01
192.168.1.11 node01
192.168.1.12 node02

2.5 防火墙配置

所有主机均需要操作。

关闭现有防火墙firewalld
# systemctl disable firewalld
# systemctl stop firewalld
# firewall-cmd --state
not running

2.6 SELINUX配置

所有主机均需要操作。修改SELinux配置需要重启操作系统。

# setenforce 0
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.7 时间同步配置

所有主机均需要操作。最小化安装系统需要安装ntpdate软件。

# yum -y install ntpdate
# crontab -l
0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com

2.8 升级操作系统内核

所有主机均需要操作。

导入elrepo gpg key
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo YUM源仓库
# yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本
# yum --enablerepo="elrepo-kernel" -y install kernel-ml.x86_64
设置grub2默认引导为0
# grub2-set-default 0
重新生成grub2引导文件
# grub2-mkconfig -o /boot/grub2/grub.cfg
更新后,需要重启,使用升级的内核生效。
# reboot
重启后,需要验证内核是否为更新对应的版本
# uname -r

2.9 配置内核转发及网桥过滤

所有主机均需要操作。

添加网桥过滤及内核转发配置文件
# 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
vm.swappiness = 0
EOF
# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
加载br_netfilter模块
# modprobe br_netfilter
查看是否加载
# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter
加载网桥过滤及内核转发配置文件
# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0

2.10 安装ipset及ipvsadm

所有主机均需要操作。

安装ipset及ipvsadm
# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块
# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授权、运行、检查是否加载
# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

2.11 关闭SWAP分区

修改完成后需要重启操作系统,如不重启,可临时关闭,命令为swapoff -a

永远关闭swap分区,需要重启操作系统
# swapoff -a
# sed -i 's/.*swap.*/#&/g' /etc/fstab
# cat /etc/fstab
......

# /dev/mapper/centos-swap swap                    swap    defaults        0 0

在上一行中行首添加#

3. Docker准备

;