k8s核心概念

发布时间:2026/7/26 8:11:18
k8s核心概念 一: 什么是容器编排容器编排的解释容器编排工具就是用来管理一大堆服务器上的复杂多容器程序从创建、运行到销毁全程自动管控整套程序的完整生命周期。容器编排工具为开发人员和基础设施团队提供了一个抽象层来处理大规模的容器化部署。微服务和传统VM的问题微服务将应用程序分解为不同的微应用程序开发者倾向于在每个VM中部署一个微服务这样会导致资源利用率降低一般而言与单一应用程序部署相比微服务部署需要更多的基础设施由于基础设施成本的增加许多组织未能看到微服务的价值。容器编排的能力概述集群管理不管是物理服务器、虚拟机不管机器性能好坏、是本地机房还是云服务器全部打包当成一台超大电脑统一管。部署不用人工一台台装程序能自动批量装容器应用支持多版本共存、不停机滚动更新更新出问题还能一键回退到老版本。可伸缩访问量变大自动多开程序实例流量变小自动关掉多余实例也支持手动调整全程为了系统不卡顿。健康管理实时监控服务器和程序有没有坏一旦发现机器卡死、程序崩溃直接把故障节点 / 故障实例踢出集群避免影响整体业务。底层硬件屏蔽开发写代码不用管程序跑在哪台机器、服务器够不够用编排工具自动安排运行位置对开发来说底层就像一台资源用不完的超级电脑。资源优化自动把容器分摊到空闲服务器上充分榨干机器性能、省钱分配时会遵守你设定的限制比如内存上限、端口占用、程序依赖、健康条件等规则。服务高可用就算某台服务器彻底坏了工具会立刻在别的好机器上重新拉起对应的程序保证业务不中断。一句话总概括容器编排工具代表 Kubernetes把一堆服务器整合为统一资源池全自动完成程序部署、扩容缩容、故障巡检、资源合理分配机器坏了自动转移业务开发不用操心底层硬件细节省心省钱还稳定。二: k8s简介概念Kubernetes是一个完备的分布式系统支撑平台具有完备的集群管理能力多扩展多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具涵盖了包括开发、部署测试、运维监控在内的各个环节。关键特征服务进程Service咱们跑的 Redis、网站、数据库这类程序都是靠 IP 端口对外提供服务。 但容器会经常重启、漂移到别的机器后端程序的 IP 会变传统方式调用很麻烦。 K8s 里的 Service 是固定不变的访问入口自带负载均衡和故障自愈 不管后端多少个程序实例、哪怕实例崩了重建换 IP外部只用访问 Service 固定地址完全感知不到后端变动。每个后端程序实例对应一个 EndpointIP 端口。隔离功能Pod、Label 标签容器能把程序隔离开K8s 就用最小单元 Pod 来装一组相关容器。 给每个 Pod 贴专属标签比如namemysqlService 通过**标签选择器**匹配对应标签的 Pod自动绑定实现 Service 和后端程序的关联。集群管理Master / Node 两种节点集群机器分成两类 - Master 主控节点管整个集群大脑负责调度、扩容、监控、权限控制全自动运维 - Node 工作节点真正跑业务 Pod上面的 kubelet 负责管理 Pod 生命周期kube-proxy 实现 Service 的负载均衡。扩容管理RC 控制器现在多用 Deployment传统系统手动加机器、扩服务特别麻烦K8s 靠 RC 解决自动扩容缩容 RC 配置里写三件事要什么 Pod 模板、需要跑多少份副本、匹配哪个 Pod 标签。 创建 RC 后它会 24 小时盯着 Pod 数量如果程序崩了、副本少了自动新建 Pod 调度到空闲节点直到达到设定数量全程不用人工操作。三: k8s资源(面试重点)K8S资源是声明式的配置对象如 Pod、Deployment、Service用来描述你想在集群里运行什么、怎么运行。类比K8S 资源 餐厅里的桌椅、菜单、订单、食材MasterMaster(管理结点)主要负责 资源调度控制副本和提供统一访问集群的入口。# 一: 编写执行Deployment(管理POD) Deployment调度器POD管理器是一个更高层次的API对象它管理ReplicaSets和Pod(创建管理pod)并提供声明式更新等功能 # 二: 查看Event事件 是一个针对Pod的事件记录记录了事件最早产生的时间、最后重复时间、重复次数、发起者、类型以及导致此事件的原因等信息。Event通常关联到具体资源对象上是排查故障的重要参考信息NodeNode是Kubernetes集群架构中运行Pod的服务节点亦叫agent或minion。Node是Kubernetes集群操作的单元用来承载被分配Pod的运行是Pod运行的宿主机由Master管理并汇报容器状态给Master同时根据Master要求管理容器生命周期。# 一: Namespace(命名空间) Namespace 就是给集群做逻辑分区方便多人 / 多环境共用一套服务器只分开管理权限和资源不切断 Pod 之间的网络。想彻底断网隔离得额外开防火墙规则NetworkPolicy。 # 二: Pod(包括Pause容器和业务容器) Pause容器 Pause 先搭建好统一网络环境所有业务容器共享一套网卡、IP内部直接localhost互访网络全部由 pause 接管业务容器只负责跑业务不用管网络配置。 业务容器就是你真正要跑的服务Nginx、MySQL、Tomcat、后端项目这些全部依附 pause 提供的网络环境运行不能单独存在。 # 三: label Label 自定义贴纸Selector 按贴纸筛选物品的规则K8s 靠贴纸实现自动管控、负载分发。四: k8s架构和组件(面试重点)架构组件K8S组件是独立进程 / 程序如 kube-apiserver、kube-scheduler不是容器。它们运行在 Master 或 Node 上管理整个集群master集群控制节点负责整个集群的管理和控制,包含以下组件# 一: Kubernetes API Server(k8s入口) k8s系统入口封装了增删改查操作(通过kubectl命令操作)通过RESTful API接口方式提供给外部客户和内部组件调用. 维护的REST对象持久化到Etcd中存储。 # 二: Kubernetes Scheduler(结点选择资源调度) 为新建立的Pod进行节点(node)选择(即分配机器)负责集群的资源调度。组件抽离可以方便替换成其他调度器。 # 三: Kubernetes Controller(控制器保证程序正常运行) 控制器目的是保证k8s正常运行。 # 四: 数据库组件(保存集群状态数据) etcd数据库可以部署到master上也可以独立部署 是分布式键值存储系统。用于保存集群状态数据比如Pod、Service等对象信息。nodeNode节点才是Kubernetes集群中的工作负载节点每个Node都会被Master分配一些工作负载Docker容器当某个Node宕机其上的工作负载会被Master自动转移到其他节点上去。# 1.0 kubelet - kubelet是运行在集群每个结点的守护进程 - 是master与node的桥梁 - 负责管理容器Kubelet会从Kubernetes API Server接收Pod的创建请求启动和停止容器监控容器运行状态并汇报给Kubernetes API Server。 # 2.0 Kubernetes Proxy(为pod创建代理服务) Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息并根据Service的信息创建代理服务实现Service到Pod的请求路由和转发从而实现Kubernetes层级的虚拟转发网络。 # 3.0 Docker Enginedocker Docker引擎负责本机的容器创建和管理工作五: k8s常用镜像仓库名称内容daocloud的docker镜像库docker run -d -P m.daocloud.io/docker.io/library/nginxdocker-hub的k8s镜像库registry.cn-hangzhou.aliyuncs.com/google_containersaliyun的k8s镜像库registry.cn-hangzhou.aliyuncs.com/google-containersaliyun的docker镜像库web页面https://cr.console.aliyun.com/cn-hangzhou/imagesgoogle的镜像库web页面https://console.cloud.google.com/gcr/images/google-containers?projectgoogle-containers