编辑
2024-06-01
👨‍🎓 无限进步
00
请注意,本文编写于 383 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

DevOps vs. SRE vs. Platform Engineering. What is the difference?
What is k8s (Kubernetes)?
Docker vs. Kubernetes. Which one should we use?
How does Docker work?

DevOps vs. SRE vs. Platform Engineering. What is the difference?

DevOps、SRE和平台工程的概念在不同时期出现,并由不同的个人和组织发展而来。

image.png

DevOps作为一个概念是由Patrick Debois和Andrew Shafer在2009年的敏捷会议上提出的。他们试图通过促进协作文化和对整个软件开发生命周期的共同责任来弥合软件开发与运营之间的鸿沟。

SRE,即站点可靠性工程,是由谷歌在21世纪初为解决管理大规模复杂系统的运营挑战而开创的。谷歌开发了SRE实践和工具,如Borg集群管理系统和Monarch监控系统,以提高其服务的可靠性和效率。

平台工程是一个较新的概念,建立在SRE工程的基础上。平台工程的精确起源不太清楚,但它通常被认为是对DevOps和SRE实践的扩展,专注于为产品开发提供一个全面的平台,支持整个业务视角。

值得注意的是,虽然这些概念在不同的时间出现,但它们都与改进软件开发与运营中的协作、自动化和效率的更广泛趋势有关。

What is k8s (Kubernetes)?

K8s is a container orchestration system. It is used for container deployment and management. Its design is greatly impacted by Google’s internal system Borg.

image.png

一个k8s集群由一组工作机器组成,称为节点,它们运行容器化应用程序。每个集群至少有一个工作节点。

工作节点承载Pod,这是应用程序工作负载的组成部分。控制平面管理集群中的工作节点和Pod。在生产环境中,控制平面通常在多台计算机上运行,并且一个集群通常运行多个节点,提供容错和高可用性。

控制平面组件

  1. API服务器: API服务器与k8s集群中的所有组件通信。对Pod的所有操作都是通过与API服务器通信执行的。

  2. 调度器: 调度器监视Pod工作负载并分配新创建的Pod上的负载。

  3. 控制器管理器 :控制器管理器运行控制器,包括节点控制器、作业控制器、EndpointSlice控制器和ServiceAccount控制器。

  4. Etcd: etcd是一个键值存储,用作Kubernetes所有集群数据的后端存储。

节点

  1. Pods: Pod是一组容器,是k8s管理的最小单位。Pod具有一个IP地址,应用于Pod内的每个容器。

  2. Kubelet: 一个在集群的每个节点上运行的代理。它确保容器在Pod中运行。

  3. Kube Proxy: Kube-proxy是运行在集群每个节点上的网络代理。它将来自服务的流量路由到节点。它将工作请求转发到正确的容器。

Docker vs. Kubernetes. Which one should we use?

image.png

Docker是一个开源平台,允许您将应用程序打包、分发并在隔离的容器中运行。它专注于容器化,提供轻量级环境,封装应用程序及其依赖关系。

Kubernetes,通常被称为K8s,是一个开源容器编排平台。它提供了一个框架,用于自动化跨节点集群的容器化应用程序的部署、扩展和管理。

两者之间的区别在于:

  • Docker:Docker在单个操作系统主机上的单个容器级别运行。您必须手动管理每个主机,并为多个相关容器设置网络、安全策略和存储可能会很复杂。
  • Kubernetes:Kubernetes在集群级别运行。它管理跨多个主机的多个容器化应用程序,为负载平衡、扩展和确保应用程序所需状态等任务提供自动化。

简而言之,Docker专注于容器化和在单个主机上运行容器,而Kubernetes专门负责跨主机集群管理和编排容器。

How does Docker work?

The diagram below shows the architecture of Docker and how it works when we run “docker build”, “docker pull” and “docker run”.

image.png Docker架构中有3个组件:

  1. Docker客户端:Docker客户端与Docker守护进程通信。
  2. Docker主机: Docker守护进程监听Docker API请求并管理Docker对象,如镜像、容器、网络和卷。
  3. Docker注册表: Docker注册表存储Docker镜像。Docker Hub是一个任何人都可以使用的公共注册表。

让我们以“docker run”命令为例。

  1. Docker从注册表中拉取镜像。
  2. Docker创建一个新容器。
  3. Docker为容器分配一个读写文件系统。
  4. Docker创建一个网络接口,将容器连接到默认网络。
  5. Docker启动容器。

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!