k8s简介
- vicentz
- 0
- Posted on
Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 开发,后来捐赠给 Cloud Native Computing Foundation (CNCF),成为云原生计算生态系统的核心项目之一。
一、Kubernetes 是什么?
简单来说,Kubernetes 的主要作用是:
帮助用户高效地运行和管理大量容器化的应用,实现自动化部署、负载均衡、自动扩缩容、服务发现、故障恢复等功能。
在微服务和云原生架构流行的今天,应用通常被拆分为多个轻量级容器(比如使用 Docker),而 Kubernetes 就是用来管理这些容器的“大脑”。
二、为什么需要 Kubernetes?
在没有 Kubernetes 之前,如果你有多个容器化的服务,你可能需要手动:
- 启动和停止容器
- 确保服务之间能互相发现和通信
- 监控服务的健康状态,处理崩溃重启
- 根据流量变化手动扩容或缩容
- 在多台机器上分配容器,进行负载均衡
这些操作既繁琐又容易出错。Kubernetes 的出现就是为了解决这些问题,它让容器的管理变得自动化、弹性、可扩展且可靠。
三、Kubernetes 的核心功能
- 容器编排(Orchestration)
- 自动调度容器到合适的节点上运行
- 管理容器生命周期(启动、停止、重启等)
- 自动部署与回滚
- 支持通过声明式配置文件(如 YAML)定义应用部署方式
- 支持滚动更新、蓝绿部署,出现问题可以快速回滚
- 自动扩缩容(Auto Scaling)
- 根据 CPU、内存使用率或自定义指标,自动增加或减少 Pod 副本数量
- 服务发现与负载均衡
- 自动为服务分配 DNS 名称,支持服务之间通过名称访问
- 内置负载均衡,将请求均匀分发到多个实例
- 自我修复(Self-healing)
- 自动检测并重启失败的容器
- 替换不健康的节点上的 Pod,确保服务高可用
- 存储编排
- 支持挂载不同类型的存储系统(如本地存储、NFS、云存储等)
- 配置管理 & 密钥管理
- 支持将配置参数和敏感信息(如密码、密钥)与容器镜像分离,安全注入到容器中
四、Kubernetes 的基本概念
为了更好地理解 Kubernetes,以下是一些核心术语:
| 术语 | 说明 |
|---|---|
| Cluster(集群) | 一组运行 Kubernetes 的节点(物理机或虚拟机),包含 Master 和 Worker 节点 |
| Master Node(主节点) | 集群的控制中心,负责调度、管理整个集群的状态 |
| Worker Node(工作节点) | 运行实际容器(Pod)的节点,由 Master 调度任务到这些节点 |
| Pod | Kubernetes 中最小的调度单位,一般包含一个或多个紧密相关的容器 |
| Deployment | 定义应用的部署方式,如副本数、更新策略等,用于管理 Pod |
| Service | 为一组 Pod 提供统一的访问入口,实现服务发现和负载均衡 |
| Namespace | 用于对集群资源进行逻辑分组与隔离,类似虚拟集群 |
| ConfigMap & Secret | 用于管理配置信息和敏感数据(如密码、API 密钥) |
| Ingress | 管理外部访问集群内服务的 HTTP/HTTPS 路由规则 |
五、Kubernetes 的架构(简化版)
Kubernetes 集群通常由两部分组成:
- 控制平面(Control Plane / Master)
- •包括组件如 kube-apiserver、etcd、kube-scheduler、kube-controller-manager
- •负责管理整个集群的状态、调度、存储集群数据等
- 工作节点(Worker Nodes)
- •每个工作节点运行着:
- •kubelet:与 Master 通信,管理本节点上的 Pod
- •kube-proxy:负责网络代理和负载均衡
- •容器运行时(如 containerd、Docker):真正运行容器
- •每个工作节点运行着:
六、Kubernetes 的优势
- 自动化:自动部署、伸缩、修复和负载均衡
- 可扩展性:支持从几个容器到成千上万容器的大规模应用
- 跨平台/云:可在公有云、私有云或裸机上运行,支持多云策略
- 生态丰富:有大量的工具、插件和云服务与之集成(如 Helm、Prometheus、Istio、AWS EKS、阿里云 ACK 等)
- 声明式管理:通过 YAML 文件描述系统“应该是什么样子”,由 Kubernetes 负责实现
七、谁在使用 Kubernetes?
Kubernetes 被广泛应用于:
- 互联网公司(如 Google、Amazon、腾讯、阿里、字节跳动等)
- 金融、电商、游戏等行业
- 微服务架构、云原生应用开发
- CI/CD 与 DevOps 实践
九、总结一句话
Kubernetes 是云原生时代容器管理的标准平台,让复杂应用的部署和运维变得简单、高效和可靠。