09 May 2019
kubernetes生态系统
本文主要简单介绍kubernetes生态系统中的相关软件、组件、特性及缩写,持续更新中,更新的原则就是:我在学习kubernetes过程觉得重要或者记不住。
1 软件、组件及特性
-
alertmanager:展示告警信息,支持集成第三方通知系统,如email、slack等
-
calico:提供容器网络服务
-
chart:用于描述创建kubernetes应用实例所需要的相关信息
-
cronjob:定时执行的批处理作业,kubernetes中一种资源对象
-
docker:容器运行时的具体实现,提供容器创建、运行等功能
-
elasticsearch:分布式搜索引擎
-
elk:elasticsearch + logstash + kibana
-
envoy:专为面向服务架构设计的7层代理和通信总线,istio中的sidecar官方标配,是一个面向服务架构的高性能网络代理
-
etcd:分布式键值存储系统,提供高可用性和数据一致性
-
exporter:收集监控信息
-
felix:calico的核心组件,负责设置路由、iptables等信息
-
filebeat:日志采集代理,负责收集日志
-
grafana:展示系统监控信息
-
helm:kubernetes包管理工具,负责应用部署、升级,类似apt-get和ubuntu的关系,主要由客户端helm和服务端tiller组成
-
icp:ibm私有云管理平台,提供微服务治理、多集群管理、混合云管理、devops等功能
-
istio:微服务治理系统,提供服务发现、服务注册、服务追踪、服务拓扑结构展示、限流、分流、熔断等功能
-
jenkins:可扩展的持续集成工具
-
kibana:数据分析和可视化平台,提供如柱状图、现状图、饼状图等功能
-
kube-apiserver:提供restful api,方便对kubernetes进行控制,例如对集群中所有资源的增删改查,是控制kubernetes集群的唯一入口
-
kube-controller-manager:kubernetes的控制器管理系统,负责管理运行的各种控制器
-
kube-proxy:网络代理服务,在kubernetes中负责service的具体实现,维护节点上的网络规则和执行网络转发,实现网络代理和负载均衡功能
-
kube-scheduler:kubernetes的调度器,负责将pod按不同的资源需求调度到集群中的node节点运行
-
kubelet:主要用于和master节点及各种接口通信,例如与container runtime interface通信,将容器在node节点创建并运行起来
-
kubernetes:容器管理、编排系统
-
knative:是谷歌开源的一套serverless架构方案,它扩展了kubernetes,提供了一组中间件,提高了构建可在本地、云和第三方数据中心等地方运行的现代化、以源为中心且基于容器的应用的能力
-
serverless:指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录
-
kubebuilder:是一个基于crd来构建kubernetes api的框架,可以使用crd来构建api、controller和 admission webhook
-
admission:kubernetes中的一种控制器,用于对api对象进行一些初始化性质的工作,对象被创建之后立即调用,支持默认(admission)和动态(dac/initializer)2种方式,istio就是通过dac功能自动注入sidecar到pod,和应用一起在同一个pod工作
-
logstash:日志收集,提供分析过滤功能
-
operator:是由coreos开发的,用来扩展kubernetes api,特定的应用程序控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统,可以认为是crd + controller,crd实现资源的定义,而需要通过controller监控crd实例的增删改查事件,从而实现相应的业务逻辑
-
operatorhub:operator仓库,详见https://www.operatorhub.io
-
prometheus:容器监控服务,设置告警策略,将告警信息发送给alertmanager
-
service catalog:kubernetes的api扩展,方便kubernetes集群内部应用访问第三方提供的服务
-
super version:kubernetes中表示一种资源类型的所有版本字段全集,用于描述用户提交的yaml配置文件,通过它可以实现用一种对象管理不同版本的yaml文件
-
terraform:iaas层接口
-
tiller:helm的服务端,用于管理应用发布
-
validation:基于openapi v3 schema的验证机制,检验用户提交的资源定义是否符合规范,检验通过的api对象就是一个有效的kubernetes api对象
-
registry:kubernetes中的一种数据结构,用于存储validation通过的api对象
-
finalizer:crd中的用于实现控制器的异步删除钩子
-
subresources:crd的子资源定义功能
-
categories:对crd进行分组
-
moby:docker的开源实现
-
aggregation:一种扩展kubernetes api的方法,实现不修改kubernetes核心代码的同时扩展kubernetes api,将第三方服务注册到 kubernetes api中,实现通过kubernetes api访问外部服务,另外一种扩展kubernetes api的方法是crd
-
global tags:kubernetes代码中用于控制全局的代码生成功能
-
k8s.io/code-generator:kubernetes提供的代码生成工具,用于为crd自动生成clientset、informer、lister,用于实现crd的controller
-
kiali:istio的可观察性工具,可视化服务网格拓扑、断路器、请求率和分布式追踪功能
-
service graph:和kiali功能差不多的istio服务观察工具
-
cadvisor:一种用于监控资源使用情况,并分析容器性能的开源代理
-
liveness probe:主动监控容器是否存活的机制
-
kustomize:允许用户以一个应用描述文件(yaml 文件)为基础(base yaml),然后通过overlay的方式生成最终部署应用所需的描述文件,使用了类似git diff和patch的原理实现维护多份yaml文件且不存在冗余数据,更易维护yaml
-
readiness probe:主动监控容器是否健康或者提供的服务的机制
-
horizontal pod autoscaler(hpa):通过分析不同的指标信息,动态调整集群pod的数量
2 缩写
-
crd:custom resource definition,自定义api资源,新版tpr,kubernetes的一种api插件机制,用户提交的新类型定义的yaml就是crd的实例,叫cr(customer resource),借助crd,kubernetes才能识别用户提交的cr
-
cr:crd实例
-
cds:集群发现服务
-
rds:路由规则发现服务
-
eds/sds:节点发现服务
-
lds:监听器发现服务
-
oci:开放容器计划,负责制定容器基础架构中的基础组件的标准
-
tpr:third party resource,老版本的crd
-
dac:dynamic admission control,也称initializer,一种控制器,用于对创建的api对象进行一些初始化的工作,kubernetes默认就提供了一些initializer
-
cidr:classless inter-domain routing,无类域内路由选择
-
cc:customer controller,自定义控制器,一个死循环,通过不断对比api对象的实际状态和期望状态,以此为依据实现相应的业务逻辑
-
mvcc:多版本并发控制,kubectl apply的实现机制
-
rabc:role based access control,基于角色的访问控制
-
poc: proof of concept,概念验证
-
uas:user aggregated apiserver,一种扩展kubernetes api的机制,类似crd
未完待续 ……
LEo
at 00:12