kubernetes 1.30.0 Containerd 离线搭建

news2024/11/24 11:48:58

准备

准备两台主机

主机名IPCPU架构
mx-text-01192.168.0.222ARM64
mx-text-02192.168.0.223ARM64

主机要求: 2Core 2G RAM

配置主机名映射

添加映射

192.168.0.222 mx-test-01
192.168.0.223 mx-test-02
cat /etc/hosts

在这里插入图片描述

关闭SELinux

setenforce 0

在这里插入图片描述

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

在这里插入图片描述

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

在这里插入图片描述

允许IP数据包转发

cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

cat /etc/sysctl.d/kubernetes.conf

在这里插入图片描述

配置生效

sysctl -p /etc/sysctl.d/kubernetes.conf

在这里插入图片描述

注意上述配置不要与 /etc/sysctl.conf 冲突。

关闭Swap交换分区 (kubelet在1.28 开始若存在swap则无法启动[1])

vi /etc/fstab

注释swap
在这里插入图片描述
该配置需要重启生效

若不重启,可以关闭运行时的交换分区

swapoff -a 

检查是否关闭

free -h

在这里插入图片描述

卸载Docker,这里将使用contianerd作为CRI

yum remove docker \
           containerd.io \
           docker-runc \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine \
           docker-compose-plugin \
           docker-buildx-plugin

在这里插入图片描述

准备安装包

安装containerd

创建安装包存放目录

mkdir -p /root/kubeadm-boot/containerd
cd /root/kubeadm-boot/containerd

在这里插入图片描述

这里按照 containerd官方方式 [8] 进行二进制安装,下载合适版本 https://github.com/containerd/containerd/releases

在这里插入图片描述

将安装包存放于 /root/kubeadm-boot/containerd 中。

解压

tar Cxzvf /usr/local containerd-1.7.16-linux-arm64.tar.gz

在这里插入图片描述
检查安装

containerd --version

如果提示containerd 没有找到,请重新连接SSH

在这里插入图片描述

配置 Containerd官方提供Systemd服务模板 containerd.service ,若下载困难也可以直接复制下面模板

cat > /usr/lib/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

在这里插入图片描述

创建镜像存储位置 /data/containerd/

mkdir -p /data/containerd/

在这里插入图片描述

创建containerd 默认配置文件

mkdir -p /etc/containerd 
containerd config default > /etc/containerd/config.toml

在这里插入图片描述

编辑 /etc/containerd/config.toml 文件各部分内容:

vi /etc/containerd/config.toml

修改 root 位置为 /data/containerd

root = "/data/containerd"

在这里插入图片描述

设置 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options]

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
     SystemdCgroup = true

在这里插入图片描述
设置 [plugins.“io.containerd.grpc.v1.cri”]

[plugins."io.containerd.grpc.v1.cri"]
     sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"

在这里插入图片描述

重新加载服务,设置开机启动,启动containerd服务

systemctl daemon-reload
systemctl enable containerd
systemctl restart containerd

在这里插入图片描述

查看运行状态

systemctl status containerd

在这里插入图片描述

安装RUNC

在安装前请检查你的libseccomp版本 是否大于 2.5.0,若低于2.5.0 请升级。

rpm -qa | grep libseccomp

在这里插入图片描述

项目release页面下载 https://github.com/opencontainers/runc/releases

在这里插入图片描述

将安装包存放于 /root/kubeadm-boot/containerd 中。

安装 runc

install -m 755 runc.arm64 /usr/local/sbin/runc

在这里插入图片描述

检查

runc --version

在这里插入图片描述

安装CNI 网络插件

项目release页面下载 https://github.com/containernetworking/plugins/releases 下载合适版本

在这里插入图片描述
将安装包存放于 /root/kubeadm-boot/containerd 中。

创建cni安装目录

mkdir -p /opt/cni/bin

在这里插入图片描述
解压cni安装包

tar Cxzvf /opt/cni/bin cni-plugins-linux-arm64-v1.4.1.tgz

在这里插入图片描述

下载k8s安装包

删除已经存在的版本。

yum remove -y kubelet  kubeadm kubectl cri-tools

在这里插入图片描述

创建 kubernetes YUM仓库

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

在这里插入图片描述

yum clean all
yum makecache

在这里插入图片描述

创建安装包存储目录

mkdir -p /root/kubeadm-boot/kubernetes-rpm
cd /root/kubeadm-boot/kubernetes-rpm

在这里插入图片描述

下载 kubelet、kubeadm 和 kubectl:

yum install  --downloadonly --downloaddir=/root/kubeadm-boot/kubernetes-rpm \
             kubelet kubeadm kubectl \
             --disableexcludes=kubernetes

当前最新版本为 1.30.0

在这里插入图片描述

ls -l /root/kubeadm-boot/kubernetes-rpm

在这里插入图片描述

执行离线安装

rpm -Uvh --nodeps *.rpm

在这里插入图片描述

验证安装是否成功

kubectl version

kubeadm version

在这里插入图片描述
设置开机启动,并立刻启动kubelet

systemctl enable --now kubelet

在这里插入图片描述

这个阶段启动的kubelet由于没有配置,将不断重启。

准备kubeadm初始化文件

生成集群启动文件

mkdir -p /root/kubeadm-boot
cd /root/kubeadm-boot

在这里插入图片描述

生成默认配置:

kubeadm config print init-defaults > kubeadm-init.yaml

在这里插入图片描述

vi kubeadm-init.yaml

修改配置中的 localAPIEndpoint.advertiseAddress 为当前主机的IP

在这里插入图片描述
修改 nodeRegistration.name 节点名称为当前节点的名称,注意这里是主节点

在这里插入图片描述

修改 imageRepository

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

在这里插入图片描述

初始化集群

kubeadm init --config kubeadm-init.yaml

注意首次启动将会拉取镜像会消耗一段时间

在这里插入图片描述

镜像拉取完成后生成证书和相关配置文件,之后启动control-plane。

在这里插入图片描述
接下来提示创建相关配置文件

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

在这里插入图片描述

检查集群

kubectl get node

可以看到当前集群中已经一个节点,但是处于 NotReady状态,这是应为没有安装CNI的原因。

在这里插入图片描述

安装网络插件flannel

下载flannel启动文件 https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

cd /root/kubeadm-boot
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

在这里插入图片描述

查看 kubeadm中的服务网络IP,默认值为 10.96.0.0/12

cat kubeadm-init.yaml |grep serviceSubnet

在这里插入图片描述

修改flannel配置文件

vi kube-flannel.yml

找到net-conf.json 配置,修改Network 为 kubeadm-init.yaml 中的 serviceSubnet

在这里插入图片描述

部署flannel

kubectl apply -f kube-flannel.yml

在这里插入图片描述
再次查看节点状态时,可以发现节点状态已经变为 Ready

kubectl get node

在这里插入图片描述

可以查看一下当前节点上启动的pods

crictl pods

在这里插入图片描述

导出K8S相关镜像

创建镜像保存目录

mkdir -p /root/kubeadm-boot/img
cd /root/kubeadm-boot/img

在这里插入图片描述

查看k8s需要所有需要的镜像列表

echo "$(crictl image ls)" | awk 'NR>1 {print $1 ":" $2}'

在这里插入图片描述

导入这些镜像

ctr -n k8s.io image export flannel-cni-plugin-v1.4.0-flannel1.tar       docker.io/flannel/flannel-cni-plugin:v1.4.0-flannel1
ctr -n k8s.io image export flannel-v0.25.1.tar                          docker.io/flannel/flannel:v0.25.1
ctr -n k8s.io image export pause-3.9.tar                                registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
ctr -n k8s.io image export coredns-v1.11.1.tar                          registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1
ctr -n k8s.io image export etcd-3.5.12-0.tar                            registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.12-0
ctr -n k8s.io image export kube-apiserver-v1.30.0.tar                   registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.30.0
ctr -n k8s.io image export kube-controller-manager-v1.30.0.tar          registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.30.0
ctr -n k8s.io image export kube-proxy-v1.30.0.tar                       registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.30.0
ctr -n k8s.io image export kube-scheduler-v1.30.0.tar                   registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.30.0

在这里插入图片描述

ls -l

在这里插入图片描述

确认离线安装包内容

tree /root/kubeadm-boot

在这里插入图片描述

离线安装

TODO

参考文献

[1]. kubernetes . Installing kubeadm . 2024 . https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
[2]. 知乎 . Kubernetes 教程之跟着官方文档从零搭建 K8S . 玩java的草鸡 . 2020 . https://zhuanlan.zhihu.com/p/321795209
[3]. 清华大学. Kubernetes 软件仓库镜像使用帮助 . 2024 . https://help.mirrors.cernet.edu.cn/kubernetes/
[4]. 博客园 . K8S初始化报错:CRI v1 runtime API is not implemented for endpoint “unix:///var/run/containerd/containerd.sock” . Boom__Clap . 2023.7 . https://www.cnblogs.com/yourstars/p/17572125.html
[5]. kubernetes . registry.k8s.io . 2024 . https://github.com/kubernetes/registry.k8s.io
[6]. 博客园 . K8S(kubernetes)镜像源 . HackerVirus . 2022.1 . https://www.cnblogs.com/Leo_wl/p/15775077.html
[7]. kubernetes . kubeadm-init . https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
[8]. containerd . 2024 . https://github.com/containerd/containerd/blob/main/docs/getting-started.md
[9]. 博客园 . 基于containerd 部署 kubernetes 1.28集群 . linuxk . 2024.3 . https://www.cnblogs.com/linuxk/p/18104028
[10]. flannel . 2024 . https://github.com/flannel-io/flannel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商独立站||跨境电商独立站网站搭建|功能系统搭建||API接口接入

搭建多语言跨境电商独立站系统 前台主要功能模块 短信接口 第三方登陆 支付方式 会员中心 代购订单列表 - new 会员签到 -1000(1) new 支付密码 ---1000 国内流程 -----5000 new 订单运单多退少补 -1000 未付款运单取消功能 - 修改运单运输方式 -----1000 年费会员 -----3000 …

TimeoutException,带宽影响连接超时

在做压测试过程中发现本机测试正常&#xff0c;线上服务器报错如下&#xff1a; io.lettuce.core.RedisCommandTimeoutException: Command timed out after 15 second(s) 查看公网带流量情况&#xff1a; 服务器带宽 服务器的公网带宽配置为10Mbps&#xff0c;当服务器的出网…

解决Blender导出FBX文件到Unity坐标轴错误的问题

发现Blender的模型导入到Unity里面有问题,简单研究了下发现是坐标系不同,Unity使用的是左手坐标系,Blender使用的是右手坐标系 。 下面直接将如何解决 首先忽略Blender的右手坐标系以及Z轴朝上的事&#xff0c;依照unity坐标系情况修改模型物体的旋转&#xff0c;以Blender猴…

Linux服务器安装Anaconda并运行Python程序

目录 1. Linux服务器安装Anaconda1.1 下载Anaconda安装包1.2 安装Anaconda 2. 添加Conda环境变量3. Conda常用操作3.1 创建虚拟环境3.2 激活环境3.3 删除环境3.4 其他常用命令 4. 安装合适版本的Pytorch5. Linux服务器运行Python程序5.1 前端运行5.2 后台挂载5.3 后台进程 6. 一…

苹果和OpenAI再续前缘,iOS 18会是颠覆级的吗?|TodayAI

据彭博社最新报道&#xff0c;苹果公司已经与人工智能领域的先锋企业OpenAI重启了对话&#xff0c;双方目前正在讨论一项可能的合作&#xff0c;以将OpenAI的生成式人工智能技术整合到苹果即将推出的iOS 18操作系统中。这一举措表明&#xff0c;苹果正加速其在人工智能技术上的…

第G9周:ACGAN理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 上一周已经给出代码&#xff0c;需要可以跳转上一周的任务 第G8周&#xff1a;ACGAN任…

什么是视频号小店?小店怎么做?详细玩法流程来了

大家好&#xff0c;我是电商笨笨熊 视频号小店成了今年电商市场又一热门项目&#xff1b; 作为腾讯推出的电商&#xff0c;不少人曾说过&#xff0c;视频号小店会成为下一个风口&#xff1b; 那么视频号小店到底是什么&#xff0c;值得投入吗&#xff0c;又该怎么做呢&#…

[华为OD]C卷 给定一个数组,数组中的每个元素代表该位置的海拔高度 山脉的个数 200

题目&#xff1a; 给定一个数组&#xff0c;数组中的每个元素代表该位置的海拔高度。0表示平地&#xff0c;&#xff1e;1时表示属于某个 山峰&#xff0c;山峰的定义为当某个位置的左右海拔均小于自己的海拔时&#xff0c;该位置为山峰。数组起始位 置计算时可只满足一边…

AI助力后厨可视化智慧监管,让“舌尖安全”看得见

一、背景与需求分析 夏天是食物易腐败的季节&#xff0c;高温容易引发食品安全问题。在后厨环境中&#xff0c;食品安全问题可能涉及食品加工、后厨环境、食品是否被污染等方面&#xff0c;而不合格的食品安全管理可能导致食品中毒事件等风险&#xff0c;损害消费者的健康和餐…

偏微分方程算法之五点菱形差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 上个专栏我们介绍了双曲型偏微分方程的主要算法及实现。从今天开始&#xff0c;我们在新的专栏介绍另一种形式偏微分方程-椭圆型的解法。 研究目标选取经典的二维椭圆型方程&#xff08;也称泊松Poisso…

半导体制造工艺之分类浅述

半导体制造工艺分为逻辑制程(也叫逻辑工艺)和特殊制程(也叫特色工艺)。 1、逻辑工艺概述 随着集成电路行业沿着摩尔定律不断发展,晶体管数量增加的同时,工艺节点不断缩小。先进逻辑工艺是相对的概念,2005年全球先进逻辑工艺的工艺节点在65/55纳米,现在则变为3纳米。中…

好好聊一聊:Agent AI智能体的未来|TodayAI

​​​​​​​ 一、 引言 在当今时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展正不断改变着我们的生活与工作方式。尤其是Agent AI智能体&#xff0c;作为AI技术中的一种重要形式&#xff0c;它们通过模拟人类智能行为来执行各种复杂任务&#xff0c;从…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能&#xff01; 请访问 https://runes.scrypt.io/ 或点击阅读原文体验&#xff01; 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约&#xff0c;但是用原生Script编…

多猫家庭吐血总结!这样选冻干真不踩雷?这几款主食冻干喂出貌美小猫

315中国之声的报道曝光了河北省邢台市南和区某宠粮代工厂的“行业秘密”&#xff0c;这让许多宠物主人感到震惊和不安。配料表上标明的鸡肉含量和新鲜鸡小胸含量看似可观&#xff0c;但背后却是用鸡肉粉替代的真相。我们养宠物是为了增添生活的乐趣&#xff0c;然而这些行业乱象…

实验案例二:配置Trunk,实现相同VLAN的跨交换机通信

1.实验环境 公司的员工人数已达到100人&#xff0c;其网络设备如图12.13所示。现在的网络环境导致广播较多 网速慢&#xff0c;并且也不安全。公司希望按照部门划分网络&#xff0c;并且能够保证一定的网络安全性 其网络规划如下: PC1和 PC3为财务部&#xff0c;属于 VLAN 2&…

Linux驱动开发——(九)platform设备驱动

目录 一、Linux驱动的分离 二、Linux驱动的分层 三、platform平台驱动模型简介 3.1 platform_driver结构体 3.2 device_driver结构体 3.3 platform驱动API函数 四、驱动代码 一、Linux驱动的分离 对于Linux这种庞大而复杂的系统&#xff0c;需要非常注重代码的重用性&a…

Docker-容器的前世今生

文章目录 Docker为什么产生&#xff1f;硬件虚拟化硬件虚拟化解决的问题硬件虚拟化定义硬件虚拟化技术虚拟机的优点虚拟机的缺点 操作系统虚拟化即容器容器化解决的问题容器化定义容器化技术历史 容器和虚拟机对比 Docker的发展历史Docker架构客户端服务端仓库Registry Docker重…

JavaEE 初阶篇-深入了解特殊文件(Properties 属性文件、XML)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Properties 属性文件概述 1.1 Properties 属性文件特性与作用 1.2 使用 Properties 把键值对数据写出到属性文件中 1.3 使用 Properties 读取属性文件里的键值对数…

JMeter 请求头信息配置详解

在进行 Web 测试和 API 测试时&#xff0c;正确配置 HTTP 请求头是关键步骤之一&#xff0c;尤其当使用诸如 JMeter 这样的强大工具时。在本文中&#xff0c;我将详细介绍如何在 JMeter 中有效地配置和管理HTTP请求头。 在 JMeter 中添加和配置 HTTP 请求头 步骤 1: 打开 HTT…

【Redis 开发】多级缓存,本地进程缓存Caffeine

多级缓存 多级缓存本地进程缓存CaffeineCaffeine三种缓存驱逐策略 多级缓存 Redis处理并发的能力是非常强大的&#xff0c;但是tomcat的支持并发的能力跟不上Redis的性能&#xff0c;导致整体性能的下降 Redis缓存失效时&#xff0c;会对数据库产生冲击&#xff0c;之间再无屏…