DevOps、SRE和平台工程的概念在不同时期出现,并由不同的个人和组织发展而来。
DevOps作为一个概念是由Patrick Debois和Andrew Shafer在2009年的敏捷会议上提出的。他们试图通过促进协作文化和对整个软件开发生命周期的共同责任来弥合软件开发与运营之间的鸿沟。
SRE,即站点可靠性工程,是由谷歌在21世纪初为解决管理大规模复杂系统的运营挑战而开创的。谷歌开发了SRE实践和工具,如Borg集群管理系统和Monarch监控系统,以提高其服务的可靠性和效率。
平台工程是一个较新的概念,建立在SRE工程的基础上。平台工程的精确起源不太清楚,但它通常被认为是对DevOps和SRE实践的扩展,专注于为产品开发提供一个全面的平台,支持整个业务视角。
值得注意的是,虽然这些概念在不同的时间出现,但它们都与改进软件开发与运营中的协作、自动化和效率的更广泛趋势有关。
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.
一个k8s集群由一组工作机器组成,称为节点,它们运行容器化应用程序。每个集群至少有一个工作节点。
工作节点承载Pod,这是应用程序工作负载的组成部分。控制平面管理集群中的工作节点和Pod。在生产环境中,控制平面通常在多台计算机上运行,并且一个集群通常运行多个节点,提供容错和高可用性。
控制平面组件
API服务器: API服务器与k8s集群中的所有组件通信。对Pod的所有操作都是通过与API服务器通信执行的。
调度器: 调度器监视Pod工作负载并分配新创建的Pod上的负载。
控制器管理器 :控制器管理器运行控制器,包括节点控制器、作业控制器、EndpointSlice控制器和ServiceAccount控制器。
Etcd: etcd是一个键值存储,用作Kubernetes所有集群数据的后端存储。
节点
Pods: Pod是一组容器,是k8s管理的最小单位。Pod具有一个IP地址,应用于Pod内的每个容器。
Kubelet: 一个在集群的每个节点上运行的代理。它确保容器在Pod中运行。
Kube Proxy: Kube-proxy是运行在集群每个节点上的网络代理。它将来自服务的流量路由到节点。它将工作请求转发到正确的容器。
Docker是一个开源平台,允许您将应用程序打包、分发并在隔离的容器中运行。它专注于容器化,提供轻量级环境,封装应用程序及其依赖关系。
Kubernetes,通常被称为K8s,是一个开源容器编排平台。它提供了一个框架,用于自动化跨节点集群的容器化应用程序的部署、扩展和管理。
两者之间的区别在于:
简而言之,Docker专注于容器化和在单个主机上运行容器,而Kubernetes专门负责跨主机集群管理和编排容器。
The diagram below shows the architecture of Docker and how it works when we run “docker build”, “docker pull” and “docker run”.
Docker架构中有3个组件:
让我们以“docker run”命令为例。
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!