Kubernetes介绍
目录
Kubernetes (简称 K8s) 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 设计开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。
1 部署演进
传统部署:
- 架构:应用直接运行在操作系统上,操作系统直接管理硬件。
- 特点:简单直接,但资源利用率低,应用间容易产生依赖冲突。
虚拟化部署:
- 架构:通过 Hypervisor 层虚拟化硬件,每个应用运行在独立的虚拟机(VM)中,VM 包含完整的操作系统和依赖。
- 特点:资源隔离性好,但启动慢、资源开销大(每个 VM 需独立OS)。
容器部署:
- 架构:应用运行在容器中,容器通过容器运行时共享主机操作系统,但隔离应用及其依赖(如库、文件)。
- 特点:轻量级(无需完整 OS)、启动快、资源利用率高,依赖冲突少。
演进趋势:从传统到虚拟化再到容器,体现了对更高效率、更低开销和更强隔离性的追求。容器技术(如 Docker、Kubernetes)因其轻量和便携性,成为现代云原生应用的主流部署方式。
2 核心组件
Kubernetes 集群由控制平面和一个或多个工作节点组成。
2.1 控制平面(Control Plane)
组件 | 作用 |
---|---|
kube-apiserver | 集群统一入口,处理REST请求,操作etcd数据 |
etcd | 分布式键值存储,保存集群所有状态数据 |
kube-scheduler | 智能调度 Pod 到合适的工作节点 |
kube-controller-manager | 运行节点控制器、副本控制器等核心控制循环 |
cloud-controller-manager | 对接云厂商 API(如AWS/GCP) |
2.2 工作节点(Worker Node)
组件 | 作用 |
---|---|
kubelet | 节点代理,管理 Pod 和容器生命周期 |
kube-proxy | 维护节点网络规则,实现 Service 的 IP 转发 |
Container Runtime | 容器引擎(如 containerd/docker) |
2.3 插件
graph LR CoreDNS -->|服务发现| Service Ingress_Controller -->|路由规则| Service CNI -->|网络通信| Pod Fluentd -->|日志收集| Pod Prometheus -->|容器监控| Pod
3 Kubernetes 对象模型
Kubernetes 使用声明式 API,用户通过创建对象来描述期望状态。
3.1 主要对象类型
对象类型 | 作用描述 |
---|---|
Pod | 最小的可部署单元,包含一个或多个容器 |
Deployment | 管理 Pod 的部署和更新 |
Service | 定义一组 Pod 的访问策略 |
ConfigMap | 存储非机密配置数据 |
Secret | 存储敏感信息 |
Volume | 定义 Pod 的存储 |
Namespace | 虚拟集群,用于资源隔离 |
ReplicaSet | 确保指定数量的 Pod 副本运行 |
StatefulSet | 管理有状态应用的部署 |
DaemonSet | 确保所有或部分节点运行 Pod 副本 |
Job | 运行一次性任务 |
CronJob | 运行定时任务 |
Ingress | 管理外部访问集群服务的规则 |
NetworkPolicy | 定义 Pod 间的网络访问规则 |