Kubernetes入门先理解这5个概念:Pod、Deployment、Service、ConfigMap、Ingress
为 Kubernetes 初学者解释 Pod、Deployment、Service、ConfigMap 和 Ingress 的作用,以及它们在应用发布中的关系。
Kubernetes 的概念很多,新手一开始容易被 API、控制器、网络和存储淹没。入门阶段不需要一次理解全部内容,先把应用发布过程中最常见的五个概念打通。
它们分别是 Pod、Deployment、Service、ConfigMap 和 Ingress。
Pod:Kubernetes 调度的最小单元
Pod 是 Kubernetes 里最小的调度单元。一个 Pod 里可以有一个或多个容器,它们共享网络和部分存储。
大多数业务场景里,一个 Pod 放一个主容器就够了。
可以把 Pod 理解为“应用实例”。如果一个 Web 服务需要运行 3 个副本,通常就是 3 个 Pod。
查看 Pod:
kubectl get pods
查看详情:
kubectl describe pod <pod-name>
Deployment:管理 Pod 副本和发布
生产环境很少直接创建 Pod,而是通过 Deployment 管理。
Deployment 负责:
- 创建指定数量的 Pod 副本。
- Pod 异常时自动拉起新 Pod。
- 支持滚动更新。
- 支持回滚到旧版本。
查看 Deployment:
kubectl get deployments
当你修改镜像版本时,Deployment 会逐步替换旧 Pod。
Service:给 Pod 提供稳定访问入口
Pod 会创建、销毁、重建,IP 地址并不稳定。Service 的作用是给一组 Pod 提供稳定访问入口。
常见类型:
ClusterIP:集群内部访问。NodePort:通过节点端口访问。LoadBalancer:通常依赖云厂商负载均衡。
Service 通过标签选择器找到对应 Pod。
查看 Service:
kubectl get svc
ConfigMap:管理非敏感配置
应用配置不应该写死在镜像里。ConfigMap 用来保存非敏感配置,例如环境变量、配置文件内容。
例如:
kubectl create configmap app-config --from-literal=APP_ENV=production
Pod 可以把 ConfigMap 挂载成环境变量,也可以挂载成文件。
敏感信息不要放 ConfigMap,应使用 Secret。
Ingress:管理 HTTP/HTTPS 入口
Service 解决的是集群内部访问入口。Ingress 更常用于 HTTP/HTTPS 域名访问。
Ingress 可以配置:
- 域名。
- 路径转发。
- HTTPS 证书。
- 多服务路由。
例如 www.example.com/api 转发到 API 服务,www.example.com 转发到前端服务。
使用 Ingress 通常还需要部署 Ingress Controller,例如 Nginx Ingress Controller。
五个概念如何串起来
一个典型 Web 应用发布流程可以这样理解:
- Deployment 声明要运行几个应用副本。
- Deployment 创建和管理 Pod。
- Pod 运行具体容器。
- ConfigMap 提供应用配置。
- Service 给 Pod 提供稳定访问入口。
- Ingress 把外部域名流量转发到 Service。
这条链路打通之后,再学习存储、探针、调度、权限、监控会更容易。
总结
Kubernetes 入门不要先背概念表,而是围绕“一次应用发布”理解资源之间的关系。
先掌握 Pod、Deployment、Service、ConfigMap 和 Ingress,再通过 kubectl get、describe、logs、exec 做实际排障,学习效率会高很多。
