k8s核心概念
所属分类 k8s
浏览量 733
Master
k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口
拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程 关联工作节点Node
Kubernetes API server提供HTTP Rest接口
所有资源的增、删、改、查等操作的唯一入口 ,集群控制的入口进程
Kubernetes Controller Manager是Kubernetes所有资源对象的自动化控制中心
Kubernetes Schedule是负责资源调度(Pod调度)的进程
Node
运行Pod的服务节点 ,Pod运行的宿主机
拥有名称和IP 系统资源信息
运行docker eninge服务 守护进程kunelet 负载均衡器kube-proxy
kubelet
直接跟容器引擎交互实现容器的生命周期管理,它和 Master 节点协作,实现 Pod 的创建、启动、监控、重启、销毁等集群管理工作
kube-proxy 实现Kubernetes Service的通信与负载均衡机制的重要组件
Docker Engine(Docker) Docker引擎,负责本机容器的创建和管理工作
Node节点 可动态增加到k8s集群中,kubelet 向master注册
kubelet 定时向Master汇报自身情报,如操作系统、Docker版本、CPU和内存,以及 有哪些Pod在运行等
这样Master可以获知每个Node节点的资源使用情况,实现高效均衡的资源调度策略
多种类型的资源对象
Pod Label Service ReplicationController 等
资源对象 通过 kubectl 进行 增 删 改 查 等操作
K8S 是一个高度自动化的资源控制系统,通过跟踪对比 etcd 里保存的资源期望状态与当前环境中的实际资源状态的差异,来实现自动控制和自动纠错等高级功能
Pod 是 k8s 创建或部署 的 最小基本单位
一个Pod 代表集群上正在运行的一个进程
可以把Pod理解成豌豆荚,同一Pod内的每个容器是一颗颗豌豆
一个Pod由一个或多个容器组成,Pod中容器共享网络、存储和计算资源
在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个Pod
同一个Pod之间的容器可以通过localhost 互相访问,并且可以挂载Pod内所有的数据卷
不同的Pod之间的容器不能用localhost访问,也不能挂载其他Pod的数据卷
Pod控制器
Pod控制器是Pod启动的一种模版,用来保证在K8S里启动的Pod 始终按照用户的预期运行(副本数、生命周期、健康状态检查等)
常用几种Pod控制器
Deployment 无状态应用部署 管理和控制Pod和Replicaset
Replicaset 确保预期的Pod副本数量
Daemonset 确保所有节点运行同一类Pod 通常用于实现系统级后台任务
Statefulset 有状态应用部署
Job 一次性任务
Cronjob 周期性任务
Label
分类管理资源对象
可以附加到各种资源对象上 例如Node Pod Service RC等 ,用于关联对象、查询和筛选
多维度 资源分组管理
Label选择器(Label selector )
通过标签选择器(Label selector) 查询和筛选拥有某些Label的资源对象
基于等值关系(等于、不等于) 和 基于集合关系(属于、不属于、存在)
Service
K8S 集群里,每个Pod会被分配一个单独的IP地址,这个IP地址也会随着Pod 的销毁而消失
Service就是用来解决这个问题的核心概念
Service 可以看作一组提供相同服务的Pod 的对外访问接口
Service作用于哪些Pod 通过标签选择器来定义
客户端需要访问的服务就是Service 对象
每个Service都有一个固定的虚拟ip (Cluster IP) ,自动并且动态地绑定后端的Pod,
所有的网络请求直接访问Service 的虚拟ip,Service 自动向后端转发
Service 提供对外访问,负载均衡(Load Balance)
自动把请求流量分布到后端所有的服务上,透明地进行水平扩展(scale)
实现service 这一功能的关键, 就是kube-proxy
kube-proxy运行在每个节点上,监听API Server中服务对象的变化
三种流量调度模式 实现 网络转发
userspace (废弃) iptables (濒临废弃) ipvs (推荐,性能最好)
Service是K8S服务的核心,屏蔽了服务细节,统一对外暴露服务接口
譬如一个服务A,部署了3个副本,也就是3个Pod
对于用户来说,只需要关注一个Service 的入口就可以
不需要操心究竞应该请求哪一个Pod
Ingress
Service主要负责K8S 集群内部的网络拓扑
集群外部 访问集群内部 需要Ingress
Ingress是整个K8S集群的接入层,负责集群内外通讯
Ingress 是 K8S集群里工作在OSI网络参考模型下,第7层的应用,
对外暴露的接口,典型的访问方式是http/https
Service只能进行第四层的流量调度,表现形式是ip+port
Ingress 可以调度不同业务域、不同URL访问路径的业务流量
http://www.xxx.com:port ---> Ingress ---> Service ---> Pod
Name
K8S内部,使用 资源 来定义每一种逻辑概念(功能),每种 资源 都 有自己的名称
资源 有api版本(apiversion) 、类别(kind)、元数据(metadata) 、定义清单(spec)、状态(status) 等配置信息
名称 通常定义在 资源 的 元数据 信息里
在同一个 namespace 中必须是唯一的
Namespace
逻辑上隔离 K8S 内各种 资源
把一个K8S集群划分为若干个资源不可共享的虚拟集群组
默认存在的Namespace
default kube-system kube-public 等
查询 K8S 里特定 资源 要带上相应的Namespace
上一篇
下一篇
Borg Omega and Kubernetes
k8s架构及核心组件
k8s概述
prometheus irate 函数说明
temporal cassandra 阶梯压测记录
temporal 技术要点