Kubernetes (K8s) 简介
Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。K8s 最初由 Google 设计,并捐赠给 CNCF(云原生计算基金会)。
🔍 核心概念
K8s 的设计理念是将容器抽象为更高层的组件,以简化微服务部署。
| 术语 | 描述 | 
|---|---|
| Pod | 最小部署单位,一个或多个容器的集合 | 
| Node | 集群中的一台主机(物理机或虚拟机) | 
| Cluster | 一组 Node 的集合 | 
| Namespace | 用于资源隔离的逻 辑分区 | 
| Controller | 控制器,如 Deployment、StatefulSet、DaemonSet | 
| Service | 提供访问 Pod 的统一接口 | 
| Volume | 数据持久化支持,绑定至 Pod | 
⚙️ 核心资源对象
1. Pod
Pod 是 Kubernetes 中最基本的运行单元,通常包含一个容器。
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80
2. Deployment
Deployment 用于管理无状态应用的部署和滚动更新。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx
tip
Deployment 会自动管理 Pod 的创建、扩容与升级。
3. Service
Service 用于定义访问 Pod 的网络策略。
apiVersion: v1
kind: Service
metadata:
  name: web-svc
spec:
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
  type: ClusterIP
4. ConfigMap 与 Secret
用于管理配置数据和敏感信息。
- ConfigMap
 - Secret
 
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  ENV: production
  LOG_LEVEL: debug
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
data:
  PASSWORD: cGFzc3dvcmQ=  # base64 encoded
5. Volume(数据卷)
用于持久化数据存储。
apiVersion: v1
kind: Pod
metadata:
  name: volume-pod
spec:
  containers:
    - name: app
      image: busybox
      volumeMounts:
        - name: data
          mountPath: /data
  volumes:
    - name: data
      emptyDir: {}
点击展开:其他 Volume 类型
emptyDir:Pod 生命周期内临时存储hostPath:挂载宿主机目录persistentVolumeClaim:持久存储绑定(PVC)
📡 K8s 常用命令
kubectl get pods             # 查看所有 Pod
kubectl get svc              # 查看所有 Service
kubectl describe pod mypod   # 查看 Pod 详情
kubectl logs mypod           # 查看日志
kubectl exec -it mypod -- bash   # 进入 Pod
caution
使用 kubectl apply 部署资源时,需确保 YAML 文件格式正确!
✨ 应用部署示例
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
点击展开:结合 configmap 和 secret 的部署实践
将 envFrom 引入到 Pod 的环境变量配置中:
envFrom:
  - configMapRef:
      name: app-config
  - secretRef:
      name: app-secret
✅ 总结
- Kubernetes 是容器编排平台的行业标准;
 - Pod 是最小单位,Deployment 用于部署,Service 提供通信;
 - 使用 ConfigMap、Secret 管理配置,Volume 实现数据持久化;
 kubectl是操作 K8s 的主要工具。