当前位置: 首页 > news >正文

Kubernetes 1.28 集群部署指南(基于 Containerd 容器运行时)

#作者:程宏斌

文章目录

  • 一、基础环境配置
    • 1、防火墙和selinux
    • 2、swap交换分区
    • 3、时间同步
    • 4、配置hosts及免密
    • 5、内核优化
  • 二、containerd安装
    • 1、下载解压
    • 2、拷贝containerd运行时文件到宿主机指定路径
    • 3、生成配置文件
    • 4、修改Cgroup的管理者为systemd组件
    • 5、修改pause的基础镜像名称
    • 6、启动containerd服务
    • 7、拷贝ctr客户端工具及runc容器运行时
    • 8、拷贝容器的运行时,用于后期启动容器
  • 三、安装runc
  • 四、kubeadm安装集群
  • 五、部署Calico网络插件

Centos7部署K8s1.28集群-基于containerd-1.7.11、runc-1.1.11

一、基础环境配置

1、防火墙和selinux

# 关闭防火墙并关闭开机自启
systemctl disable firewalld --now
systemctl status firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 查看状态
getenforce
Disabled

2、swap交换分区

# 临时禁用
swapoff -a
# 永久禁用
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 查看状态
free -h
total        used        free      shared  buff/cache   available
Mem:           3.8G        1.0G        1.9G         13M        976M        2.6G
Swap:            0B          0B          0B

3、时间同步

# 安装时间同步软件,也可以使用chrony
yum -y install ntpdate
# 配置定时任务
crontab -e 
​
0 */1 * * * ntpdate time1.aliyun.com

4、配置hosts及免密

# 编辑hosts文件
vim /etc/hosts
172.16.1.60 master
172.16.1.61 node1
172.16.1.62 node2
​
# 免密操作
ssh-keygen
# 将密钥分发到node节点
ssh-copy-id node1
ssh-copy-id node2

5、内核优化

# 修改配置文件
cat >/etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
fs.file-max = 2097152
EOF
​
cat >/etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF# 加载内核模块
modprobe overlay
modprobe br_netfilter
​
# 编辑 /etc/security/limits.conf,添加:
* soft nofile 65535
* hard nofile# 重新登录控制台查看
ulimit -n
​
# 官方参考文档 ,以下内容摘自官方文档
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
​
sudo modprobe overlay
sudo modprobe br_netfilter
​
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
​
# 应用 sysctl 参数而不重新启动
sudo sysctl --system
# 加载模块
lsmod | grep br_netfilter
lsmod | grep overlay

二、containerd安装

1、下载解压

wget https://github.com/containerd/containerd/releases/download/v1.7.11/containerd-1.7.11-linux-amd64.tar.gz
tar xf cri-containerd-1.7.3-linux-amd64.tar.gz

2、拷贝containerd运行时文件到宿主机指定路径

cp bin/containerd /usr/local/bin
拷贝containerd的systemd的配置文件

cp etc/systemd/system/containerd.service /usr/lib/systemd/system/

3、生成配置文件

mkdir /etc/containerd #创建配置文件目录
containerd config default > /etc/containerd/config.toml #生成默认的配置文件

4、修改Cgroup的管理者为systemd组件

grep SystemdCgroup /etc/containerd/config.toml SystemdCgroup = false
sed -ri ‘s#(SystemdCgroup = )false#\1true#’ /etc/containerd/config.toml
grep SystemdCgroup /etc/containerd/config.toml SystemdCgroup = true

5、修改pause的基础镜像名称

grep sandbox_image /etc/containerd/config.toml sandbox_image = “registry.k8s.io/pause:3.6”
sed -i ‘s#registry.k8s.io/pause:3.6#registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9#’ /etc/containerd/config.toml
grep sandbox_image /etc/containerd/config.toml sandbox_image = “registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9”

6、启动containerd服务

systemctl enable --now containerd
systemctl status containerd

7、拷贝ctr客户端工具及runc容器运行时

cp usr/local/bin/ctr /usr/bin/ #拷贝ctr客户端工具到PATH环境变量
ctr version #查看contrainerd服务版本信息

8、拷贝容器的运行时,用于后期启动容器

cp usr/local/bin/containerd-shim-runc-v2 /usr/bin/
ll /usr/bin/containerd-shim-runc-v2

三、安装runc

1、下载:

wget https://github.com/opencontainers/runc/releases/download/v1.1.11/runc.amd64

2、拷贝runC到环境变量

mv runc.amd64 /usr/sbin/runc

3、为runc程序添加执行权限

chmod +x /usr/sbin/runc
ll /usr/sbin/runc
-rwxr-xr-x 1 root root 10709696 Mar  8  2024 /usr/sbin/runc*

4、查看runC的版本信息

runc -v
runc version 1.1.11
commit: v1.1.11-0-g4bccb38c
spec: 1.0.2-dev
go: go1.20.12

四、kubeadm安装集群

配置k8s的源文件
官方源文件

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

阿里云源文件

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF

安装kubectl,kubeadm,kubelet

yum install -y kubelet kubeadm kubectl

修改镜像(改为阿里云的镜像)

vim /etc/containerd/config.toml

在这里插入图片描述
crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock info
查看指定 CRI 运行时的详细信息

重启
systemctl daemon-reload
systemctl restart containerd
systemctl status containerd

初始化集群

编辑kubeadm-config.yaml (修改相关ip配置)

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.28.15
imageRepository: registry.aliyuncs.com/google_containers
controlPlaneEndpoint: "10.0.12.11:6443"
networking:podSubnet: "10.244.0.0/16"serviceSubnet: "10.1.0.0/16"
etcd:local:imageRepository: registry.aliyuncs.com/google_containers
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:criSocket: unix:///var/run/containerd/containerd.sockname: VM-12-11-opencloudoskubeletExtraArgs:
cgroup-driver: systemd

初始化命令

kubeadm init --config kubeadm-config.yaml

如果初始化异常请重置
(查看分析kubelet以及containerd日志 journalctl -u containerd -f、journalctl -u kubelet -f)

kubeadm reset -f --cri-socket unix:///var/run/containerd/containerd.sock
rm -rf /etc/kubernetes/*
rm -rf /var/lib/etcd/*
rm -rf /var/lib/kubelet/*

以下操作之后可以使用kubectl命令

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

执行命令加入集群(我部署的单节点)

五、部署Calico网络插件

下载
curl https://raw.githubusercontent.com/projectcalico/calico/v3.28.5/manifests/calico.yaml > calico.yaml

修改yaml

            - name: CALICO_IPV4POOL_CIDRvalue: "10.244.0.0/16"
放开注释,kubeadm-config.yaml 的podSubnet: 修改yaml里面的镜像(这是阿里云仓库的)
sed -i 's|quay.azk8s.cn/calico/cni:v3.28.0|registry.cn-hangzhou.aliyuncs.com/ali_cloud_images/cni:v3.28.5|g' calico.yamlsed -i 's|quay.azk8s.cn/calico/node:v3.28.0|registry.cn-hangzhou.aliyuncs.com/ali_cloud_images/node:v3.28.5|g' calico.yamlsed -i 's|quay.azk8s.cn/calico/kube-controllers:v3.28.0|registry.cn-hangzhou.aliyuncs.com/ali_cloud_images/kube-controllers:v3.28.5|g' calico.yaml运行这个文件
kubectl apply -f calico.yaml
http://www.dtcms.com/a/346340.html

相关文章:

  • 笔记:二叉树构建方法
  • 从“配置化思维”到“前端效率革命”:xiangjsoncraft 如何用 JSON 简化页面开发?
  • 【源码】MES系统:从下达计划、执行反馈、异常预警到过程控制的一整套执行中枢。
  • FastTracker:实时准确的视觉跟踪
  • 一键部署openGauss6.0.2轻量版单节点
  • DPY-3010: connections to this database server version are not supported by p
  • LoRA内幕机制解析(53)
  • Design Compiler:层次模型(Block Abstraction)的简介
  • 什么是神鸟云?
  • 亚马逊老品怎么再次爆发流量?
  • 软件测试要怎么自学?
  • CVPR 2025 | 哈工大港大DeCLIP:解耦CLIP注意力实现开放词汇感知!
  • RK3588随笔:MIPI协议——D-PHY 物理层的自定义和校验
  • codeforces round 1043(div3) 补题
  • Finite State Machine(FSM) for the Development Mode
  • NVM-Windows 命令大全
  • YOLO --- YOLOv5模型以及项目详解
  • Tiger任务管理系统-13
  • MiniOB环境部署开发(使用Docker)
  • FPC设计技巧
  • 解释实现哈希值作为唯一的ID以及后面的hexdigest是什么意思
  • 剑指数组相关
  • CSS自定义属性(CSS变量)
  • 全面解析 `strncasecmp` 字符串比较函数
  • ES6变量与解构:let、const与模板字符串全解析
  • 53 C++ 现代C++编程艺术2-枚举和枚举类
  • 大麦盒子DM4036亲测刷包实践笔记
  • AI领域的语义空间是什么?
  • 波士顿房价线性回归预测讲解
  • 基于SpringBoot的家教信息预约管理系统【2026最新】