k8s集群部署:容器运行时
1. 卸载旧版本 Docker
# 卸载旧版本的 Docker 组件
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
注释: 该命令会移除系统中现有的 Docker 及其相关组件,以确保不会与新的 Docker 版本冲突。
2. 二进制包安装 Docker
2.1 下载 Docker RPM 包
访问以下 URL 下载适用于 CentOS 9 ARM64 架构的 Docker RPM 包下载:
https://download.docker.com/linux/centos/9/aarch64/stable/Packages/
注释: 根据系统架构下载相应的 Docker RPM 包文件。
2.2 安装 RPM 包
# 安装 Docker 及相关组件
sudo yum install -y ./containerd.io-1.7.20-3.1.el9.aarch64.rpm \./docker-ce-27.1.2-1.el9.aarch64.rpm \./docker-ce-cli-27.1.2-1.el9.aarch64.rpm \./docker-buildx-plugin-0.16.2-1.el9.aarch64.rpm \./docker-ce-rootless-extras-27.1.2-1.el9.aarch64.rpm \./docker-compose-plugin-2.29.1-1.el9.aarch64.rpm
注释: 通过 yum 安装下载的 Docker 二进制包文件,其中包括 Docker 引擎、CLI 工具、Buildx 插件、Rootless 组件以及 Compose 插件。
2.3 启动并启用 Docker
# 启动 Docker 服务
sudo systemctl start docker
# 设置 Docker 开机自启
sudo systemctl enable docker
注释: 安装完成后,启动 Docker 并将其设置为开机自启,以确保系统重启后 Docker 自动启动。
2.4 验证安装
# 查看 Docker 版本信息
sudo docker version
# 运行 hello-world 容器来确认 Docker 是否工作正常
sudo docker run hello-world
注释: hello-world 容器的成功运行标志着 Docker 已正确安装并可以正常工作。
2.5 使非 root 用户可操作 Docker
# 将 kubernetes 用户添加到 docker 组中
sudo usermod -aG docker kubernetes
注释: 该命令将 kubernetes 用户添加到 docker 组,使其能够无需 root 权限运行 Docker 命令。
# 切换用户会话以使更改生效
su - kubernetes
注释: 用户组的更改需要重新登录才能生效。
# 验证 kubernetes 用户是否加入 docker 组
groups kubernetes
注释: groups 命令应显示 docker 组在 kubernetes 用户的组列表中。
# 使用非 root 用户运行 Docker 命令测试
docker run hello-world
3. 安装 cri-dockerd
3.1 下载 cri-dockerd
从以下地址下载适用于 ARM64 架构的 cri-dockerd下载:
https://github.com/Mirantis/cri-dockerd/releases
3.2 解压 cri-dockerd
# 使用 tar 解压 cri-dockerd 文件
tar -xvzf cri-dockerd-0.3.15.arm64.tgz
注释: 解压后会得到 cri-dockerd 的二进制文件。
3.3 将 cri-dockerd 移动到系统路径
# 将 cri-dockerd 二进制文件复制到 /usr/local/bin 目录
sudo cp cri-dockerd/cri-dockerd /usr/local/bin/
# 设置执行权限
sudo chmod +x /usr/local/bin/cri-dockerd
注释: 将 cri-dockerd 二进制文件移动到系统的可执行路径并赋予可执行权限。
3.4 创建 Systemd 服务文件
# 创建 cri-dockerd 的 systemd 服务文件
sudo vi /etc/systemd/system/cri-docker.service
添加以下内容:
[Unit]
Description=CRI Interface for Docker Application Container Engine # 服务的描述,表示这是Docker的CRI接口
Documentation=https://docs.mirantis.com # 文档链接,供用户查阅详细信息
After=network-online.target firewalld.service docker.service # 这个服务需要在网络服务、firewalld(防火墙服务)、docker服务启动后再启动
Wants=network-online.target # 确保网络在服务启动时已启动
Requires=cri-docker.socket # 要求 cri-docker.socket 作为依赖,在 cri-dockerd 启动时同时启动 socket 文件
[Service]
Type=notify # 通知型服务类型,服务启动后会向 systemd 发送通知表明它已准备好
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.1
# 指定服务启动命令,此处 cri-dockerd 启动并使用 CNI 作为网络插件,指定 pod 的基础镜像为 pause 镜像,用于 Kubernetes 中
ExecReload=/bin/kill -s HUP $MAINPID # 当服务重新加载时发送 HUP 信号,重新启动主进程
TimeoutSec=0 # 禁用超时,允许服务无限期运行
RestartSec=2 # 服务失败后2秒钟后自动重启
Restart=always # 如果服务意外停止,总是自动重启
StartLimitBurst=3 # 在60秒内允许的启动次数为3次
StartLimitInterval=60s # 如果在60秒内超过了允许的启动次数限制,则不再重新启动
LimitNOFILE=infinity # 无限制地允许服务打开的文件数量
LimitNPROC=infinity # 无限制地允许服务可启动的进程数
LimitCORE=infinity # 无限制地允许服务生成的core dump文件大小
TasksMax=infinity # 服务可以创建的进程和线程总数不受限制
Delegate=yes # 将资源控制的管理委托给该服务,允许服务创建的进程和子进程进行自己的资源管理
KillMode=process # 仅杀死主进程而不杀死整个服务的所有子进程
[Install]
WantedBy=multi-user.target # 指定该服务将在多用户目标下启动,即系统进入普通多用户模式时
注释: 该文件定义了 cri-dockerd 的 systemd 服务,确保 cri-dockerd 在系统启动时自动启动。
3.5 创建 Systemd Socket 文件
# 创建 cri-dockerd 的 socket 文件
sudo vi /etc/systemd/system/cri-docker.socket
添加以下内容:
[Unit]
[Unit]
Description=CRI Docker Socket for the API # socket文件的描述,表示这是用于CRI Docker API通信的socket
[Socket]
ListenStream=%t/cri-dockerd.sock # 定义 socket 文件路径,%t 表示系统的运行时目录(通常为 /run)
SocketMode=0660 # 设置 socket 文件权限为0660,拥有者和组有读写权限,其他用户无权访问
SocketUser=root # socket文件由 root 用户拥有
SocketGroup=docker # socket文件属于 docker 组,允许 docker 组内的用户使用该socket
[Install]
WantedBy=sockets.target # 该socket文件将在系统的 sockets.target 下启动,用于管理socket
注释: 该文件配置 cri-dockerd 的 socket 通信。
3.6 启动并启用服务
# 重新加载 systemd 配置以应用更改
sudo systemctl daemon-reload# 启用并启动 cri-docker 服务和 socket
sudo systemctl enable cri-docker.service
sudo systemctl enable cri-docker.socket
sudo systemctl start cri-docker.service
sudo systemctl start cri-docker.socket
注释: 通过 systemctl 启动并启用 cri-docker 服务和 socket。
3.7 验证安装
# 检查 cri-docker 服务状态
sudo systemctl status cri-docker.service
# 检查 cri-docker socket 状态
sudo systemctl status cri-docker.socket
注释: 确认 cri-dockerd 服务和 socket 是否已启动并正在运行。
专栏目录:
1、k8s集群部署:环境准备
2、k8s集群部署:容器运行时
3、k8s集群部署:安装 kubeadm
本文参考:http://www.weifos.com/Home/TechStack/1807017272963891200
相关文章:
k8s集群部署:容器运行时
1. 卸载旧版本 Docker # 卸载旧版本的 Docker 组件 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine注释: 该命令会移除系统中现有的 Docker 及其相关组件࿰…...
PHP7 的内核结构
PHP7 是 PHP 语言的一个重要版本,带来了许多性能提升和语言特性改进。要深入了解 PHP7 的内核,我们需要探讨其设计和实现的关键方面,包括 PHP 的执行模型、内存管理、编译和优化过程等。 1. PHP7 的内核结构 1.1 执行模型 PHP 是一种解释型…...
JVM合集
序言: 1.什么是JVM? JVM就是将javac编译后的.class字节码文件翻译为操作系统能执行的机器指令翻译过程: 前端编译:生成.class文件就是前端编译后端编译:通过jvm解释(或即时编译或AOT)执行.class文件时跨平台的,jvm并不是跨平台的通过javap进行反编译2.java文件是怎么变…...
tomcat端口被占用解决方法
在安装目录的conf下修改server.xml文件,修改后保存重启即可...
全新的训练算法:Reflection 70B进入大众的视野
在2024年9月6日,大模型的圈子迎来了一位新成员——Reflection 70B,它横扫了MMLU、MATH、IFEval、GSM8K等知名的模型基准测试,完美超越了GPT-4o,同时也超越了Claude3.5 Sonnet成为了新的大模型之王,Reflection 70B到底是…...
静态标注rtk文件参数解析
目录 在静态标注中,rtk(Real-Time Kinematic)文件的主要作用 rtk文件包含几种类型数据 具体作用 具体示例 %RAWIMUSA #INSPVAXA $GPRMC 背景: 最近工作中涉及到静态标注 slam相关,因为初入门,对于rtk文件中有很多参数&…...
TensorFlow和PyTorch小知识
TensorFlow和PyTorch是当前最流行的两个开源机器学习库,它们都广泛用于研究和工业界的深度学习项目。下面是对它们的介绍: 1,TensorFlow - **开发背景:** TensorFlow最初由Google Brain Team开发,并于2015年11月开源…...
Java证书信息收集
1.Java二级 【NCRE 二级Java语言程序设计02】考试流程及二级Java大纲_java语言程序设计计算机二级-CSDN博客...
flink写入hudi MOR表
第一步:创建flink内存表从kafka读取数据: DROP TABLE IF EXISTS HUDI_KAFKA_DEBEZIUM_ZHANG; CREATE TABLE IF NOT EXISTS HUDI_KAFKA_DEBEZIUM_ZHANG( ID STRING comment 编码 ,NAME STRING comment 名称 ,PRIMARY KEY(RCLNT,RLDNR,RRCTY,RVERS,RYEAR,…...
智能工厂程序设计 之-2 (Substrate) :三个世界--“存在的意义”-“‘我’的价值的实现” 之2
Q13、我刚看了一下前门前面的讨论。有一段文字您的重新 理解一下。那就是: 对题目 的另一角度( “智能工厂的程序设计”的三个层次词 分别关注的问题 及其 解决 思路的描述)的解释: 三个不同层次(深度)&…...
概要设计例题
答案:A 知识点: 概要设计 设计软件系统的总体结构:采用某种方法,将一个复杂的系统按照功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间…...
注册表模式:使用注册表和装饰器函数的模块化设计
在现代软件开发中,模块化设计是提高代码可维护性和可扩展性的关键技术之一。本文将探讨如何使用注册表(Registry)和装饰器函数(Decorator Function)来实现模块化设计,提升代码的灵活性和可扩展性。 什么是…...
怎样将vue项目 部署在ngixn的子目录下
如果同一服务器的80端口下,需要部署两个或以上数量的vue项目,那么就需要将其中一个vue项目部署在根目录下,其他的项目部署在子目录下. 像这样的配置 访问根目录 / 访问灭火器后台管理,访问 /mall/ 访问商城的后台管理 那么商场的vue项目,这样配置,才能在/mall/下正常访问? 1…...
FPGA开发:Verilog数字设计基础
EDA技术 EDA指Electronic Design Automation,翻译为:电子设计自动化,最早发源于美国的影像技术,主要应用于集成电路设计、FPGA应用、IC设计制造、PCB设计上面。 而EDA技术就是指以计算机为工具,设计者在EDA软件平台上…...
哈希表,算法
一.什么是哈希表 哈希表是一种用于快速数据存取的数据结构。它通过哈希函数将键(key)映射到表中的一个位置,从而实现高效的插入、删除和查找操作。 二.哈希冲突 哈希冲突发生在多个键通过哈希函数映射到哈希表的同一位置时。由于哈希表的大…...
Java数组的定义及遍历
数组的声明 长度不能超过定义的长度。超过则会报错通过下标来访问 数组的遍历 最常用最简单的方法是增强for循环。...
【电路笔记】-反相运算放大器
反相运算放大器 文章目录 反相运算放大器1、概述2、理想反相运算放大器3、实际反相运算放大器3.1 闭环增益3.2 输入阻抗3.3 输出阻抗4、反相运算放大器示例5、总结1、概述 上一篇关于同相运算放大器的文章中已介绍了该运算放大器配置的所有细节,该配置在同相引脚 (+) 上获取输…...
【电子通识】半导体工艺——刻蚀工艺
在文章【电子通识】半导体工艺——光刻工艺中我们讲到人们经常将 Photo Lithography(光刻)缩写成 Photo。光刻工艺是在晶圆上利用光线来照射带有电路图形的光罩,从而绘制电路。光刻工艺类似于洗印黑白照片,将在胶片上形成的图像印…...
vue-router 之如何在模版(template)中获取路由配置信息?
vue-router 之如何在模版(template)中获取路由配置信息? 获取当前路由信息 在vue3 中,route通常使用useRoute()钩子获取的,**代表当前激活的路由信息。**它包含了与当前路由相关的数据,比如路径、参数、查…...
HPL 源码结构分析
文件夹结构: $ cd /home/hipper/ex_hpl_hpcg/ $ pwd $ mkdir ./openmpi $mkdir ./openblas $mkdir ./hpl $ tree 1. 安装openmpi 1.1.1 使用Makefile下载配置编译安装 openmpi Makefile: all:wget https://download.open-mpi.org/release/open-m…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
