k8s,v1.30.4,安装使用docker

一.前置概念

Docker 与 Kubernetes 共用同一个 containerd 进程 时,只要满足以下 3 个条件,就不会冲突:

检查点要求原因
cgroup-driverkubelet 与 containerd 必须同为 systemd二者不一致会导致 Pod 无法调度
Unix socketkubelet 指向 /run/containerd/containerd.sock;Docker 也复用该 socket不抢占,不重复启动 containerd
端口/目录无重叠
特性cri-dockerdcontainerd (内置 CRI)
本质一个适配器垫片一个完整的容器运行时,原生实现了 CRI 接口
目的为了在 dockershim 被移除后,让用户还能继续使用 Docker Engine作为 Kubernetes 的底层运行时。作为 Kubernetes 默认的、推荐的容器运行时。
架构多一层翻译,复杂度更高。kubelet -> cri-dockerd -> dockerd -> containerd -> runc架构更简洁。kubelet -> containerd (CRI) -> runc
推荐度不推荐。仅作为旧集群迁移的临时过渡方案强烈推荐。是所有新集群的标准选择
未来是旧技术的延伸,会逐步淘汰。是现在和未来的标准。

你有两种主要的实现路径,其核心区别如下表所示:

特性方案 A:安装 Docker 作为独立工具(推荐)方案 B:使用 cri-dockerd 让 K8s 接管 Docker
本质Docker 作为独立的工具,用于构建镜像、运行容器等让 Kubernetes 使用 Docker 作为其底层容器运行时
K8s 运行时保持不变,仍是 containerd需要变更,从 containerd 改为 Docker (通过 cri-dockerd)
管理方式容器和镜像由 Docker 和 containerd 分别管理容器和镜像由 Kubernetes 通过 Docker 统一管理
复杂度,简单安装配置即可,需安装配置 cri-dockerd 并调整 K8s 组件配置
稳定性风险,不影响现有 K8s 集群,更改运行时可能引入风险
适用场景需使用 Docker 命令构建镜像测试容器确实需要让 K8s 使用 Docker 来创建和管理容

二.安装docker

1.解决containerd冲突,安装docker

**注意:安装的docker版本需要支持k8s里面的containerd版本,docker不额外安装containerd,使用同一个containerd

# 确保已安装 yum-utils,它提供了 yumdownloader 命令
sudo yum install yum-utils -y # 添加仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyumdownloader --resolve --destdir=/tmp docker-ce-24.0.* docker-ce-cli-24.0.* docker-compose-plugin 命令说明:--resolve:自动解析并下载所有依赖的包。这个参数非常重要,否则你只下载指定的包,安装时会因为缺少依赖而失败47。--destdir=/tmp:指定将下载的 RPM 包存放于 /tmp 目录。你可以根据需要修改为其他路径。

2.手动强制安装(忽略依赖)

cd /tmp
sudo rpm -Uvh --nodeps docker-ce-24.0.* docker-ce-cli-24.0.*

3.配置

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"storage-driver": "overlay2"
}// 强制 cgroup 驱动为 systemd,与 kubelet 保持一致
// 使用性能较好的overlay2存储驱动

4.启动

# 启动并设为开机自启
systemctl daemon-reload
systemctl enable --now docker
docker version

5.安装docker-compose 

sudo rpm -ivh docker-compose-plugin*-i	install(安装)
-v	verbose(显示详细过程)
-h	hash(进度条)

6.使用的命令查看的容器服务不同,原因containerd的名称空间隔离


(1)虽然物理上是同一个 containerd 进程,Docker 与 Kubernetes 各自把容器放在 不同的 containerd 命名空间:

  • Docker 默认使用 moby

  • Kubernetes CRI 使用 k8s.io

工具命名空间能看到谁的容器
docker ps / docker imagesmoby仅 Docker 手动启动的容器
crictl ps / crictl imagesk8s.io仅 Kubernetes Pod 容器
nerdctl -n k8s.io psk8s.ioPod 容器
# 看看 containerd 里有哪些命名空间
sudo ctr ns ls

(2)把 Docker 镜像搬到 k8s.io

# 把本地 Docker 镜像导出
docker save nginx:latest | sudo ctr -n k8s.io images import -

(3)containerd操作命令


7.使用自己的harbor

(1)containerd默认拉取镜像的地址配置

# 如果没有这个文件
[root@master ~]# containerd config default >/etc/containerd/config.toml[root@master ~]# vim /etc/containerd/config.tomlsandbox_image = "harbor:443/k8s/pause:3.9"#这行配置指定了 containerd 用于创建 Pod 沙箱(sandbox)的镜像。在 Kubernetes 中,每个 Pod 都需要一个基础的沙箱镜像来启动,这个镜像通常是一个轻量级的、只包含基本功能的镜像,用于作为容器运行的基础环境。pause 镜像就是这样一个镜像,它通常用于在 Pod 内部创建一个容器,作为该 Pod 所有其他容器的“父容器”
这意味着 containerd 将从你的 Harbor 仓库中拉取这个特定的 pause 镜像版本。SystemdCgroup = true# 配置镜像仓库
末尾插入:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls]insecure_skip_verify = true
#这部分配置允许 containerd 在与 192.168.88.240:443 通信时跳过 TLS 证书验证。[root@master ~]# systemctl enable --now kubelet containerd
docker pull <Harbor地址>/<项目名>/<镜像名>:<标签>

8.nerdctl命令使用和安装

(1)下载地址

curl -L https://github.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-full-1.7.7-linux-amd64.tar.gz -o nerdctl-full.tar.gz

(2)将下载的文件解压到 /usr/local 目录

sudo tar Cxzvf /usr/local nerdctl-full.tar.gznerdctl --version

(3)命令使用

(2)nerdctl - 开发者之友

场景: 你需要在装了 Containerd 的机器上像用 Docker 一样构建、拉取、运行镜像。

重要提示: 

(1)要操作 K8s 的镜像(在 k8s.io 命名空间),必须加 -n 参数:

(2)拉取镜像必须写完整镜像仓库地址

描述示例
run运行一个容器 (最常用)sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine
ps查看容器列表sudo nerdctl ps -a
images查看镜像列表sudo nerdctl images
pull拉取镜像sudo nerdctl pull nginx:alpine
exec进入容器sudo nerdctl exec -it nginx sh
build构建镜像 (需要 BuildKit)sudo nerdctl build -t my-app:1.0 .
network管理网络sudo nerdctl network ls
compose运行 Docker Composesudo nerdctl compose up -d
名称空间nerdctl namespace ls

(3)配置harbor仓库跳过证书认证

# 1. 创建证书配置目录(目录名必须与镜像仓库地址完全一致)
sudo mkdir -p /etc/containerd/certs.d/harbor:443# 2. 创建 hosts.toml 配置文件
sudo tee /etc/containerd/certs.d/harbor:443/hosts.toml > /dev/null <<EOF
server = "https://harbor:443"[host."https://harbor:443"]capabilities = ["pull", "push", "resolve"]skip_verify = true
EOF# 3. 重启 containerd
sudo systemctl restart containerd

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

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

相关文章

开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究

摘要&#xff1a;本文聚焦于开源AI智能名片链动21模式S2B2C商城小程序在提升客户复购率和转介绍率方面的作用。服务对于促进客户复购和转介绍的重要性不言而喻&#xff0c;维护老客户的成本远低于开发新客户&#xff0c;微商通过推出各项服务来赢得客户忠诚。本文深入探讨开源A…

[数据结构] ArrayList(顺序表)与LinkedList(链表)

目录 1.List 1.1 什么是List 1.2 常用的方法 1.3 List的使用 2. 线性表 3. ArrayList 类(顺序表) 3.1 顺序表定义 3.2 ArrayList链表的功能模拟实现 3.3 ArrayList简介 3.4 ArrayList的构造方法 3.5 ArrayList的遍历 3.5 ArrayList的具体使用实例 3.5.1 杨辉三角 …

Hive使用Tez引擎出现OOM的解决方法

环境是Hive以Tez作为引擎&#xff0c;然后使用客户端&#xff08;比如DataGrip&#xff09;连接Hive运行SQL查询&#xff0c;运行过程中报错信息如下&#xff1a;java.lang.OutOfMemoryError: Java heap space…连接工具以DataGrip为例&#xff0c;解决办法如下&#xff1a; --…

SQL面试题及详细答案150道(81-100) --- 子查询篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 81. 什么是子查询?子查…

笔记:ubuntu安装matlab

记录一下ubuntu安装matlab的过程 一、进入桌面 虽然系统是ubuntu server&#xff0c;但是安装matlab最好还是有桌面。这里使用todesk等工具&#xff0c;进入桌面进行远程安装。 二、创建matlab账号 由于学校已经提供了matlab的账号&#xff0c;只需要用自己的学生邮箱进行注册即…

CentOS 7 编译安装 OpenSSL 3.4.2

CentOS 7默认已经安装了OpenSSL&#xff0c;不过版本比较低 openssl version结果为&#xff1a;OpenSSL 1.0.2k-fips 26 Jan 2017 已经无法满足需求 OpenSSL 源码下载链接&#xff1a;https://www.openssl-library.org/source/ 下载源码包为&#xff1a;https://github.com…

python advance -----object-oriented

alt shift 上下键&#xff0c;行代码上下移动0

具身智能的工程落地:视频-控制闭环的实践路径

引言&#xff1a;从“能算会说”到“会看能做” 具身智能真正的门槛&#xff0c;不在于把模型做得更大&#xff0c;而在于把感知—决策—执行焊成一条低时延、稳态可控的闭环工程链路&#xff1a;从相机/麦克风采集&#xff0c;到编解码与传输&#xff0c;再到边/端推理、指令…

STM32 - Embedded IDE - GCC - 如何在工程中定义一段 NoInit RAM 内存

导言如上所示&#xff0c;Keil创建一段NoInit内存同样是通过图形界面来完成&#xff0c;IRAM2的起始地址0x2000000&#xff0c;大小8bytes。NoInit的意思是程序初始化时&#xff0c;不会将内存清0初始化。如上所示&#xff0c;在MEMORY段&#xff0c;将64K的RAM内存划一块8byte…

MyBatisX代码生成插件在IDEA中的安装配置、连接数据库表生成代码快速开发示例

场景 MyBatisX插件介绍 MybatisX是一款基于IDEA的快速开发插件&#xff0c;由MyBatis-Plus团队开发维护&#xff0c;为效率而生。 它的主要功能如下&#xff1a; 支持mapper.xml和Mapper接口之间方法的互相导航跳转&#xff1b; 内置代码生成器&#xff0c;通过使用GUI的形…

单词分析与助记之数据建表(以production为例)

单词分析与助记数据建表&#xff08;以production为例&#xff09;&#xff1a; id&#xff08;流水号&#xff09;&#xff1a;词形&#xff1a;production配图1-标题&#xff1a;略配图1-地址&#xff1a;略配图2-标题&#xff1a;略配图2-地址&#xff1a;略配图3-标题&…

AI助力决策:告别生活与工作中的纠结,明析抉择引领明智选择

在日常生活与工作中&#xff0c;我们时常会面临各种纠结的决策。从选择一份新工作、创业方向&#xff0c;到决定是否要搬家、换车&#xff0c;每一个决策都可能对我们的未来产生深远影响。然而&#xff0c;面对复杂多变的信息和不确定的未来&#xff0c;如何做出明智的选择成为…

--定位--

GPSRTK GPS组成 GPS分为三部分。 空间星座部分&#xff1a;由至少24颗卫星组成&#xff08;目前有30多颗在轨运行&#xff09;&#xff0c;分布在6个中地球轨道上。保证全球任何地方、任何时间至少能接收到4颗以上的卫星信号。每颗卫星不断播发一种包含卫星星历​&#xff0…

音转文模型对比FunASR与Faster_whisper

FunASR简介 FunASR是由阿里巴巴达摩院开源的语音识别工具包&#xff0c;提供包括语音识别&#xff08;ASR&#xff09;、语音活动检测&#xff08;VAD&#xff09;、标点恢复、语言模型、说话人验证、说话人分离及多说话人ASR等多种功能。FunASR工具包支持工业级语音识别模型的…

uniapp阿里云验证码使用

在 UniApp 中使用阿里云验证码插件&#xff08;aliyun-captcha&#xff09;需要完成微信小程序端的插件配置和项目内的组件使用两个主要步骤&#xff0c;以下是详细流程&#xff1a; 一、微信公众平台配置插件&#xff08;必须&#xff09; 获取插件 AppID 阿里云验证码插件的…

基于开源AI大模型AI智能名片S2B2C商城小程序的情感营销策略研究

摘要&#xff1a;本文聚焦于开源AI大模型AI智能名片S2B2C商城小程序这一新兴商业工具&#xff0c;探讨情感在其营销中的核心地位。情感在营销里是需突出表现的关键要素&#xff0c;价值观与极致化生活方式均是对情感的阐释。在开源AI大模型AI智能名片S2B2C商城小程序的背景下&a…

警惕!你和ChatGPT的对话,可能正在制造分布式妄想

2021年圣诞节&#xff0c;19岁的英籍印度裔男子 贾斯旺辛格柴尔 &#xff08;Jaswant Singh Chail&#xff09;带着一把十字弩闯入温莎城堡&#xff0c;声称要 刺杀英国女王 &#xff0c;为英国历史上的暴行复仇。 这场荒谬的刺杀注定以失败告终。被捕后&#xff0c;他自称是一…

DeepSeek辅助在64位Linux中编译运行32位的asm-xml-1.4程序

在网上搜快速xml解析器时找到一个2012年的asm-xml-1.4程序说是比expat快几倍&#xff0c;有点不信&#xff0c;想编译看看。 下载了源代码, 解压缩到/par&#xff0c;其中obj目录下有预编译好的.o文件。 然后运行如下命令编译示例&#xff0c;出错了 cd /par/asm-xml-1.4/exa…

STM32CubeProgrammer软件安装

STM32CubeProgrammer软件安装 下载地址 【英文界面】STM32CubeProg | Software - STMicroelectronics 【中文界面】STM32CubeProg | Software - 意法半导体STMicroelectronics 下载 点击获取最新版本下载安装包登录ST账号进行下载当Edge浏览器下载失败时, 换个浏览器下载下…

数据结构_栈(C语言实现)超详细_Leetcode_20. 有效的括号

目录栈引出栈的定义数据定义栈结构体的定义结构操作- intitStack- freeStack()- empty()- isFull()- top()- pop()- push()- outAll()- 测试完整代码练习题目&#xff1a;Leetcode_20. 有效的括号代码模拟函数调用栈栈引出 栈&#xff0c;在我们日常生活中也非常常见&#xff…