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

打印 上一主题 下一主题

主题 547|帖子 547|积分 1641

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节点主机都执行, 根据实际情况修改参数。

  • 修改主机名
  1. # 3.31服务器
  2. hostnamectl set-hostname k8s31
  3. # 3.32服务器
  4. hostnamectl set-hostname k8s32
  5. # 3.33服务器
  6. hostnamectl set-hostname k8s33
复制代码

  • 修改/etc/hosts文件,增加以下配置。
  1. 192.168.3.31 k8s31
  2. 192.168.3.32 k8s32
  3. 192.168.3.33 k8s33
复制代码

  • 配置时间同步服务
  1. # 1. 安装chrony时间同步应用
  2. apt install -y chrony
  3. # 2. 添加内网的ntp服务器地址。如果在公网,可配置阿里云的ntp服务器地址:ntp.aliyun.com
  4. echo 'server 192.168.3.41 iburst' > /etc/chrony/sources.d/custom-ntp-server.sources
  5. # 3. 启动
  6. systemctl start chrony
  7. # 如果已经启动过了, 可以热加载配置: chronyc reload sources
复制代码

  • 关闭swap。如果安装系统时创建了swap,则需要关闭。
  1. swapoff -a
复制代码

  • 装载内核模块
  1. # 添加配置
  2. cat << EOF > /etc/modules-load.d/containerd.conf
  3. overlay
  4. br_netfilter
  5. EOF
  6. # 立即装载
  7. modprobe overlay
  8. modprobe br_netfilter
  9. # 检查装载。如果没有输出结果说明没有装载。
  10. lsmod | grep br_netfilter
复制代码

  • 配置系统参数
  1. # 1. 添加配置文件
  2. cat << EOF > /etc/sysctl.d/k8s-sysctl.conf
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. net.ipv4.ip_forward = 1
  6. user.max_user_namespaces=28633
  7. vm.swappiness = 0
  8. EOF
  9. # 2. 配置生效
  10. sysctl -p /etc/sysctl.d/k8s-sysctl.conf
复制代码

  • 启用ipvs。编写system配置文件,实现开机自动装载到内核。
[code]# 1. 安装依赖apt install -y ipset ipvsadm# 2. 新建文件并添加配置, 文件路径可任意tee /root/scripts/k8s.sh
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表