Kubernetes_概念篇
Kubernetes_概念篇
一、架构
- 核心层
- Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境
- 应用层
- 部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)
- 管理层
- 系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)
- 接口层
- kubectl 命令行工具、客户端 SDK 以及集群联邦
- 生态系统
- 外部
- 日志、监控、配置管理、CI、CD、Workflow等
- 内部
- CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
- 外部
二、概念
1,Label(对象标签)
- key/value 附加在对向上
- 等式
- app=nginx 和 env!=product
- 集合
- 如 env in (production,qa)
- 多个label(AND关系)
- app=nginx,env=test
2,Namespace
- 一组资源和对象集合,用来将内部对象划分为不同的项目组/用户组
- pods,services,deployments 等都属于某一个namespace(默认default)
- Node、PersistenVolumes 等则不属于任何namespace
3,Deployment
- 确保任意时间都有指定数量的,Pod(副本)在运行
- 某个Pod 不响应,Deployment会替换他
- 创建Deployment
- Pod模板:用来创建Pod副本的模板
- Label 标签:deployment 需要监控的Pod的标签
4,Service
- 应用服务的抽象,通过labels 为应用提供负载均衡和服务发现
- 匹配 labels 的 Pod Ip 和端口列表 组成endpoints
- kube-proxy 负责将服务IP负载均衡到这些 endpoints上
- 每个Service 都会自动分配一个 cluster IP(仅在集群内部可访问的虚拟地址)和DNS名
- 其他容器可以通过该地址、DNS来访问服务,不需要了解后端容器的运行
三、资源对象
Master
Master节点是Kubernetes 集群的控制节点,负责整个集群的管理和控制
组件
1,kube-apiserver
- 集群控制的入口,提供 HTTP REST 服务
2,kube-controller-manager
- Kubernetes集群中所有资源对象的自动化控制中心
3,kube-scheduler
- 负责Pod 调度
4,Node
- Node 节点是 Kubernetes集群的工作节点
- 工作负载由Master节点分配
- 工作负载主要是运行容器应用
组件
- kubelet
- 控制Pod
- 创建
- 启动
- 监控
- 重启
- 销毁
- 控制Pod
- kube-proxy
- Kubernetes Service 的通信和负载均衡
- 运行化应用(Pod)应用
5,Deployment
- 生成相应的 ReplicaSet 完成 Pod 副本的创建
6,Service
- Kubernetes 最重要的资源对象
- 定义了服务的访问入口
- 通过该地址访问Service 后端的Pod 副本实例
- 伸缩性
- Service 通过 Label Selector 同后端的 Pod 副本建立关系
- Deployment 保证后端Pod 副本的数量
7,Pod
- Kubernetes 最基本的部署调度单元,用于解决Pod的扩容和伸缩
四、核心组件
- etcd 保存了整个集群的状态,就是一个数据库
- apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制
- controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上
- kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理
- Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI)
- kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡
- 推荐插件
- Ingress Controller 为服务提供外网入口
- Heapster 提供资源监控
- Ingress Controller 为服务提供外网入口
- Dashboard 提供 GUI
五、集群
Pod
一个节点内容
- 共享 PID、IPC、Network和UTS namespace
- Kubernetes 调度基本单位
- 多个容器在一个Pod 中共享网络和文件系统,可以通过进程通信和文件共享,完成服务