智能
助手
最大化  清空记录 停止  历史记录
翻译选中文本
选中一段文本后进行翻译
名词解释
选中一段文本后进行名词解释
知识图谱生成
通过图谱展示知识信息
登录用户在知识浏览页面可用
答案生成
AI自动回答一个问答功能中的问题
登录用户在问答浏览页面,且问题开放回答中可用
知识摘要
自动为当前知识生成摘要
知识浏览页面可用
知识问答
针对当前知识进行智能问答
知识浏览面可用
2025-12-29 19:33:33 版本 : 2. k8s是什么
作者: 文艺范儿 于 2025年12月29日 发布在分类 / Docker & K8S / K8S基础 下,并于 2025年12月29日 编辑
 历史版本

备注 修改日期 修改人
创建版本 2025-12-29 19:33:33[当前版本] 文艺范儿

2. k8s是什么

2.1 Kubernetes 核心定义

Kubernetes(常简称 k8s,K 与 s 之间有 8 个字母)是一个开源的容器编排平台,用于自动化部署、弹性伸缩、高可用管理容器化应用。简单来说,Kubernetes 是“数据中心的操作系统”——就像 Linux 管理单台计算机的进程、内存、存储一样,Kubernetes 管理跨多台服务器的容器化应用。

2.2 核心价值:解决容器化应用的四大痛点

在 Kubernetes 出现前,企业使用 Docker 等容器技术时会面临:

痛点 Kubernetes 解决方案 价值

如何调度数百个容器到多台机器?

智能调度算法(基于资源需求、亲和性等)

资源利用率提升 30-50%

如何保证应用故障时自动恢复?

声明式 API + 控制器模式(持续对比“期望状态”与“实际状态”)

可用性从 99%→99.9%

如何实现滚动更新不中断业务?

滚动更新(RollingUpdate)、蓝绿部署(Blue-Green)策略

零停机部署

如何统一管理网络、存储、配置?

Service(服务发现)、PersistentVolume(持久存储)、ConfigMap(配置管理)

运维复杂度降低 60%

2.3 Kubernetes 架构设计(Master-Worker 模型)

Kubernetes 采用中心化的控制平面(Control Plane)+ 分布式的工作节点(Node)架构,各组件通过 API Server 统一协作。

graph TB
    subgraph "控制平面(Master)"
        A[API Server] --> B[etcd]
        A --> C[Scheduler]
        A --> D[Controller Manager]
    end

    subgraph "工作节点(Node 1..N)"
        E1[Kubelet] --> F1[容器运行时<br/>Containerd]
        E2[Kubelet] --> F2[容器运行时<br/>Containerd]
        E1 --> G1[kube-proxy]
        E2 --> G2[kube-proxy]
    end

    A --> E1
    A --> E2
    C --> E1
    C --> E2

2.3.1 控制平面组件

组件 职责 关键特性

API Server

1. 提供 RESTful API(kubectl 的通信对象); 2. 认证、鉴权、准入控制(安全网关); 3. 唯一可读写 etcd 的组件。

高可用部署(多副本)、支持水平扩展

etcd

分布式键值存储,保存整个集群的状态(如 Pod、Service、ConfigMap 等资源对象)。

强一致性(Raft 协议)、定期备份(生产必须)

Scheduler

负责将 Pod 调度到合适的 Node(基于资源需求、亲和性、污点等策略)。

可扩展调度框架(支持自定义调度器)

Controller Manager

运行各种控制器(如 Deployment、StatefulSet 控制器),确保集群实际状态与期望状态一致。

声明式 API 的核心实现

2.3.2 工作节点组件

组件 职责 生产级要求

Kubelet

1. 管理本节点容器的生命周期(创建/启动/停止); 2. 向 API Server 报告节点状态(如资源使用)。

配置资源预留(防止节点资源耗尽)

容器运行时

负责运行容器(如 Containerd、CRI-O),实现 OCI 标准。

推荐 Containerd(更轻量、安全)

kube-proxy

维护节点网络规则,实现 Service 的负载均衡(如 ClusterIP 访问)。

支持 IPVS 模式(高性能、大规模集群)

2.4 核心概念:Kubernetes 的“乐高积木”

要理解 Kubernetes,必须掌握其核心抽象对象(资源模型):

对象 作用 类比 生产示例

Pod

Kubernetes 的最小调度单位,包含 1 个或多个容器(共享网络、存储命名空间)。

虚拟机中的“进程组”

一个 Nginx Pod 包含:Nginx 容器 + 日志采集 Sidecar 容器

Deployment

管理无状态应用的副本数,支持滚动更新、回滚。

进程管理器(如 systemd)

定义 3 个副本的 Nginx 服务,自动替换故障 Pod

StatefulSet

管理有状态应用(如 MySQL、Redis),提供稳定的网络标识、持久存储。

数据库集群管理器

MySQL 主从集群,每个 Pod 有固定域名(mysql-0.mysql)

Service

定义一组 Pod 的访问策略(负载均衡、服务发现)。

负载均衡器(如 Nginx)

将流量分发到 3 个 Nginx Pod(ClusterIP: 10.96.0.1)

ConfigMap

存储非敏感配置(如环境变量、配置文件)。

配置文件中心

存储 Nginx 的 nginx.conf 配置

Secret

存储敏感信息(如密码、密钥),Base64 编码存储。

保险柜

存储数据库密码(生产需加密)

PersistentVolume

抽象持久化存储(如云硬盘、NFS),与应用解耦。

云硬盘

为 MySQL Pod 提供 100G SSD 存储

Namespace

逻辑隔离资源(如开发、测试、生产环境)。

Linux 的 chroot

将不同业务部门的应用隔离

2.5 工作流程示例:kubectl run nginx 发生了什么?

当执行 kubectl run nginx —image=nginx:alpine —replicas=3 时:

  1. kubectl 将请求发送给 API Server(经过认证、鉴权);
  2. API Server 将请求写入 etcd(记录期望状态:3 个 Nginx Pod);
  3. Deployment Controller 监听到 etcd 变化,创建 ReplicaSet 对象(etcd 记录);
  4. Scheduler 发现未调度的 Pod,根据策略选择合适 Node,更新 Pod 的 Node 字段(etcd 记录);
  5. 目标 Node 的 Kubelet 监听到新 Pod,调用 Containerd 拉取镜像、启动容器;
  6. Kubelet 将 Pod 状态报告给 API Server(etcd 记录);
  7. 最终 3 个 Nginx Pod 在集群中运行,Controller Manager 持续监控实际状态与期望状态是否一致。

2.6 Kubernetes 在生产环境的优势与挑战

2.6.1 核心优势

  • 声明式配置:通过 YAML 文件定义应用状态,系统自动维护(无需手动敲命令);
  • 弹性伸缩:支持 HPA(水平 Pod 自动伸缩)、VPA(垂直资源自动调整);
  • 多云/混合云:统一管理公有云、私有云、边缘节点的应用部署;
  • 生态繁荣:CNCF 生态超过 1,000 个项目(监控、安全、服务网格等)。

2.6.2 常见挑战与应对策略

挑战 应对策略(SRE 视角)

复杂度高

1. 采用托管服务(如 EKS、ACK); 2. 制定标准化部署模板(Helm Charts); 3. 运维人员需系统培训(CKA 认证)。

网络性能

1. 选择高性能 CNI 插件(如 Cilium + eBPF); 2. 优化 Service 的 kube-proxy 模式(IPVS 替代 iptables)。

存储管理

1. 使用 CSI 驱动程序对接企业存储; 2. 制定存储卷备份策略(Velero)。

安全加固

1. 启用 Pod 安全策略(PSP/PSA); 2. 镜像安全扫描(Trivy); 3. 网络策略(NetworkPolicy)。

历史版本-目录  [回到顶端]
    文艺知识分享平台 -V 5.2.5 -wcp