架构以及核心组件介绍:
Master
- API Server (接口中心) j接口服务,基于rest风格开放的k8s接口服务
- kube Controller Manager:管理各个类型的控制器,针对k8s中的各种资源进行管理
- node controller节点控制器:负责在节点出现故障时进行通知和响应
- job controller 任务控制器:监测代表一次性任务的job对象,然后创建pods来运行这些任务直至完成
- EndpointSlice Controller 端点分片控制器:填充端点分片对象(以提供service 和pod之间的连接)
- ServiceAccount Controller 服务账号控制器:为新的命名空间创建默认的服务账号
- cloud Controller Mannager :云控制器管理器,第三方云平台提供的控制器api对接管理功能
- kube Scheduler 调度器 负责将pod基于一定算法将其调用到更合适的节点node上
- ETCD:kv分布式数据库,提供了基于raft算法实现自主的集群高可用
Node:
- Kubelet:负责pod的生命周期、存储、网络
- Kube-Proxy:网络代理 负责service的服务发现以及负载均衡(基于iptables实现)
- Container Runtime:基于docker|continerd|CRI-O的容器运行时环境。(以docker为例,每个节点需要安装docker)
附加组件:
kube-dns:负责为整个集群提供DNS服务 (服务名:ip)
igress controller:为服务提供外网接口
Prometheus:监控
Dashboard UI:图形界面操作
核心概念:
POD:
无状态服务:(如 nginx,不会存储数据到磁盘)
- ReplicationController(RC 新版本废弃):针对某一单一的pod动态更新pod副本数,扩容缩容
- ReplicaSet(RS):动态更新pod副本数,扩容缩容,可以通过selector来选择对哪些label的pod生效,可以指定单个或者一组pod,比RC更加灵活
- Deployment :针对RS的更高层次的封装,提供了更丰富的部署相关功能(自动创建RS/pod,滚动升级/回滚,平滑扩容和缩容,暂停与恢复deployment)
有状态服务:(如 mysql redis 会存储数据到磁盘)
- StatefulSet:稳定持久化存储,稳定的网络标志,有序部署,有序扩展,有序收缩,有序删除(例如,主从顺序)
守护进程:
- DeamonSet:保证在每个node上面都运行一个容器副本,常用来,日志收集logstash,系统监控:Prometheus,系统程序:proxy,dns等
任务/定时任务
- Job
- CronJob
service : pod与pod之间暴露端口的网络通讯
ingress :将k8s内部服务暴露给外网访问的服务
volume:数据卷,共享pod中容器使用的数据,用来持久化数据,比如数据库数据
CSI:容器标准化接口,暴露容器内存储的接口标准,volume 插件实现这套接口
configmap:暴露容器内配置,外部修改,自动更新部署
downwardapi:共享pod信息给里面的容器访问
k8s调用流程:
1.用户通过 kubectl(命令行工具)/Dashboard(可视化界面) 来与Master(api server)通讯进行操作,例如部署新应用
2.Master(api server) 接收到请求,并将其存储到Etcd
3.Master(Watcher和controllers)通过检测到etcd资源变化,进行操作
4.Master(ReplicaSet watcher/controller)检测到新的app,创建新的pod达到期望的实例个数
5.Master(Scheduler)将新的pod分配到Node(Kubelet)
6.Node(Kubelet)检测到pods,通过容器运行时部署它们,回传信息给Master(api server)
7.Node(Kubeproxy) 管理pod网络,服务发现 负载均衡
标签:容器,控制器,服务,部署,核心,接口,Master,pod,K8S
From: https://www.cnblogs.com/lihuanghao/p/17458836.html