目录
一、Kubernetes简介
二、Kubernetes的核心作用
三、Kubernetes架构图例
四、Kubernetes核心概念
Harbor仓库概述:
Master----管理组件:
API Server(集群之心):
Scheduler(调度大师):
ControllerManager(集群管家):
Etcd(集群记忆库):
Node---计算节点
Kubelet(节点守护者):
Kube-proxy(网络调度师):
Runtime(容器铸造师):
K8S常用核心概念
Cluster(集群)
Container(容器)
Pod(部署单元)
Service(服务)
Label(标签)
Namespace(名称空间)
Deployment(资源对象)
一、Kubernetes简介
K8S,全称Kubernetes,是一个开源的容器编排系统,它旨在自动化容器化应用程序的部署、扩展和管理。随着云原生技术的兴起,K8S已成为现代应用开发和运维领域的重要工具之一。
K8S的出现背景在于,随着云计算和容器技术的快速发展,企业面临着越来越多的挑战,如如何高效地管理大量容器、如何确保应用程序的高可用性和可扩展性、如何简化复杂的部署和运维流程等。K8S通过提供一套强大的容器编排功能,帮助企业解决了这些问题。
二、Kubernetes的核心作用
- K8S能够自动化地管理容器的生命周期,包括创建、调度、更新和销毁等过程。它通过智能的调度算法,将容器分配到最合适的节点上运行,以最大化资源利用率和提高应用程序的性能。
- K8S提供了丰富的服务发现和负载均衡功能,使得容器之间可以方便地相互通信,并且能够自动处理容器的故障转移和扩展。这大大简化了应用程序的架构设计和运维管理。
- K8S还支持滚动更新和回滚机制,可以在不停机的情况下对应用程序进行升级和维护,减少了停机时间和业务风险。
- K8S还提供了丰富的扩展性和自定义性,通过插件和自定义资源等机制,可以轻松地集成各种云服务和第三方工具,满足企业不同的需求和场景。
三、Kubernetes架构图例
四、Kubernetes核心概念
Harbor仓库概述:
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。它在Docker Distribution的基础上增加了一些企业必需的功能特性,例如安全、标识和管理等,从而满足了企业对于镜像仓库的需求。
在K8S中使用Harbor仓库不是必须的,但使用它可以带来诸多好处,特别是在安全性、镜像复制和分发、管理便携性以及高级功能支持方面,这些优势使得不管是在项目中还是在企业构建和运行容器化应用时成为重要选择。
Master----管理组件:
-
API Server(集群之心):
- 该组件作为管理节点中的核心,主要提供了一系列对外API接口为用户与K8S中组件通信,此外该API还可用于创建、修改、删除和查询各种资源对象。该接口还提供认证与授权功能,为接入集群的提供了安全屏障。
- 最后,它还有数据存储和同步,使用Etcd作为默认数据存储后端,集群状态信息都在其中,它也掌管控制器的调度,负责接收Replicaiton Controller、Deployment等控制器的指令,并根据需求来创建、更新或删除相应的资源对象。
-
Scheduler(调度大师):
- 该组件作为K8S中的资源分配大总管,它会根据每个Pod的资源请求(如CPU、内存)以及节点当前的可用资源情况,选择合适的Node来运行Pod,并且考虑Pod的调度约束条件以及服务策略的阶段性执行,来保证Pod的特定运行及服务稳定性。
-
ControllerManager(集群管家):
- 该组件作为管理节点中的大总管,负责集群内部的管理控制中心,由负责不同资源的多个Controller构成,共同负责集群内的Node、Pod等所有资源的管理,并且如当通过Deployment创建的某个Pod发生异常退出时,RS Controller便会接受并处理该退出事件,并创建新的Pod来维持预期副本数。
-
Etcd(集群记忆库):
- 该组件作为K8S中存储集群的配置数据,包括集群状态、配置选项、服务发现信息、网络配置等,并且该存储具有高可用性,当其Etcd集群中Leader节点失效,它会自动进行Leader选举,选出新的Leader节点,确保集群的可用性。
Node---计算节点
-
Kubelet(节点守护者):
- 它是运行在每个节点上的主要组件,它负责管理和维护该节点上的PodS以及提供Kubernetes运行时环境,它会定期与API Server通信,接受来自Master组件的指令,根据这些指令来管理节点上的Pods。Kubelet负责监视分配该节点的Pods,确保它们正常运行,挂载Pods所需的Volumes;Kubelet会负责从API Server获取分配给该节点的Pods所需的Secrets,并将其下载到节点的本地文件系统中。
- Kubernetes不直接管理容器,而是依赖于容器运行时来执行容器的生命周期操作,当需要创建或启动一个容器时,kubelet会发送指令给容器运行时,容器运行时随后会负责拉取容器镜像、创建容器并启动它。Kubelet会根据负责的Pod发送Liveness探针来检查容器的健康状态,如果在规定时间内,容器不再响应探针,则它可能已经被“挂起”或“崩溃”,并且不再提供正常的服务,然后Kubelet会根据Pod的重启策略来决定是否重启该容器。
-
Kube-proxy(网络调度师):
- 它作为K8S中网络的通信枢纽,负责K8S中服务发现、流量转发、负载均衡等主要功能。它通过监听API Server中Service等服务对象的变化,来记录该服务的地址信息。它根据Service服务对象的定义信息,可以将到达服务的流量通过简单的负载均衡算法来转发到不同的Pod实例上。
-
Runtime(容器铸造师):
- 它在K8S作为重要组件,负责K8S中的资源隔离,确保每个容器拥有独立的网络、文件系统、进程空间等,从而避免容器之间的资源竞争和干扰。它也提供容器运行时所需的运行环境和依赖项,确保人容器中的应用程序可以正启动运行。最后,K8S中容器都具有生命周期,容器生命周期到期自动销毁,出现问题暂停等操作,这也是由Runtime来负责。
K8S常用核心概念
-
Cluster(集群)
- 集群,通常指的是多台计算机或服务器的组合,它们共同工作以提供更高的可用性、可靠性和可伸缩性。通过将资源汇集到一起,并使它们在某些方面作为一个整体来操作,集群技术能够提供比单一计算机更强大的处理能力和更高的数据冗余。
-
Container(容器)
- 容器是一种轻量级的、可移植的、自包含的软件打包技术,用于将应用程序及其所有依赖项打包在一起,以确保应用程序在任何环境中都能以相同的方式运行。
-
Pod(部署单元)
- Pod是K8s中最小的部署单元,它包含一个或多个容器,这些容器共享存储、网络、以及容器的运行配置。Pod中的容器运行在同一个主机上,可以相互通信。
-
Service(服务)
- Service定义了一种策略,将访问Pod的请求转发到后端集群中的某个Pod实例上。Service与Pod Endpoint建立关联关系,对外提供服务。
-
Label(标签)
- Label是附加到K8s对象(如Pod)上的键值对,用于组织和选择对象子集。
-
Namespace(名称空间)
- Namespace为K8s集群提供虚拟的隔离作用,不同的Namespace的资源是完全隔离的。
-
Deployment(资源对象)
- Deployment是K8s中的一种资源对象,它用来确保Pod副本的数量始终与预期的数量相同。当Pod的副本数量少于预期时,Deployment会自动创建新的Pod。