多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 概述 **为什么需要k8s** 1. 真正的生产型应用会涉及多个容器。 2. 容器必须跨多个服务器主机进行 3. 借助K8S构建跨多个容器的应用服务、跨集群调度、扩展这些容器 **k8s 的应用** 1. 跨多台主机进行容器编排 2. 更加充分地利用硬件,最大程度获取运行企业应用所需的资源 3. 利用自动布局、自动重启、自动复制以及自动扩展功能,对应用实施状况检查和自我修复 相**关术语** 1. 主机(Master):用于控制Kubernetes节点的计算机。所有任务分配都来自于此 2. 节点(Node):负责执行请求和所分配任务的计算机。由Kubernetes主机负责对节点进行控制。 3. 容器集(Pod):被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个IP地址、IPC、主机名称及其它资源 4. 服务(Service):将工作内容与容器集分离 5. Kubelet:运行在节点上的服务,可读取容器清单(container manifest),确保指定的容器启动并运行。 ## 核心组件 1. 集群管理入口:kube-apiserver 2. 管理控制中心:kube-controller-manager 3. 调度器:kube-scheduler 4. 配置中心:etcd 5. 集群管理工具:kubectl 6. 节点POD管家:kubelet 7. 服务外部代理:kube-proxy ## K8S 核心组件-Controller Manager 1. 副本控制器:Replication Controller - 确保在当前集群中有且仅有N个Pod实例,N是在RC中定义的Pod副本数量。 - 通过调整RC的spec.replicas属性值来实现系统扩容或者缩容。 - 通过改变RC中的Pod模板(主要是镜像版本)来实现系统的滚动升级。 2. 节点控制器:Node Controller 3. 资源控制器:ResourceQuota Controller - 容器级别-可以对CPU和Memory进行限制。 - Pod级别-可以对一个Pod内所有容器的可用资源进行限制。 - Namespace级别,为Namespace(多租户)级别的资源限制,包括: POD、RC、Service、ResourceQuota、Secret、PV数量。 4. 命名空间控制器:Namespace Controller 5. Endpoints 控制器:Endpoints Controller 6. 服务控制器:Service Controller - 监听Service的变化 - 如果 Service是一个LoadBalancer类型,则维护LoadBalancer表 ## kompose 是一个将docker-compose的yaml文件快速转换k8s能够部署文件的工具 使用 ``` kompose -f xxx.yml convert // 转化docker-compose 文件 kubectl apply -f *.yaml // 从转化的文件中部署资源文件 ``` ## **架构图** ![](https://img.kancloud.cn/5d/9f/5d9fbddf49be0f6f66f650aac0ba7d4a_794x354.png) 组件分布架构 ![](https://img.kancloud.cn/4d/28/4d28ff23894452f2f17ae537136f9103_780x424.png) ApiServer 架构架构 ![](https://img.kancloud.cn/a0/8b/a08bac57345d2685aab245893b74ac96_676x413.png) k8s 应用创建流程和监听机制 ![](https://img.kancloud.cn/89/91/89919561852446c9f694d8e79660b6a1_764x336.png) Endpoints 控制器:Endpoints Controller ![](https://img.kancloud.cn/a1/1a/a11adbd596b323d4e888e07f4990f62d_582x421.png)