Kubernetes介绍

Kubernetes介绍
墨颜丶K8S概述和特性
Kubernetes的官网:https://kubernetes.io/
发音
有很多人不知道kubernetes
应该怎么发音,正确的发音是[kubə’netis]
,重音在第三个音节,读音:库伯耐踢死
那为什么很多场景称为 是 k8s
呢?
这个其实和硅谷的人起名有关系,他们有一个坏习惯,就是喜欢把一个单词首字母+跳过的字母数来进行缩写,比如亚马逊的Algorithms
被缩写成A9
,而kubernetes
缩写为k8s
,意思就是k后面跳过8个字母后到s,就变成了k8s
。
概述
1. 什么是 Kubernetes?
定义:
Kubernetes 是一个开源的 容器编排平台,用于自动化部署、扩展和管理容器化应用。
由 Google 基于其内部系统 Borg 的经验设计,2014 年开源并捐赠给 CNCF(云原生计算基金会)。核心目标:
- 自动化运维:简化容器化应用的部署、扩缩容、故障恢复等操作。
- 跨环境一致性:提供一致的运行环境(开发、测试、生产)。
- 资源高效利用:优化计算、存储、网络资源的分配与调度。
2. Kubernetes 解决了什么问题?
- 容器化应用的挑战:
- 编排困难:手动管理成百上千的容器(启动顺序、依赖关系、网络通信)。
- 高可用性:容器故障时需自动恢复,避免服务中断。
- 动态扩缩容:根据流量自动调整应用实例数量。
- 跨环境迁移:开发环境与生产环境配置差异导致部署问题。
- 传统运维的局限性:
- 人工操作易出错,难以应对微服务架构的复杂性。
- 虚拟机资源利用率低,启动速度慢。
3. Kubernetes 核心设计思想
- 声明式 API(Declarative API):
- 用户通过 YAML/JSON 声明“期望状态”(如运行 3 个副本),K8S 自动驱动系统达到该状态。
- 与“命令式”(手动一步步执行)形成对比,更适应动态变化的环境。
- 控制循环(Control Loop):
- 持续监控系统状态,通过控制器(Controller)不断调整实际状态,直到与期望状态一致。
- 例如:Deployment 控制器确保 Pod 副本数符合预期。
- 松耦合架构:
- 组件模块化设计,可替换或扩展(如替换容器运行时、自定义调度器)。
- 通过标准接口(如 CRI、CSI)支持多种插件。
4. Kubernetes 核心特性
特性 | 说明 | 典型场景 |
---|---|---|
自动化部署与回滚 | 支持滚动更新、蓝绿发布、金丝雀发布,并可一键回滚到历史版本。 | 持续交付(CI/CD) |
服务发现与负载均衡 | 通过 Service 和 DNS 自动暴露服务,流量均匀分发到后端 Pod。 | 微服务间通信 |
存储编排 | 动态挂载持久化存储(如本地磁盘、云存储),支持有状态应用。 | 数据库(MySQL)、消息队列(Kafka) |
弹性伸缩 | 水平扩缩(HPA)基于 CPU/内存或自定义指标;集群节点自动扩缩(Cluster Autoscaler)。 | 应对突发流量 |
自我修复 | 自动重启失败的容器、替换不可用节点、杀死不健康的 Pod。 | 保障服务 SLA |
密钥与配置管理 | 通过 ConfigMap 和 Secret 管理配置与敏感信息,支持动态注入。 | 不同环境(开发/生产)配置分离 |
批处理任务 | 支持一次性任务(Job)和定时任务(CronJob)。 | 数据备份、报表生成 |
5. Kubernetes 的适用场景
- 适合场景:
- 微服务架构:管理大量松散耦合的服务。
- CI/CD 流水线:与 Jenkins、GitLab 集成实现自动化部署。
- 混合云/多云部署:统一管理跨云厂商的资源。
- 机器学习与批处理:运行 TensorFlow 训练任务或 Spark 批处理作业。
- 不适用场景:
- 单机简单应用(直接使用 Docker 即可)。
- 对实时性要求极高的场景(如高频交易系统)。
6. Kubernetes 的优缺点
优点 | 缺点 |
---|---|
自动化运维,降低人工干预 | 学习曲线陡峭,概念复杂(Pod、Service 等) |
高可用性和故障自愈能力 | 初始部署和配置复杂(尤其生产环境) |
灵活的扩展机制(CRD、Operator) | 资源消耗较高(Master 节点需要一定配置) |
庞大的生态系统(Helm、Istio 等) | 网络和存储配置对底层设施依赖较强 |
K8S架构组件
Master组件
- API Server
- API Server是Kubernetes控制程序的前端。
- 唯一与etcd交互的组件,提供RESTful API。
- 集群的统一入口,以RESTful API方式提供集群管理功能,交给etcd存储。
- 支持认证(Authentication)、鉴权(Authorization)、准入控制(Admission Control)。
- etcd
- 键值存储(也称为etcd)是Kubernetes用来备份所有集群数据的数据库
- 它存储集群的整个配置和状态。主节点查询etcd以检索节点,容器和容器的状态参数。
- Controller Manager
- 控制器的作用是从API Server获得所需状态
- 它检查要控制的节点的当前状态,确定是否与所需状态存在任何差异,并解决它们(如果有)。
- Scheduler
- 调度程序会监视来自API Server的新请求,并将其分配给运行状况良好的节点
- 它对节点的质量进行排名,并将Pod部署到最适合的节点
- 如果没有合适的节点,则将Pod置于挂起状态,直到出现合适的节点。
Worker节点组件
- kubelet
- 管理Pod生命周期(创建、销毁)、上报节点状态。
- 与容器运行时(如containerd)交互。
- 它监视从API Server发送来的任务,执行任务,并报告给主节点
- kube-proxy
- 确保每个节点都获得其IP地址,维护节点网络规则(iptables/IPVS),实现Service的负载均衡。
- Container Runtime
- 容器运行时从容器镜像库中拉取镜像,然后启动和停止容器
- 容器运行时由第三方软件或插件,如Docker、containerd、CRI-O等(通过CRI接口)。
K8S核心概念
Pod
Controller
Service
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果