Kubernetes 基础概念解析

什么是 Kubernetes?

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。它由 Google 设计并贡献给云原生计算基金会(CNCF)。

核心架构

Kubernetes 集群由两部分组成:

关键概念

1. Pod

Pod 是 Kubernetes 中最小的部署单元,包含一个或多个容器。同一 Pod 中的容器共享网络和存储资源。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp
    image: myapp:1.0
    ports:
    - containerPort: 80

2. Deployment

Deployment 用于声明式地管理 Pod 的副本数量和版本更新。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:1.0
        ports:
        - containerPort: 80

3. Service

Service 定义了一组 Pod 的访问策略,提供负载均衡和服务发现功能。

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

4. ConfigMap 和 Secret

用于存储配置信息和敏感数据,实现配置与代码分离。

# ConfigMap 示例
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_URL: "postgres://localhost:5432/mydb"
  LOG_LEVEL: "info"

5. Namespace

Namespace 用于在同一个物理集群中隔离资源,适合多团队或多环境场景。

常用命令

命令 说明
kubectl get pods 查看 Pod 列表
kubectl apply -f deploy.yaml 应用配置文件
kubectl logs <pod-name> 查看 Pod 日志
kubectl exec -it <pod-name> -- bash 进入 Pod
kubectl scale deployment <name> --replicas=5 扩缩容

最佳实践

总结

Kubernetes 是云原生时代的基础设施,掌握其核心概念对于现代 DevOps 工程师至关重要。建议从本地 Minikube 或 Kind 开始实践,逐步深入理解。

标签: Kubernetes DevOps 容器编排 云原生