K8S基础 | Kubernetes基本概念
文章结构:
Docker的网络管理
|-什么是Kubernetes技术?
|-为什么使用Kubernetes?
|-K8S的重要概念
全文字数
1880
阅读时间
6分钟
/ 什么是Kubernetes技术?/
Kubernetes是一套自动化容器运维的开源平台,这些运维操作包括部署、调度和节点集群的间扩展。
Docker是Kubernetes内使用的低级别组件。
如果将Kubernetes看作机场,那么Docker容器就是飞机。
Kubernetes是当前被广泛认可和看好的Docker分布式系统解决方案。
/ 为什么使用Kubernetes?/
Kubernetes是一个自动化部署、具有可伸缩性的可用于操作应用程序容器的开源平台,使用K8S可以快速高效的满足以下需求
快速精准地部署应用
即时伸缩应用程序
无缝展现新特征
限制硬件用量为所需资源
同时K8S具有以下明显的优势:
可移动性:
公有云、私有云、混合云、多态云
可扩展性:
模块化、插件化、可挂载、可组合
自修复性:
自动部署、自动重启、自动复制、自动扩容和缩容
k8s架构图
/ K8S的重要概念 /
Cluster(集群)
Cluster集群是计算、存储、网络资源的集合。
K8S利用这些基础资源来运行各种程序,是整个K8S容器集群的基础环境。
Master(主控)
Master(主控)是指集群的控制节点。
在每个Kubernetes集群中都至少有一个Master节点来负责整个集群的控制和管理,几乎所有的集群控制命令都是在Master上执行的,因此Master是整个集群的大脑。
同时正因为Master如此重要,为了实现高可用性用户可以部署多个Master节点。
Master节点可以是物理机也可以是虚拟机。
Kubernetes API Server(API服务器)
Kubernetes API Server的进程名称为kube-apiserver。
Kubernetes API Server 提供了Kubernetes各类资源对象的增删改查的HTTP Rest接口,是整个系统的数据总线和数据中心。
Kubernetes API Server 提供了集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更,提供了其他模块之间的数据交互和通信枢纽,是资源配额控制的入口,具有完备的集群安全机制。
Kubernetes Controller Manager(控制管理器)
Kubernetes Controller Manager作为集群内部的管理控制中心,负责集群内的Node节点、Pod副本、服务端点(Endpoint)、命名空间、服务账号、资源配额的管理。
当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复程序,确保集群始终处于预期的工作状态。
Kubernetes Scheduler(调度器)
Kubernetes Scheduler的作用是根据特定的调度算法把Pod调度到指定的工作节点上,这一过程也叫绑定。
Scheduler的输入为需要调度的Pod和可以被调度的节点信息,输出为调度算法选择的Node节点,并将该Pod绑定到整个Node节点上。
Etcd
用于保存集群的所有网络配置和对象的状态信息的组件。
Node(节点)
在Kubernetes中,除了Master节点之外,其他的节点都称为Node节点,与Master不同,Node节点才是Kubernetes中承担主要计算功能的计算节点,Node节点本身可以是一台物理机或者是一台虚拟机。
主要进程如下:
Kubelet
用于处理从Master节点下发到本节点任务的进程,可以管理Pod和其中的容器。
Kubelet会在API Server上注册节点信息,定期向Master汇报节点资源的使用情况,并通过cAdvisor监控容器和节点资源。
可以把Kubelet理解为一个代理进程,是Node上的Pod管家。
Kube-proxy
运行在所有的Node节点上,可以监听每个Kubernetes API中定义的服务变化情况,并创建路由规则来进行服务的负载均衡。
Docker引擎
用于创建和管理容器等。
Pod
Pod是Kubernetes中最基本的操作单元。
一个Pod可以包含一个或多个紧密相关的容器。
一个Pod可以被一个容器化的环境看作应用层的主机。
一个Pod中运行的多个容器应用通常是紧密耦合的,Pod在Node节点上被创建、启动或者销毁。
每个Pod中运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器。
这些业务容器共享Pause容器中的网络栈和Volume挂载卷,因此它们之间的通信和数据交换更为高效。
Pod是Kubernetes调度的基本工作单元,Master节点会以Pod为单位将其调度到Node节点上。
pod的基本组成如下:
服务
一个服务可以视为一组提供相同服务的pod的对外访问的接口,服务作用域哪些Pod是通过标签选择器来定义的,通常具有以下特点:
拥有指定的名称,如mysql-server
能够提供某种远程服务能力
被映射到了提供这种服务能力的容器应用上。
如果要提供外网服务则需要指定公网IP和Node端口,或者外部负载均衡器。
卷
默认情况下容器的数据都是非持久化的。在容器消亡时数据跟随着丢失。
Kubernetes提供了卷机制将数据持久化存储,相比docker的卷机制来说,它具有更丰富的插件来解决容器数据持久化和容器间共享数据的问题。
Kubernetes卷的生命周期与Pod绑定,容器宕掉后Kubelet再次重启容器时,卷的数据依然存在,而Pod被删除时卷才会被清理。
数据是否丢失取决于具体的卷类型,如:emptyDir类型的卷实际上是一个临时空目录,是pod内多用户共享的一个目录。与Pod的生命周期一致,这个目录在Pod创建时创建,删除时删除。
持久化存储卷为独立于计算资源的一种物理存储资源,不属于任何一个Node节点。因此在Pod被删除时,不会丢失数据,除非人工将其删除。
命名空间
命名空间是kubernetes系统中重要的概念,它可以通过将系统内部的对象分配到不同的命名空间中,形成逻辑上的不同项目、小组或者用户组,从而在共享使用整个集群的资源同时还能分别进行管理。
Kubernetes启动之后会默认创建一个default的默认命名空间,如果不特别指明命名空间,那么用户创建的Pod、RC、服务都会被系统创建到default命名空间中。当团队或者项目中具有许多用户的时,可以使用命名空间来进行区分,一般情况下相同命名空间的对象将具有相同的访问控制策略
【学习回顾】
·
平时有时间就日更
没时间就周更
如果月更那就是鸽了