Skip to main content

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

用于管理配置数据和敏感信息。

apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
ENV: production
LOG_LEVEL: debug

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 的主要工具。

📚 推荐资源