目录

Kubernetes介绍

Kubernetes (简称 K8s) 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 设计开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。

部署演进

传统部署

  • 架构:应用直接运行在操作系统上,操作系统直接管理硬件。
  • 特点:简单直接,但资源利用率低,应用间容易产生依赖冲突。

虚拟化部署

  • 架构:通过 Hypervisor 层虚拟化硬件,每个应用运行在独立的虚拟机(VM)中,VM 包含完整的操作系统和依赖。
  • 特点:资源隔离性好,但启动慢、资源开销大(每个 VM 需独立OS)。

容器部署

  • 架构:应用运行在容器中,容器通过容器运行时共享主机操作系统,但隔离应用及其依赖(如库、文件)。
  • 特点:轻量级(无需完整 OS)、启动快、资源利用率高,依赖冲突少。

演进趋势:从传统到虚拟化再到容器,体现了对更高效率、更低开销和更强隔离性的追求。容器技术(如 Docker、Kubernetes)因其轻量和便携性,成为现代云原生应用的主流部署方式。

Kubernetes 集群由控制平面和一个或多个工作节点组成。

Kubernetes 的组件

组件作用
kube-apiserver集群统一入口,处理REST请求,操作etcd数据
etcd分布式键值存储,保存集群所有状态数据
kube-scheduler智能调度 Pod 到合适的工作节点
kube-controller-manager运行节点控制器、副本控制器等核心控制循环
cloud-controller-manager对接云厂商 API(如AWS/GCP)
组件作用
kubelet节点代理,管理 Pod 和容器生命周期
kube-proxy维护节点网络规则,实现 Service 的 IP 转发
Container Runtime容器引擎(如 containerd/docker)
graph LR
    CoreDNS -->|服务发现| Service
    Ingress_Controller -->|路由规则| Service
    CNI -->|网络通信| Pod
    Fluentd -->|日志收集| Pod
    Prometheus -->|容器监控| Pod

Kubernetes 使用声明式 API,用户通过创建对象来描述期望状态。

对象类型作用描述
Pod最小的可部署单元,包含一个或多个容器
Deployment管理 Pod 的部署和更新
Service定义一组 Pod 的访问策略
ConfigMap存储非机密配置数据
Secret存储敏感信息
Volume定义 Pod 的存储
Namespace虚拟集群,用于资源隔离
ReplicaSet确保指定数量的 Pod 副本运行
StatefulSet管理有状态应用的部署
DaemonSet确保所有或部分节点运行 Pod 副本
Job运行一次性任务
CronJob运行定时任务
Ingress管理外部访问集群服务的规则
NetworkPolicy定义 Pod 间的网络访问规则