当前位置:首页 > 数码 > Kubernetes-容器编排的行业标准 (kubernetes与docker的关系)

Kubernetes-容器编排的行业标准 (kubernetes与docker的关系)

admin8个月前 (05-08)数码31

Kubernetes(简称K8s)是一个开源的容器编排平台,它能够自动化管理容器的部署、扩展、维护和升级。本文将深入探讨 Kubernetes 的概念、特点、应用场景以及未来发展趋势。

1. Kubernetes 的概念和特点

Kubernetes 是一种容器编排平台,它能够自动化管理容器的部署、扩展、维护和升级。Kubernetes 采用了一种分布式系统的架构,能够将容器组织成一个逻辑单元,并提供了一种标准的容器编排方式。

Kubernetes 具有以下特点:

  • 高可用性:Kubernetes 通过冗余和自动故障转移机制确保高可用性。
  • 高扩展性:Kubernetes 可以弹性扩展,以满足不断变化的应用程序需求,从而支持大规模部署。
  • 高灵活性:Kubernetes 允许用户根据自己的需求自定义和扩展平台,从而满足不同的场景。
  • 高安全性:Kubernetes 提供了多层安全措施,包括身份验证、授权和审计,确保容器环境的安全性。
容器编排的行业标准

Kubernetes 的核心组件包括 Master 和 Node 两部分。Master 是 Kubernetes 的控制中心,负责管理整个集群的状态和配置信息,包括 API Server、Scheduler、Controller Manager 和 etcd 等组件。Node 是 Kubernetes 的工作节点,负责运行容器和处理容器的请求,包括 Kubelet、kube-proxy 和容器运行时等组件。

通过这种分布式的架构,Kubernetes 能够实现容器的自动化部署、自动化扩展和自动化维护等功能。

2. Kubernetes 的应用场景

Kubernetes 适用于各种类型的容器应用场景,特别是对于需要快速部署、高可用性和高扩展性要求较高的应用。例如,Web 应用、微服务、大数据处理、机器学习和人工智能等都可以采用 Kubernetes 进行部署和管理。

Kubernetes 还适用于构建各种类型的云原生应用程序,包括容器化的应用、无服务器应用和持续交付等。在实际应用中,Kubernetes 可以与各种现有的技术和服务进行集成,包括 Docker、Helm、Prometheus、Grafana 等。这种灵活的集成方式使得 Kubernetes 具有更广泛的应用场景和更强大的功能扩展能力。

3. Kubernetes 的未来发展趋势

随着容器技术的不断发展和应用的不断拓展,Kubernetes 已成为容器编排的标准,未来的发展趋势也非常乐观。未来,Kubernetes 将更加普及和成熟,成为容器应用开发和部署的主流工具之一。

同时,随着 Kubernetes 生态系统的不断完善和技术的不断进步,Kubernetes 将为容器应用带来更多的创新和发展机遇。预计未来的 Kubernetes 将重点关注以下几个方面:

  • 服务网格集成:Kubernetes 将与服务网格技术紧密集成,为容器应用提供更高级别的网络管理和服务发现功能。
  • 云原生安全:Kubernetes 将进一步加强其安全功能,为容器应用提供更全面的安全保障措施。
  • 边缘计算:Kubernetes 将扩展其支持范围,以支持边缘计算场景,使容器应用能够部署在分布式边缘设备上。
  • 人工智能和机器学习:Kubernetes 将与人工智能和机器学习技术集成,为容器应用提供更智能化的管理和优化功能。

4. 结语

Kubernetes 作为容器编排的标准,其能够自动化管理容器的部署、扩展、维护和升级,提供了一种标准的容器编排方式。其具有高可用性、高扩展性、高灵活性性和高安全性等特点,适用于各种类型的容器应用场景。随着技术的不断进步和应用的不断拓展,Kubernetes 将继续为容器应用带来更多的可能性和机遇,成为容器应用开发和部署的重要工具之一。


从Docker到Kubernetes

2013 年,随着PaaS发展壮大,这个领域的从业者们发现了 PaaS 中最为棘手也最亟待解决的一个问题:究竟如何给应用打包?无论是 Cloud Foundry、OpenShift,还是 Clodify,面对这个问题都没能给出一个完美的答案。一个并不引人瞩目的 PaaS 创业公司 dotCloud,却选择了开源自家的一个容器项目 Docker,正好提供了一种非常便利的打包机制,然后就一发不可收拾,围绕着 Docker 项目进行集成与创新涌现出来,包括Mesosphere公司的Mesos项目等等,Docker 公司也顺势推出了Docker Compose、Swarm 和 Machine“三件套”,docker生态圈很快发展起来了,开启了一个新的容器时代。

2014年6月,谷歌公司正式宣告了Kubernetes项目的诞生。这个时候容器出现多样化,包括google公司lmctfy容器,coreos的rkt容器。Google公司提出和Docker合作,与Docker公司共同推进一个中立的容器运行时库作为Docker项目的核心依赖。此时Docker并不担心,因为它维护的 Docker 社区也足够庞大,Docker项目已是容器生态的标准。于是,2015 年 6 月 22 日,由 Docker 公司牵头,CoreOS、Google、RedHat 等公司共同宣布,Docker 公司将 Libcontainer 捐出,并改名为 RunC 项目,交由一个完全中立的基金会管理,然后以 RunC 为依据,大家共同制定一套容器和镜像的标准和规范,这就是OCI。明显OCI的成立容器玩家们出于自身利益进行干涉的一个妥协结果,所以尽管Docker 是 OCI 的发起者和创始成员,但并没有很积极的去推动,Docker注重是它商业价值。

2015年12月11日,Google、RedHat 等开源基础设施领域玩家们,共同牵头发起了一个名为 CNCF(Cloud Native Computing Foundation)的基金,主要是以kubernetes项目为基础打造一个平台级生态。由于Kubernates项目焕然一新的设计理念和号召力,2016年以后kubernates社区得到了空前的发展。

2016年6月,Docker v.1.12发布,直接内置Docker Swarm(多主机多容器的编排解决方案) 2016年12月, Kubernetes 发布 CRI (Container Runtime Interface, 容器运行时接口)

2017年,Docker 分拆了 Containerd,支持CNI,将这个组件分解为一个单独的项目,使得 Docker 将容器的管理功能移出 Docker 引擎,并移入一个单独的守护进程中,即 Containerd,并将其捐赠给了CNCF社区。同时Docker公司宣布将Docker项目改名为Moby,交给社区自行维护。

2017年10月,Docker公司将自己的主打产品Docker EE 内置Kubernetes项目,预示着Kubernetes的胜出,成为容器编排的标准。

2017年11月 ,K8s支持containerd 2018年 k8s集成containerd,正式GA,把CRI plugin嵌入 containerd中 2019年 rkt 终止使命被CNCF归档 2019 年 Mirantis 收购 Docker 的企业服务

OCI 代表 开放容器标准 , 它标准化了容器工具和底层实现(technologies)之间的大量接口。 他们维护了打包容器镜像(OCI image-spec)和运行容器(OCI runtime-spec)的标准规范。 他们还以runc的形式维护了一个 runtime-spec 的真实实现, 这也是containerd和CRI-O依赖的默认运行时。 CRI 建立在这些底层规范之上,为管理容器提供端到端的标准

全称Container Runtime Interface,(容器运行时接口)是一个用来扩展容器运行时的接口,能让 kubelet 无需重新编译就可以广泛使用各种容器运行时的插件接口。CRI 由protocol buffers和gRPC API还有streaming 库 构成。用户不需要关心内部通信逻辑,而只需要实现定义的接口就可以,包括 RuntimeService 和 ImageService。

其实准确来讲,Docker和容器不是一回事,但Docker普及了Linux容器这种技术模式,并在开发底层技术方面发挥了重要作用。 容器的生态相比于单纯的 Docker,已经进化到了一个更宽广的领域

2020年 Kubernates 宣布移除dockershim,现在1.20版本以后,能使用但是kubelet会打印警告日志。最新消息dockershim 计划在 Kubernetes 1.24 版被移除, 请参阅 移除 Kubernetes 增强方案 Dockershim

主流的容器运行时有 containerd,docker engine,cri-o,Mirantis Container Runtime(商业版)

Containerd是一个工业标准的容器运行时,它强调简单性、健壮性和可移植性。它可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等,是目前适用最广泛。

Containerd 的配置文件默认为 /etc/containerd/[^ssh-copy-id]

containerd 将容器相关的数据持久化在 /var/lib/containerd/中(docker 默认在 /var/lib/docker/)

containerd 提供ctrCLI。 containerd 相比docker, 多了 namespace 概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用 作为命名空间。

容器时依赖task,task 管理容器,删除容器,得先终止task

CRI Tools是社区针对 CRI 接口开发的CLI及验证工具。

它包括两个工具:crictl 和 critest。crictl 是一个容器运行时命令行接口,适用所有CRI兼容的容器运行时,与Docker cli类似功能,但是docker cli只适用于Docker运行时。由于Kubernetes 是支持所有CRI兼容的容器运行时,所以推荐crictl用于 Kubernetes 节点上 pod、容器以及镜像的除错工具。

针对pod操作如下:

critest 则是一个容器运行时的验证测试工具,用于验证容器运行时是否符合 Kubelet CRI 的要求。除了验证测试,critest 还提供了 CRI 接口的性能测试,比如 critest -benchmark

根据上文内容知道Docker也是依赖Containerd,因此安装Docker同时也安装Containerd,那么切Containerd就可以不用再安装,当然你也可以将 Docker 和 containerd 完全卸载掉,然后重新安装。

Containerd 中默认已经实现了 CRI,但是是以 plugin 的形式配置的,之前 Docker 中自带的 containerd 默认是将 CRI 这个插件禁用掉了的(使用配置 disabled_plugins = [cri]),所以这里我们重新生成默认的配置文件来覆盖掉, 具体查看上面Containerd 配置

接下来配置kubelet,修改/etc/sysconfig/kubelet,container-runtime指定容器运行时,默认值是docker, --container-runtime-endpoint指定运行时套接字地址,containerd套接字unix:///run/containerd/

配置完成后启动containerd和kubelet

重启完成后查看节点状态

资深架构师分享:1 天落地的 Kubernetes 容器化方案

Kubernetes 是趋势

Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

2016、2017年开始,各大互联网厂商就已经进行了各种容器化 + Kubernetes的尝试,各种实践证明 Kubernetes 越来越成熟。

Kubernetes 门槛高

然而,Kubernetes 在更大范围内落地的过程却困难重重,原因主要在于其过高的学习门槛:

• 基础知识要求多,Linux、网络、Docker等;

• 集群安装管理复杂;

• Kubernetes 的配置文件 YAML 冗长,对象类型繁多、关联关系复杂

Kuboard 助力

Kuboard 从以下几方面解决 Kubernetes 落地的难题:

Kubernetes 安装手册

通过对 Kubernetes 安装步骤的反复研究,提供了精简的 Kubernetes 安装手册,并且听取网友实际安装过程中的反馈,多次修改和优化,逐渐形成经过检验的、简洁的 Kubernetes 安装手册。

图形化管理界面

提炼 Kubernetes 各核心概念之间的关系,帮助用户理解如何配置 Kubernetes,并以此为依据设计了 Kuboard 工作负载编辑器。使用 Kuboard,用户无需手工编写和维护冗长的 YAML 文件,配合 Kuboard 提供的其他辅助手段,完全通过图形界面就可以实现微服务的部署和维护。

Spring Cloud 微服务部署实战案例

Kuboard 提供 Spring Cloud 在 Kubernetes 上部署的实战案例分析,手把手帮助技术团队完成 Spring Cloud 微服务在 Kubernetes 上的部署和维护。

免费自助

这么好的东西卖多少钱?您完全无需为了使用此方案而进入漫长的商务谈判、内部审批流程。

使用网站上提供的任何文档、资源、方案、软件 完全免费 ,已经有许多技术团队参考这些资料,结合其已有经验,顺利地完成 Kubernetes + 微服务的落地交付。碰到问题时,您也可以通过 Kuboard 社群获得支持, 私信回复“社群”可以免费获取技术支持跟学习资料。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 容器

“Kubernetes-容器编排的行业标准 (kubernetes与docker的关系)” 的相关文章

Go-调度器-理解-深入剖析云原生基础架构-容器以及Linux (调度器模式)

Go-调度器-理解-深入剖析云原生基础架构-容器以及Linux (调度器模式)

在容器中部署的 Go 应用程序通常需要设置 CPU 限制,以确保容器不会耗尽主机上的所有 CPU。但是,由于 Go 运行时不知道在容器上设置的 CPU 限制,因此它可能会使用所有可用的 CPU,从...

容器与虚拟机的优劣势分析-全面解读云计算架构选择 (容器与虚拟机有什么不同)

容器与虚拟机的优劣势分析-全面解读云计算架构选择 (容器与虚拟机有什么不同)

简介 在现代云计算中,容器和虚拟机 (VM) 都是常用的技术,它们在实现资源隔离和应用程序部署方面有着不同的方式和特点。本文将对容器和虚拟机的区别进行详细探讨,以帮助读者更好地理解它们的应用场景...

容器资源分配策略-兼顾稳定性和成本效益 (容器资源管理)

容器资源分配策略-兼顾稳定性和成本效益 (容器资源管理)

弹性云分级保障体系:确保容器服务稳定性 前言 随着假期出行的兴起和需求的增加,弹性云服务面临着巨大的稳定性保障压力。本文将介绍弹性云分级保障体系,旨在通过提供明确的容器资源保障等级,确保不同优先级...

深化探求容器间路由和服务发现-BGP-容器网络通常-Calico (深化探求容器的方法)

深化探求容器间路由和服务发现-BGP-容器网络通常-Calico (深化探求容器的方法)

前言 G行全栈云容器大规模运转在信创主机的虚构机里,发现如跨NUMA访问CPU或许造成性能不平衡、容器网络和IaaSSDN耦合、虚构层自身资源消耗等诸多疑问。为处置这些疑问,G行探求将容器运...

Dockerfile-Buildpack-替代-轻松构建容器镜像-使用 (docker logs)

Dockerfile-Buildpack-替代-轻松构建容器镜像-使用 (docker logs)

在现代的云原生交付领域中,效率、速度和简捷性至关重要。Buildpacks(构建包)已成为一种强大的工具,彻底改变了创建项目的镜像方式。相较于传统的费时费力的 Dockerfile 创建和维...