09 May 2019 kubernetes生态系统

2023-10-17 10:47:27 浏览数 (1)

本文主要简单介绍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

0 人点赞