kubernetes是什么(看这篇就够了)

kubernetes是什么(看这篇就够了)-mikechen

Kubernetes是云技术的最核心的部分,也是云原生的基石,下面我就全面来详解Kubernetes@mikechen

kubernetes是什么

Kubernetes通常缩写为K8s,是一个开源的容器编排和管理平台,用于自动化部署、扩展和操作容器化应用程序。

Kubernetes最初由Google开发,并捐赠给云原生计算基金会(CNCF)进行维护。

 

kubernetes功能特点

Kubernetes提供了一种跨多个主机进行容器化应用程序部署、扩展和管理的标准机制。

1.自动化运维平台

中小型企业以及大型互联网公司,可以使用Kubernetes构建一套自动化运维平台,从而降本增效。

kubernetes是什么(看这篇就够了)-mikechen

K8s + Docker 可以保持开发、测试、生产环境一致,而且部署一个新的环境, 只需要执行一些命令行即可比较方便。

 

2. 容器编排

容器编排是指自动化和协调多个容器实例的部署、升级、伸缩和运维工作

Kubernetes能够协调和调度多个容器,确保它们按照用户定义的规则和策略进行运行。

 

3. 弹性和伸缩

Kubernetes能够根据应用程序的负载自动进行伸缩,增加或减少容器实例的数量,以满足应用程序的性能需求。

 

4. 健康检查和自愈

Kubernetes通过定期的健康检查机制监测应用程序的状态,如果发现容器处于不正常状态,会自动进行恢复,以确保应用程序的可用性。

5. 插件和扩展

Kubernetes提供了丰富的插件和扩展机制,可以集成各种不同的服务和工具,满足不同场景的需求。

 

kubernetes架构

Kubernetes架构,主要涉及到:Master节点、Node节点、AIP节点..等等。

如下图所示:

kubernetes是什么(看这篇就够了)-mikechen

Master节点

Master节点,是Kubernetes集群的控制中心,负责:管理、和调度集群中的各个资源。

Master节点包含:了多个关键组件,每个组件都承担着不同的角色,主要会涉及到:

Scheduler(调度器)

Scheduler(调度器),主要负责:监控集群中的Pod,并将其调度到合适的Node上运行。

Scheduler根据Pod的调度策略(如:资源需求、亲和性规则…等),选择最合适的Node,并将Pod绑定到选定的Node上。

 

 Controller Manager(控制器管理器)

Controller Manager(控制器管理器),主要负责:控集群中的资源对象的状态,并确保其按照期望的状态运行。

Controller Manager包含了多个控制器,常见的控制器包括:

kubernetes是什么(看这篇就够了)-mikechen

  • Replica Controller:确保Pod的副本数与期望值一致,并根据需要自动扩展或缩减副本数。
  • Node Controller:负责监控和管理集群中的Node节点,并确保其状态正常。
  • Service Controller:负责监控Service对象的变化,并更新负载均衡器以确保服务的可访问性。

这些组件,使得 Kubernetes 集群能够实现自动化的资源管理,并且,提高了集群的可靠性、可用性和可扩展性。

 

etcd(键值存储)

etcd是分布式键值存储系统,用于存储集群的配置信息、状态信息、和元数据。

所有的集群状态,都被存储在etcd中,包括:节点信息、资源分配情况、Pod状态…等。

而且,etcd还提供了强一致性的分布式存储,并支持Watch机制用于实时监控集群状态的变化。

 

Node节点

Node节点是Kubernetes集群中的工作节点,用于运行容器化应用程序、和服务。

每个Node节点。主要会包含以下几个关键组件:

  • Kubelet:负责管理Node节点上的Pod和容器,通过与API Server通信来获取Pod的配置信息,并维持Pod的运行状态。
  • Kube Proxy:负责实现Kubernetes Service的负载均衡、和网络代理功能,将请求路由到对应的Pod上。
  • Container Runtime:负责在Node节点上运行和管理容器,如:Docker、containerd…等。

 

kubernetes VS Docker关系

kubernetes是什么(看这篇就够了)-mikechen

Docker是一种容器化平台,允许开发者将应用程序,及其所有依赖项打包到一个称为容器的可移植单元中。

Kubernetes是一个容器编排、和管理平台,用于自动化容器的部署、扩展和操作。

两者的关系,主要体现在如下几点:

  • 角色不同: Docker是一种容器技术的实现,而Kubernetes是一个容器编排和管理平台。
  • 层次关系: Docker可以视为底层的容器引擎,而Kubernetes则是更高层次的容器编排系统。
  • 功能不同: Docker主要关注容器的创建和运行,而Kubernetes关注容器的编排、调度、服务发现和自动化运维。
  • 适用范围: Docker适用于单个主机上的容器化应用,而Kubernetes适用于跨多个主机的分布式、微服务化应用。

通常,这两者一起使用,Docker负责构建和运行容器,而Kubernetes负责在生产环境中对这些容器进行编排和管理。

陈睿mikechen

十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法