热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于容器:Docker-被K8S抛弃别慌分分钟转型-Containerd

Kubernetes官网发布公告,发表自v1.20起放弃对Docker的反对。目前,Kubelet中的Docker反对性能现已弃用,并将在之后的版本中被删除。

Kubernetes 官网发布公告,发表自 v1.20 起放弃对 Docker 的反对。目前,Kubelet 中的 Docker 反对性能现已弃用,并将在之后的版本中被删除。

再来看上面这张图(起源网络)

从上图中能够看出 docker 对容器的治理和操作根本都是通过 containerd 实现的。所以,如果大家想从 docker 迁徙进去,那么 Containerd 是一个十分不错的先择。

明天,民工哥就和大家来聊一聊这个开源技术 Containerd。

Containerd 概述

很早之前的 Docker Engine 中就有了containerd,只不过当初是将 containerd 从 Docker Engine 里分离出来,作为一个独立的开源我的项目,指标是提供一个更加凋谢、稳固的容器运行基础设施。分离出来的 containerd 将具备更多的性能,涵盖整个容器运行时治理的所有需要,提供更弱小的反对。

简略的来说,containerd 是一个工业级规范的容器运行时,它强调简略性、健壮性和可移植性。containerd能够在宿主机中治理残缺的容器生命周期,包含容器镜像的传输和存储、容器的执行和治理、存储和网络等

地址:https://github.com/containerd…

containerd 架构

其中,grpc 模块向下层提供服务接口,metrics 则提供监控数据(cgroup 相干数据),两者均向下层提供服务。containerd 蕴含一个守护过程,该过程通过本地 UNIX 套接字裸露 grpc 接口。

storage 局部负责镜像的存储、治理、拉取等 metadata 治理容器及镜像的元数据,通过bootio存储在磁盘上 task — 治理容器的逻辑构造,与 low-level 交互 event — 对容器操作的事件,下层通过订阅能够晓得产生了什么事件 Runtimes — low-level runtime(对接 runc)

Containerd 能做什么??

  • 治理容器的生命周期(从创立容器到销毁容器)
  • 拉取/推送容器镜像
  • 存储管理(治理镜像及容器数据的存储)
  • 调用 runC 运行容器(与 runC 等容器运行时交互)
  • 治理容器网络接口及网络

从 k8s 的角度看,抉择 containerd作为运行时的组件,它调用链更短,组件更少,更稳固,占用节点资源更少。

上图起源 containerd官方网站,containerd可用作 Linux 和 Windows 的守护程序。它治理其主机零碎的残缺容器生命周期,从图像传输和存储到容器执行和监督,再到低级存储到网络附件等等。

装置

下载地址:https://containerd.io/downloads/

[root@centos7 ~]# wget https://github.com/containerd/containerd/releases/download/v1.5.2/containerd-1.5.2-linux-amd64.tar.gz
[root@centos7 ~]# tar zxf containerd-1.5.2-linux-amd64.tar.gz -C /usr/local/

#通过下面的操作,将containerd 装置至/usr/local/bin目录下
[root@centos7 ~]# cd /usr/local/bin/
[root@centos7 bin]# ll
total 98068
-rwxr-xr-x 1 root root   214432 Mar 29 05:20 bpytop
-rwxr-xr-x 1 1001  116 49049696 May 19 12:56 containerd
-rwxr-xr-x 1 1001  116  6434816 May 19 12:56 containerd-shim
-rwxr-xr-x 1 1001  116  8671232 May 19 12:57 containerd-shim-runc-v1
-rwxr-xr-x 1 1001  116  8683520 May 19 12:57 containerd-shim-runc-v2
-rwxr-xr-x 1 1001  116 27230976 May 19 12:56 ctr
lrwxrwxrwx 1 root root        6 Mar 28 00:13 nc -> netcat
-rwxr-xr-x 1 root root   126800 Mar 28 00:13 netcat

生成默认配置文件

[root@centos7 bin]# containerd config default > /etc/containerd/config.toml
[root@centos7 bin]# ll /etc/containerd/config.toml 
-rw-r--r-- 1 root root 6069 Jun  4 14:47 /etc/containerd/config.toml

配置 containerd 作为服务运行

[root@centos7 ~]# touch /lib/systemd/system/containerd.service
[root@centos7 bin]# vim /lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Delegate=yes
KillMode=process
LimitNOFILE=1048576
# 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

[Install]
WantedBy=multi-user.target

启动服务

[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl start containerd.service
[root@centos7 ~]# systemctl status containerd.service

containerd 应用

其实,史上最轻量 Kubernetes 发行版 K3s 默认就包含了 containerd、Flannel、CoreDNS 组件。

  • ctr:是containerd自身的CLI
  • crictl :是Kubernetes社区定义的专门CLI工具
[root@centos7 ~]# ctr version
Client:
  Version:  v1.5.2
  Revision: 36cc874494a56a253cd181a1a685b44b58a2e34a
  Go version: go1.16.4

Server:
  Version:  v1.5.2
  Revision: 36cc874494a56a253cd181a1a685b44b58a2e34a
  UUID: ebe42dac-40ae-4af1-99b0-52e61728c918

帮忙信息

[root@centos7 ~]# ctr --help
NAME:
   ctr - 
        __
  _____/ /______
 / ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/

containerd CLI


USAGE:
   ctr [global options] command [command options] [arguments...]

VERSION:
   v1.5.2

DESCRIPTION:
   
ctr is an unsupported debug and administrative client for interacting
with the containerd daemon. Because it is unsupported, the commands,
options, and operations are not guaranteed to be backward compatible or
stable from release to release of the containerd project.

COMMANDS:
   plugins, plugin            provides information about containerd plugins
   version                    print the client and server versions
   containers, c, container   manage containers
   content                    manage content
   events, event              display containerd events
   images, image, i           manage images
   leases                     manage leases
   namespaces, namespace, ns  manage namespaces
   pprof                      provide golang pprof outputs for containerd
   run                        run a container
   snapshots, snapshot        manage snapshots
   tasks, t, task             manage tasks
   install                    install a new package
   oci                        OCI tools
   shim                       interact with a shim directly
   help, h                    Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug                      enable debug output in logs
   --address value, -a value    address for containerd's GRPC server (default: "/run/containerd/containerd.sock") [$CONTAINERD_ADDRESS]
   --timeout value              total timeout for ctr commands (default: 0s)
   --connect-timeout value      timeout for connecting to containerd (default: 0s)
   --namespace value, -n value  namespace to use with commands (default: "default") [$CONTAINERD_NAMESPACE]
   --help, -h                   show help
   --version, -v                print the version

查看与删除

[root@centos7 ~]# ctr container list
CONTAINER    IMAGE                             RUNTIME                  
nginx        docker.io/library/nginx:alpine    io.containerd.runc.v2    
[root@centos7 ~]# ctr container del nginx
[root@centos7 ~]# ctr container list
CONTAINER    IMAGE    RUNTIME   

pull镜像文件

[root@centos7 ~]# ctr images pull docker.io/library/nginx:alpine

查看镜像文件列表

[root@centos7 ~]# ctr images list
REF                            TYPE                                                      DIGEST                                                                  SIZE    PLATFORMS                                                                                LABELS 
docker.io/library/nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:0f8595aa040ec107821e0409a1dd3f7a5e989501d5c8d5b5ca1f955f33ac81a0 9.4 MiB linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x - 

运行容器

[root@centos7 ~]# ctr run -d docker.io/library/nginx:alpine nginx
[root@centos7 ~]# ctr container list
CONTAINER    IMAGE                             RUNTIME                  
nginx        docker.io/library/nginx:alpine    io.containerd.runc.v2 

一圈应用下来,基本上与docker的命令相差无几,应用上没有什么大的学习老本,所以,无论是 Kubernetes 是否反对 docker,对于咱们使用者来讲,问题不大。

更多相干的介绍与实际操作指南,大家能够参阅官网文档,都有具体的应用阐明。


推荐阅读
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
author-avatar
Fmyu的守护天使
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有