Kubernetes概念
文章目录
- Kubernetes概念
- 一、Kubernetes简介
- 二、kubernetes整体架构
- 三、kubernetes分层架构
- 四、kubernetes工作原理
- 五、kubernetes核心概念
Kubernetes概念
一、Kubernetes简介
Kubernetes提供了面向应用的容器集群部署和管理系统。将重点放在以容器为中心的原语上进行自助运营。
Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。
Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。
Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。
1、K8S主要功能:
K8s是用来对docker容器进行管理和编排的工具,其是一个基于docker构建的调度服务,提供资源调度、均衡容灾、服务注册、动态扩容等功能套件,其作用如下所示:
(1)数据卷:pod中容器之间数据共享,可以使用数据卷
(2)应用程序健康检查:容器内服务可能发生异常导致服务不可用,可以使用健康检查策略保证应用的健壮性。
(3)复制应用程序实例:控制器维护着pod的副本数量,保证一个pod或者一组同类的pod数量始终可用。
(4)弹性伸缩:根据设定的指标(CPU利用率等)动态的自动缩放pod数
(5)负载均衡:一组pod副本分配一个私有的集群IP地址,负载均衡转发请求到后端容器,在集群内布,其他pod可通过这个Cluster IP访问集群。
(6)滚动更新:更新服务不中断,一次更新一个pod,而不是同时删除整个服务
(7)服务编排:通过文件描述部署服务,使的程序部署更高效。
(8)资源监控:Node节点组件集成cAdvisor资源收集工具,可通过Heapster汇总整个集群节点资源数据,然后存储到InfluxDB时序数据库,再由Grafana展示
(9)提供认证和授权:支持属性访问控制、角色访问控制等认证授权策略
二、kubernetes整体架构
K8S集群包括两个部分:
1、Master 节点 (主节点)主要负责管理和控制
Master节点包含Etcd、Apiserver、controller-manager、Scheduler等组件,作用分别如下:
Etcd:存储状态的数据库,保存了整个集群的状态;
Apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上。
2、Node 节点(计算节点)
Node节点包含kubelet、kube-proxy等组件,作用分别如下:
kubelet:主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等;
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡。
Docker Engine:Docker引擎,负责本机的容器创建和管理工作
三、kubernetes分层架构
Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,各层说明如下:
1、核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
2、应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
3、管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
4、接口层:kubectl命令行工具、客户端SDK以及集群联邦
5、生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
(1)Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
(2)Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
四、kubernetes工作原理
k8s的工作原理,原理实现步骤如下:
1、运维人员向 apiserver 发出指令,可以通过API Server的REST API,也可用Kubectl命令行工具。
2、apiserver 响应命令,通过一系列认证授权,把 pod 数据存储到 etcd,创建 deployment 资源并初始化 (期望状态)。
3、controller-manager 通过 list-watch 机制,监测发现新的 deployment,将该资源加入到内部工作队列,发现该资源没有关联的 pod 和 replicaset,启用 deployment controller 创建 replicaset 资源,再启用 replicaset controller 创建 pod。
4、创建完成后,将 deployment,replicaset,pod 资源更新存储到 etcd。
5、scheduler 通过 list-watch 机制,监测发现新的 pod,经过主机过滤、主机打分规则,将 pod 绑定 (binding) 到合适的主机。
6、将绑定结果存储到 etcd。
7、kubelet 每隔 20s (可以自定义) 向 apiserver 通过 NodeName 获取自身 Node 上所要运行的 pod 清单,通过与自己的内部缓存进行比较,新增加 pod。
8、kubelet 调用 Docker API 创建并启动 pod。
9、kube-proxy 为新创建的 pod 注册动态 DNS 到 CoreOS。给 pod 的 service 添加 iptables/ipvs 规则,用于服务发现和负载均衡。
10、controller-manager 通过 control loop(控制循环)将当前 pod 状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则 controller 会将 pod 修改为用户期望状态,实在不行会将此 pod 删掉,然后重新创建pod。
五、kubernetes核心概念
基本概念总结:
概念:作用
Cluster
: 超大计算机抽象,由节点(node)组成
node
: 集群中的计算机
Container
: 应用居住和运行在容器中
Pod Kubernetes
: 基本调度单位
ReplicaSet
: 创建和管理 Pod,支持无状态应用
Service
: 应用 Pods 的访问点,屏蔽 IP 寻址和负载均衡
Deployment
: 管理 ReplicaSet,支持滚动等高级发布机制
ConfigMap/Secrets
: 应用配置,secret 敏感数据配置
DaemonSet
: 保证每个节点有且仅有一个 Pod,常见于监控
StatefulSet
: 类似 ReplicaSet,但支持有状态应用
Job
: 运行一次就结束的任务
CronJob
: 周期性运行的任务
Volume
: 可装载磁盘文件存储
PersisentVolume/PersistentVolumeClaims
: 超大磁盘存储抽象和分配机制
Label/Selector
: 资源打标签和定位机制
Namespace
: 资源逻辑隔离机制
Readiness Probe
: 就绪探针,流量接入 Pod 判断依据
Liveness Probe
: 存活探针,是否 kill Pod 的判断依据