zoukankan      html  css  js  c++  java
  • k8s-"kubernetes将弃用docker"

    (3) k8s将弃用docker
    1) k8s将在1.23版本彻底弃用docker,改用containerd,但Docker 作为容器镜像构建工具的作用将不
    受影响,用其构建的容器镜像将一如既往地在集群中与所有容器运行时正常运转。Docker生成的镜像实
    际上并不特定于Docker,更准确地说它应该属于OCI(Open Container Initiative-开放容器倡议)镜像。

    2) docker
    当年的实现被拆分出了几个标准化的模块,标准化的目的是模块是可被其他实现替换的,不
    由任何一个厂商控制。docker docker-client ,dockerd,containerd,docker-shim,runc组成,所
    containerddocker的基础组件之一,containerd 被捐赠给CNCF社区后,社区给其添加了镜像管
    理模块和CRI模块,这样containerd不只可以管理容器的生命周期,还可以直接作为 K8s 的运行时使用。

    3)
    kubernetes平台中,为了解决与容器运行时(例如docker),集成的问题,在早期社区推出CRI(
    container Runtime interface,
    容器运行时接口),以支持更多的容器运行时,比如红帽的CRI-OPodman
    。当我们使用docker作为容器运行时之后,架构图如下所示,kubernetes计划弃用的是kubelet
    dockershim,即kubernetes kubelet实现中的组件之一,它能够与docker engine进行通信。
    clip_image002[4] 

    4) kubelet
    调用链
    # Docker
    作为 k8s 容器运行时,调用关系如下
    kubelet --> dockershim (
    kubelet 进程中) --> dockerd --> containerd
    # Containerd
    作为 k8s 容器运行时,调用关系如下
    kubelet --> cri plugin(
    containerd 进程中) --> containerd

    5)
    k8s的角度看,可以选择 containerd docker 作为运行时组件,Containerd调用链更短,组件更少,更稳定,占用节点资源更少。
    docker
    内部调用链比较复杂,多层封装和调用,导致性能降低,提升故障率,不易排查,docker还会在宿主机上创建网络规则,存储卷,也带来了安全隐患。
    K8s
    提供了更强的卷挂载能力和集群级别的网络能力,在集群中kubelet只会使用到 docker 提供的镜像下载和容器管理功能,而编排、网络、存储等功能都不会用到。
    containerd
    docker相兼容,相比docker轻量很多,目前较为成熟。
  • 相关阅读:
    JQuery 判断某个属性是否存在 hasAttr
    微信支付开发-Senparc.Weixin.MP详解
    c# 两个数组比较,将重复部分去掉,返回不重复部分
    String.Format数字格式化输出 {0:N2} {0:D2} {0:C2
    asp.net 时间比较,常用于在某段时间进行操作
    关于C#正则表达式MatchCollection类的总结,正则表达式的应用
    开发错误11:Configuration with name ‘default’ not found
    Android新旧版本Notification
    Okio 1.9简单入门
    Android  PNG透明图片转JPG格式背景变黑
  • 原文地址:https://www.cnblogs.com/LiuChang-blog/p/15193998.html
Copyright © 2011-2022 走看看