k8s如何保证pod副本维持在一定数量
通过console manager
核心组件概括
1、console manager保证pod达到一定数量即到底启动多少个副本 2、由schedule决定具体在哪个节点上启动 3、由api server告诉kebelet具体去在哪个节点上执行
组件数量
1、api server是无状态的 一般3个副本 2、shedule是主从结构 一般是1主2从 如果主挂掉了通过raft算法选择主 3、console manager是主从结构 一般3个副本
应用程序申请入口
- kubectl
通过命令行的方式提交 一般不用这种方式 这种方式需要经过rbac授权
- api server rest 接口
网关访问应用程序实现方式
- 默认通过dns实现
服务管理平台 包括数据采集、注册、监控、汇报信息 每个服务启动之后都会向服务注册中心注册
K8S(逻辑架构)
声明式:设置为3 绝对值 不存在幂等性问题 命令式:副本+1 相对值 存在幂等性问题
支持的控制器
1)无状态服务 1、long-running 比如网关、业务逻辑层、数据访问层 2、批处理型 比如job调度 3、log-pilot组件 阿里开源的日志收集组件 2)有状态服务 k8s对有状态服务的需求没有那么强烈 支持的也不太好
创建pod时序图
有状态会存在共享存储中ceph(必须同机房) 不做共享存储 跨地区同服务商、跨可用区同地区都可以 无状态服务要求降低 跨地区同服务商、跨可用区同地区都可以
有状态跨地区如何设计?