【云原生】k8s新版本与Docker和Containerd的关联关系

简介: 【云原生】k8s新版本与Docker和Containerd的关联关系

在较新版本的 Kubernetes 中,Docker 和 Containerd 之间的关系是相互独立的,而不是替代关系。具体来说,Kubernetes 1.20 版本之后,默认推荐使用 Containerd 作为容器运行时,而不再依赖于 Docker。

       Kubernetes 1.20 版本引入了 CRI(Container Runtime Interface)的稳定版本,它定义了 Kubernetes 与容器运行时之间的标准接口。这样,Kubernetes 可以与任何符合 CRI 标准的容器运行时进行交互,而不仅仅局限于 Docker。

       Docker 仍然可以作为 Kubernetes 的容器运行时之一,但不再是默认选择。Kubernetes 1.20 版本及以后的版本,通过 CRI 接口与容器运行时进行通信,其中 Containerd 是一个常见的容器运行时选择。

       Containerd 是一个独立的开源项目,它提供了容器的生命周期管理和基本的容器运行功能。它符合 CRI 标准,与 Kubernetes 集成紧密。因此,Containerd 成为了 Kubernetes 最常用的容器运行时之一,并且许多 Kubernetes 发行版都默认使用 Containerd 作为其推荐的容器运行时。

       需要注意的是,Kubernetes 仍然可以与其他符合 CRI 标准的容器运行时集成,例如 CRI-O 和 rkt。这样,用户可以根据自己的需求和偏好选择合适的容器运行时,以在 Kubernetes 中管理和运行容器。

1.在安装k8s新版本时,没有检测到系统安装了 docker,k8s会用什么代替?

       在安装较新版本的 Kubernetes 时,如果系统上没有检测到已安装 Docker,Kubernetes 可以使用其他容器运行时代替 Docker。在 Kubernetes 中,有几个常见的容器运行时可供选择:

       1. Containerd:Containerd 是一个轻量级的容器运行时,最初是作为 Docker 的一部分开发的,后来成为一个独立的项目。Containerd 提供了容器的生命周期管理和基本的容器运行功能,可以作为 Kubernetes 的容器运行时。大多数 Kubernetes 发行版都支持 Containerd。

       2. CRI-O:CRI-O 是一个专门为 Kubernetes 设计的轻量级容器运行时,符合 Kubernetes Container Runtime Interface (CRI) 标准。它提供了对容器的生命周期管理和运行支持,并与 Kubernetes 紧密集成。CRI-O 使用 OCI(Open Container Initiative)标准来运行和管理容器。

       3. rkt(Rocket):rkt 是另一个可选的容器运行时,由 CoreOS 开发。rkt 提供了容器的管理和运行功能,并具有一些安全特性和设计原则,例如强调与主机系统的解耦和简化容器运行的复杂性。

       这些容器运行时都可以作为替代方案使用,以在没有 Docker 的情况下运行 Kubernetes。它们与 Kubernetes 的容器管理组件(如 kubelet 和 kube-proxy)集成,能够管理和调度容器,并执行与 Docker 类似的功能,如网络配置、存储卷管理和容器生命周期管理。

       具体选择哪个容器运行时取决于你的需求、偏好以及所使用的 Kubernetes 发行版。在安装 Kubernetes 时,可以根据文档或指南中的说明选择合适的容器运行时,并按照相关的安装步骤进行配置。

2.在安装过程中k8s如何跟docker关联的?

       在安装过程中,Kubernetes(k8s)与Docker之间的关联主要通过容器运行时(Container Runtime)来实现。默认情况下,Kubernetes使用Docker作为其容器运行时,但也可以选择其他容器运行时,如Containerd、CRI-O等。

以下是在安装过程中Kubernetes与Docker关联的一般步骤:

  1. 安装Docker:首先,需要在目标主机上安装Docker引擎。具体安装步骤可能因操作系统而异。可以参考Docker官方文档或操作系统相关文档来执行安装步骤,并确保Docker成功安装和启动。
  2. 配置Docker:一般情况下,Kubernetes使用Docker的默认配置即可正常运行。但在某些情况下,可能需要根据Kubernetes的要求进行一些配置更改。例如,需要启用Docker的远程访问(如果Kubernetes主节点和工作节点分别在不同的机器上),或者调整Docker的Cgroup驱动等。这些配置更改可以在Docker的配置文件中进行。
  3. 安装Kubernetes:在正确安装和配置Docker后,可以继续安装Kubernetes。Kubernetes的安装过程通常涉及使用工具(如kubeadm、kops、minikube等)进行集群初始化和配置。在安装过程中,Kubernetes会与Docker进行交互,以创建和管理容器。
  4. 验证关联:安装完成后,可以通过kubectl命令行工具或Kubernetes的API来验证Kubernetes与Docker之间的关联。你可以使用kubectl运行一些容器相关的命令,例如创建和管理Pod、Deployment等,然后观察Docker是否正确地创建和运行容器。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
131 77
|
21天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
23天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
19天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
41 1
|
25天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
26天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
19天前
|
Kubernetes 开发者 Docker
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
22天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
26天前
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序
|
27天前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用