Docker和K8s关系

k8s 是kubernets的缩写,'8'代表中间的八个字符。

其实 Docker 和 k8s 并非直接的竞争对手,它俩相互依存。 Docker 是一个容器化平台,而 k8s 是 Docker 等容器平台的协调器。

随着容器越来越多出现了一系列新问题:

  • 如何协调和调度这些容器?

  • 如何在升级应用程序时不会中断服务?

  • 如何监视应用程序的运行状况?

  • 如何批量重新启动容器里的程序?

解决这些问题需要容器编排技术,可以将众多机器抽象,对外呈现出一台超大机器。现在业界比较流行的有:k8s、Mesos、Docker Swarm。

在业务发展初期只有几个微服务,这时用 Docker 就足够了,但随着业务规模逐渐扩大,容器越来越多,运维人员的工作越来越复杂,这个时候就需要编排系统解救opers。

应用程序的声明周期

一个成熟的容器编排系统需要具备以下能力:

  • 处理大量的容器和用户

  • 负载均衡

  • 鉴权和安全性

  • 管理服务通信

  • 多平台部署

K8s 架构和组件

k8s 由众多组件组成,组件间通过 API 互相通信,归纳起来主要分为三个部分:

  • Controller Manager,即控制平面,用于调度程序以及节点状态检测。

  • Nodes,构成了Kubernetes集群的集体计算能力,实际部署容器运行的地方。

  • Pods,Kubernetes集群中资源的最小单位。

k8s集群架构图

Docker与k8s 难舍难分

Docker 和 k8s 在业界非常流行,都已经是事实上的标准。

Docker 是用于构建、分发、运行容器的平台和工具。

而 k8s 实际上是一个使用 Docker 容器进行编排的系统,主要围绕 pods 进行工作。Pods 是 k8s 生态中最小的调度单位,可以包含一个或多个容器。

Docker 和 k8s 是根本上不同的技术,两者可以很好的协同工作。

开发实践,灵魂追问

(1)没有 k8s 可以使用 docker 吗?

可以。实际上一些小型公司,在业务不太复杂的情况下都是直接使用 Docker。尽管 k8s 有很多好处,但是众所周知它非常复杂,业务比较简单可以放弃使用 k8s。

(2)没有 Docker 可以使用 k8s 吗?

k8s 只是一个容器编排器,没有容器拿什么编排?!

k8s 经常与 Docker 进行搭配使用,但是也可以使用其他容器,如RunC、Containerted 等。

(3)Docker Swarm 和 k8s 怎么选?

选 k8s。2019年底Docker Enterprise已经出售给Mirantis,Mirantis声明要逐步淘汰Docker Swarm,后续会将 k8s 作为默认编排工具。

参考

链接:https://juejin.cn/post/6913568633813729294

相关推荐
开开心心就好5 小时前
高效账号信息管理工具,可安全随机生成密码
javascript·安全·docker·智能手机·pdf·word·excel
ahhhhaaaa-5 小时前
【k8s】阿里云ACK服务中GPU实例部署问题
阿里云·云原生·容器·kubernetes·云计算
谷新龙0016 小时前
docker compose部署kafka
docker·容器·kafka
ascarl20107 小时前
准确--CentOS 7.9在线安装docker
linux·docker·centos
David爱编程8 小时前
Docker Daemon 调优全解,打造高性能守护进程配置!
后端·docker·容器
张童瑶9 小时前
Docker 下备份 Mariadb 数据库文件
数据库·docker·mariadb
大猩猩爱分享9 小时前
Mac安装docker desktop
macos·docker
MC皮蛋侠客10 小时前
使用Gitlab CI/CD结合docker容器实现自动化部署
ci/cd·docker·gitlab
wearegogog12313 小时前
Docker Buildx 简介与安装指南
运维·docker·容器
955.16 小时前
k8s从入门到放弃之k3s轻量级
云原生·容器·kubernetes