Kubernetes (K8s) 核心概念与简介
Kubernetes (K8s) 核心概念与简介
Kubernetes(简称 K8s,因为 K 和 s 之间有 8 个字母)是一个开源的容器编排引擎。它最初由 Google 设计并捐赠给 Cloud Native Computing Foundation (CNCF) 管理。
🎯 为什么需要 Kubernetes?
在传统的微服务架构中,运行成百上千个 Docker 容器会面临以下挑战:
* 容器挂了怎么办?(自愈问题)
* 流量变大如何加机器?(弹性伸缩)
* 如何让版本升级不中断业务?(滚动更新)
Kubernetes 正是为了解决这些自动化运维难题而生的。
🏗️ 核心功能
Kubernetes 提供了完备的云原生解决方案:
- 🔄 服务发现与负载均衡:自动为容器分配 IP 和统一的 DNS 域名,并自动分发流量。
- 💾 存储编排:支持自动挂载本地存储、公有云存储(AWS、阿里云等)或网络存储(NFS、Ceph)。
- 🚀 自动部署与回滚:描述所需容器的期望状态,K8s 会自动将其变为实际状态。如果出错,可一键回滚。
- 🩺 自我修复 (Self-healing):自动重启失败的容器,替换并重新调度节点上的容器。
- 🔐 密钥与配置管理:无需重新构建镜像,即可部署和更新应用程序的配置文件(如 ConfigMap)和敏感信息(如 Secret)。
🧱 核心组件 (Architecture)
Kubernetes 集群主要由两种角色组成:Master 节点(控制平面) 和 Worker 节点(工作平面)。
1. 控制平面 (Control Plane)
负责管理整个集群的决策和状态:
* kube-apiserver:集群的统一入口,所有组件通信的枢纽。
* etcd:分布式键值数据库,保存集群的所有元数据和状态。
* kube-scheduler:决定新的 Pod 应该运行在哪个工作节点上。
* kube-controller-manager:运行控制器,负责维持集群的期望状态(如节点检查、副本数量)。
2. 工作节点 (Worker Node)
负责真正运行您的应用程序:
* kubelet:节点上的“管家”,负责确保容器在 Pod 中正常运行。
* kube-proxy:负责维护网络规则,实现 Pod 之间的网络通信。
* Container Runtime:容器运行时(如 Docker、Containerd),负责拉取镜像和运行容器。
📦 常见资源对象 (Resources)
在 K8s 中,所有内容都被抽象为“资源”,通过 YAML 文件进行定义:
| 资源类型 | 简单解释 |
|---|---|
| Pod | K8s 的最小部署单元,一个 Pod 内可以包含一个或多个紧密相关的容器。 |
| Deployment | 负责管理 Pod 的副本数量、滚动更新和自愈。 |
| Service | 定义了一组 Pod 的访问策略,提供固定的 IP 和负载均衡。 |
| ConfigMap | 用于存储非敏感的配置文件,可挂载到容器中。 |
| Ingress | 集群的七层反向代理,负责管理外部域名到内部 Service 的路由。 |
🛠️ 常用运维命令
使用 kubectl 命令行工具与集群交互:
# 查看集群中所有的 Pod
kubectl get pods
# 查看某个资源的详细状态
kubectl describe pod <pod-name>
# 查看容器日志
kubectl logs <pod-name>
# 应用或更新配置文件
kubectl apply -f deployment.yaml
评论 (0)