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

10.2 容器云部署准备(二)

文章目录

  • 1. Containerd部署
      • 安装需要的安装包
      • 设置docker的软件包仓库
      • 更新yum软件包缓存
      • 安装containerd
      • 修改containerd配置
      • 启动并验证
  • 2. 公共镜像仓库配置(docker hub为例)
      • 修改containerd配置
      • 创建镜像源配置文件
      • 验证
  • 3. 部署runc
      • 手工部署runnc
      • 验证
  • 4. 部署CNI
      • 手工部署CNI


1. Containerd部署

‌containerd‌是Docker剥离的底层容器运行时,负责管理容器生命周期(创建、运行、销毁)、镜像传输、存储和网络等基础功能,可独立于Docker运行。

  • 安装需要的安装包

    yum-utils是一个集合,包含了许多有用的 yum 工具和扩展。

    yum install -y yum-utils
    
  • 设置docker的软件包仓库

    这个命令用于在 yum 包管理器中添加 Docker官方仓库,目的是将 Docker CE 的阿里云镜像仓库添加到系统的 yum 仓库列表中,以便可以从该仓库安装 containerd 及其更新版本,这里使用的是阿里云的镜像仓库。

    [root@docker1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    Loaded plugins: fastestmirror
    adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
    repo saved to /etc/yum.repos.d/docker-ce.repo# 注意,由于麒麟操作系统没有适配的docker官方仓库,所以借用centos的阿里云镜像仓库
    # 目前所使用的麒麟操作系统相当于centos8.0版本,需要修改/etc/yum.repos.d/docker-ce.repo文件
    # 将docker-ce.repo中的$releasever修改为8.0# 查看目前yum源中containerd.io的版本
    yum list --showduplicates containerd.io
    
  • 更新yum软件包缓存

    Yum 在运行时需要依赖一个本地的软件包元数据缓存,这个缓存包含从远程仓库获取的所有可用软件包及其版本、依赖关系等信息。当系统安装了新的 yum 仓库或者仓库中的软件包有更新时,执行 yum makecache命令可以快速重建这个本地缓存。

    yum makecache
    
  • 安装containerd

    通过yum的方式安装来自Docker 官方仓库的containerd,版本可能略旧但经过打包测试。并且自动安装 systemd 服务、目录结构和依赖(常见的有 runc、container-selinux 等),管理起来和升级都更方便。

    GitHub 包:需要你自行确保 runc、CNI plugins(/opt/cni/bin)。

    yum install -y containerd.ioyum install -y cri-tools
    # cri-tools是一组用于与Kubernetes CRI(Container Runtime Interface)交互的命令行工具集,主要包含crictl工具
    

    备注1:建议使用 containerd 1.6.x 或 1.7.x(与 K8s 1.2x/1.3x 系列兼容良好)。过旧版本(如1.2、1.3、1.4)可能与新 K8s 不兼容。

    备注2:runc 与 CNI,必须安装 runc(与 containerd 兼容的版本)和 CNI插件(/opt/cni/bin 下),否则 Pod 无法创建或无法联网。

    备注3:sandbox 镜像:在国内网络建议把 sandbox_image(pause 镜像)改为可访问的镜像仓库,否则创建Pod 可能卡在拉不下 pause。

  • 修改containerd配置

    通过 yum 安装后,config.toml 通常建议先生成一份默认配置,再在其基础上进行修改。.

    # ‌重新生成默认配置
    /usr/bin/containerd config default > /etc/containerd/config.toml#修改containerd的配置文件
    vim /etc/containerd/config.toml#修改内容如下
    # 设定 pause 镜像(选一个当前网络能拉到的)
    [plugins."io.containerd.grpc.v1.cri"] 
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9" 
    # 设定 runc 使用 systemd cgroup(和 kubelet 默认一致,避免资源与驱动不匹配)
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true
    

    备注:修改 sandbox_image 配置的主要目的是指定 Kubernetes Pod 中使用的 pause容器镜像地址。pause 容器是每个 Pod 的基础基础设施容器(Infra Container),负责管理 Pod的命名空间和网络等共享资源。

  • 启动并验证

    # 启动服务
    systemctl start containerd# 配置开启自启动
    systemctl enable containerd# 验证containerd版本
    ctr version
    

2. 公共镜像仓库配置(docker hub为例)

  • 修改containerd配置

    #修改containerd的配置文件
    vim /etc/containerd/config.toml#修改内容如下
    # 给 docker.io 配置可访问的镜像站,相关配置信息路径设置
    [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d"
    
  • 创建镜像源配置文件

    由于docker hub可能存在无法访问的问题,因此给 docker.io 配置可访问的镜像站。

    备注:Kubernetes/CRI 路径已经打开了 config_path =
    “/etc/containerd/certs.d”,所以 kubelet 和 crictl 会用到 hosts.toml;但 ctr
    不会。生产中用 crictl 测试即可。ctr 是低层调试工具,默认行为和 CRI 不同。

    # 创建目录结构
    mkdir -p /etc/containerd/certs.d/docker.io# 编写镜像源规则
    cat >/etc/containerd/certs.d/docker.io/hosts.toml <<EOF
    server = "https://registry-1.docker.io" [host."https://docker.m.daocloud.io"] capabilities = ["pull", "resolve"]
    [host."https://docker.1ms.run"]capabilities = ["pull", "resolve"]
    [host."https://mirror.ccs.tencentyun.com"]capabilities = ["pull", "resolve"]
    [host."https://docker.hlmirror.com"]capabilities = ["pull", "resolve"]
    [host."https://hub.fast360.xyz"]capabilities = ["pull", "resolve"]
    EOF# capabilities: pull(拉取镜像)、resolve(解析镜像名)、push(推送镜像,私有仓库需启用)。
    
  • 验证

    # 拉取镜像进行测试,需要显式指定
    ctr images pull --hosts-dir="/etc/containerd/certs.d" docker.io/library/nginx:latest
    

    ctr 与 CRI(kubelet、crictl)是两条路径:
    CRI 路径:读取 /etc/containerd/config.toml 的[plugins.“io.containerd.grpc.v1.cri”.registry] 配置,并按 config_path 去找 /etc/containerd/certs.d 下的 hosts.toml。
    ctr 路径:不会读取 CRI 配置。是否默认扫描 /etc/containerd/certs.d 取决于版本/编译选项;在 1.6.32 版本上需要显式传入 --hosts-dir 才会用该目录。

3. 部署runc

通过yum安装containerd后,通常会自动部署runc。

  • 手工部署runnc

    [root@master ~]# wget
    https://github.com/opencontainers/runc/releases/download/v1.1.6/runc.amd
    64
    [root@master ~]# install -m 755 runc.amd64 /usr/local/sbin/runc
    
  • 验证

    runc --version# 做一次最小运行测试,若成功输出 OK,说明 containerd+runc 工作正常
    [root@master01 ~]# ctr images pull --hosts-dir /etc/containerd/certs.d docker.io/library/alpine:3.19
    [root@master01 ~]# ctr run --rm --tty docker.io/library/alpine:3.19 t1 echo OK
    OK
    

4. 部署CNI

通过yum安装containerd后,通常会自动部署CNI,至/usr/libexec/cni。

但目前社区推荐CNI安装路径为/opt/cni/bin,因此containerd的配置文件/etc/containerd/config.toml推荐配置如下:

[plugins."io.containerd.grpc.v1.cri".cni]bin_dir = "/opt/cni/bin"conf_dir = "/etc/cni/net.d"

因此,可以通过手工部署CNI的方式进行部署。

http://www.dtcms.com/a/443277.html

相关文章:

  • 铜陵网站建设企业vi设计合同
  • 【文献笔记】NeurIPS 2022 | PointNeXt
  • 安庆建设网站怎么创建网站页面
  • wordpress 众筹网站众筹网站建设方案模板
  • 线性表的实现
  • 传播文化有限公司网站建设查询网138网站域名
  • YOLO入门教程(番外):卷积神经网络—从全连接层到卷积
  • 技术支持 东莞网站建设大型门户网站开发案例
  • Rust程序语言设计(1-4)
  • 做北京电梯招标的网站合肥seo外包平台
  • CodeForces 20251003 - ?
  • node服务端通过socket.io保持长连接通信示例
  • Super-Resolution Delay-Doppler Estimation for OFDM Passive Radar
  • 九江开发区建设环保局网站贵州住房建设厅官网查询
  • 郑州诺耀科技 - 郑州高端网站建设营销推广网站路径怎么做
  • 招聘网站源码下载岳阳市交通建设投资公司门户网站
  • 单细胞空间--免疫细胞与肾脏细胞的时空相互作用调控自身免疫性肾病中肾小球新月体形成
  • 巨野做网站的网站策划与运营考试题
  • 正品海外购网站有哪些中国十大建筑设计院排名
  • Docker Compose 多容器编排实战
  • 初创公司 建网站网站设计和营销
  • 救援启动!
  • Android 事件分发机制 图解
  • 做网站价钱电脑版qq在线登录网页入口
  • 140、【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六)
  • 免费网站建设软件大全wordpress禁止中国ip
  • 有界区域上具有常数右端项的泊松方程解的上界估计
  • 做区位分析的地图网站wordpress主题分类目录主题
  • 网站建设实习每天内容手机网站开发 html
  • 手机网站制作案例教育网站建设备案