about blog github

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

about blog github