目录

一.k8s

K8S有 master 和 worker node 两类节点:

编辑

二.K8S创建Pod资源的工作流程

三.K8S资源对象

Pod:是K8S能够创建和管理的最小单位。

Pod控制器:

四.K8S资源配置信息


一.k8s

kubernetes   : Google旗下的容器跨主机编排工具,占据了80%以上的市场份额,已经成为容器编排工具的事实标准,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 

K8S有 master 和 worker node 两类节点:

master节点(负责K8S集群的管理和资源调度等运维工作),组件有 apiserver、controller-manager、scheduler、etcd 。
apiserver:是所有服务请求的统一访问入口
controller-manager:控制器管理器,负责管理K8S各种资源对象的控制器;并通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的工作状态
scheduler:资源调度器,负责Pod资源的调度,通过调度算法(预选/优选策略)为要部署的Pod选择最合适的node节点
etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有的重要信息,仅apiserver拥有访问和读写权限

worker node节点(负责运行工作负载,即容器应用),组件有 kubelet、kube-proxy、容器引擎(docker、containerd等)
kubelet:接收apiserver发来的请求,创建管理Pod和容器,跟容器引擎交互实现对容器生命周期的管理;收集node节点的资源信息和Pod的运行状态发送给apiserver
kube-proxy:作为service资源的载体,实现对Pod的网络代理,负责维护Pod集群网络规则和四层代理工作
容器引擎:运行管理容器

二.K8S创建Pod资源的工作流程

1.用户通过客服端发送创建pod请求给apiserver

2.apiserver收到请求后,会将请求写入给etcd进行保存,并找到controller-manager请求资源预设模版构建pod资源

3.controller-manager会通过apiserver找到scheduler进行调度新创建的pod资源,并通过调度算法的预选和优选策略进行选出最合适的node节点,进行调度

4.scheduler会通过apiserver找到对应的node节点的kubelet去管理创建pod资源,kubelet还可通过容器引擎交互管理pod及容器的生命周期

5.用户还可以通过apiserver的kube-proxy写入网络规则,创建service资源,对pod集群进行网络代理

PostgreSQL 主从 k8s_容器

三.K8S资源对象

所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。

Kubernetes 包含多种类型的资源对象:Pod、Label、Service、Replication Controller 等。

Pod:是K8S能够创建和管理的最小单位。

一个Pod里可以包含一个或多个应用容器,同一个Pod里的容器之间共享网络、存储等资源.

Pod控制器:

deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数始终符合预期状态)和Pod(容器化的应用程序)

statefulset:部署有状态应用(有实时数据需要存储)

daemonset:在所有node节点上都部署同一种的Pod

job:         一次性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)

cronjob:周期性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)

service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发

ingress:作为K8S集群外部的访问入口,可定义ingress规则根据用于请求的域名或URL请求路径转发给指定的service,支持七层代理转发

service通过标签选择器关联Pod的标签,从而自动发现相关Pod的端点(PodIP:Port)

ingress通过配置规则将不同的域名或URL路径关联不同的service资源

PostgreSQL 主从 k8s_容器_02

四.K8S资源配置信息

apiversion:指定资源对象的在K8S中使用的api接口版本
kind:          指定资源对象的类型
metadata: 指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation:指定注释、label指定标签
spec:        指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器
status:      资源对象在当前的运行状态信息
label:标签,将一个或多个键值对标识关联到某个资源对象,用于对资源对象进行分组查询和筛选
label selector:标签选择器,用于查询和筛选拥有相关标签的资源对象
annotation:注释,用作于资源对象的注释信息;还可以在一些特殊的资源对象里用作于设置额外的功能特性
name:资源名称
namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源对象的名称是唯一的。