络腮胡菲菲 发表于 2023-8-29 17:37:57

[kubernetes]二进制部署k8s集群-基于containerd

0. 前言

k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。
除了containerd,比较流行的容器运行时还有podman,但是podman官方安装文档要么用包管理器在线安装,要么用包管理器下载一堆依赖再编译安装,内网离线环境下安装可能会比较麻烦,而containerd的安装包是静态二进制文件,解压后就能直接使用,离线环境下相对方便一点。
本文将在内网离线环境下用二进制文件部署一个三节点集群+harbor镜像仓库。集群中部署了三个apiserver,并配置nginx反向代理,提升master的高可用性(如对高可用有进一步要求,可以再加个keepalive)。
相关软件信息:
名称版本说明containerdcri-containerd-cni-1.7.2-linux-amd64容器运行时harbor2.8.2容器镜像仓库etcd3.4.24键值对数据库kubernetes1.26.6容器编排系统nginx1.25.1负载均衡,反向代理apiserver服务器信息:
IP操作系统硬件配置Hostname说明192.168.3.31Debian 11.6 amd644C4Gk8s31nginx+etcd+master+node192.168.3.32Debian 11.6 amd644C4Gk8s32etcd+master+node192.168.3.33Debian 11.6 amd644C4Gk8s33etcd+master+node192.168.3.43Debian 11.6 amd644C4G无harbor,内网域名registry.atlas.cn1. 系统初始化

初始化部分需要三台k8s节点主机都执行, 根据实际情况修改参数。

[*]修改主机名
# 3.31服务器
hostnamectl set-hostname k8s31
# 3.32服务器
hostnamectl set-hostname k8s32
# 3.33服务器
hostnamectl set-hostname k8s33
[*]修改/etc/hosts文件,增加以下配置。
192.168.3.31 k8s31
192.168.3.32 k8s32
192.168.3.33 k8s33
[*]配置时间同步服务
# 1. 安装chrony时间同步应用
apt install -y chrony

# 2. 添加内网的ntp服务器地址。如果在公网,可配置阿里云的ntp服务器地址:ntp.aliyun.com
echo 'server 192.168.3.41 iburst' > /etc/chrony/sources.d/custom-ntp-server.sources

# 3. 启动
systemctl start chrony
# 如果已经启动过了, 可以热加载配置: chronyc reload sources
[*]关闭swap。如果安装系统时创建了swap,则需要关闭。
swapoff -a
[*]装载内核模块
# 添加配置
cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

# 立即装载
modprobe overlay
modprobe br_netfilter

# 检查装载。如果没有输出结果说明没有装载。
lsmod | grep br_netfilter
[*]配置系统参数
# 1. 添加配置文件
cat << EOF > /etc/sysctl.d/k8s-sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
user.max_user_namespaces=28633
vm.swappiness = 0
EOF

# 2. 配置生效
sysctl -p /etc/sysctl.d/k8s-sysctl.conf
[*]启用ipvs。编写system配置文件,实现开机自动装载到内核。
# 1. 安装依赖apt install -y ipset ipvsadm# 2. 新建文件并添加配置, 文件路径可任意tee /root/scripts/k8s.sh
页: [1]
查看完整版本: [kubernetes]二进制部署k8s集群-基于containerd