一、前言
随着容器技术的兴起,Kubernetes(简称 K8s)作为目前最主流的容器编排系统,已经被广泛应用于微服务架构、云原生开发、DevOps 体系等多个领域。然而,仅仅掌握 Kubernetes 的基础概念远远不够,实践操作和实战经验,才是真正上手的关键。
本文将带你从 0 到 1,逐步搭建一个可用的 Kubernetes 应用环境,并通过实战案例掌握核心资源对象的使用方法。
二、Kubernetes 环境搭建(以 Minikube 为例)
在学习 Kubernetes 实战之前,我们需要一个本地环境。Minikube 是一个轻量级的 Kubernetes 实现,非常适合学习和测试。
1. 安装 Minikube
macOS / Linux:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikubeWindows:
下载地址:https://minikube.sigs.k8s.io/docs/start/
2. 启动本地集群
minikube start3. 验证集群状态
kubectl get nodes输出示例:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 3m34s v1.29.0三、实战一:部署 Nginx 服务
1. 创建 Deployment
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21.6
ports:
- containerPort: 80kubectl apply -f nginx-deployment.yaml2. 暴露 Service
kubectl expose deployment nginx-deployment --type=NodePort --port=80查看访问端口:
kubectl get svc使用命令打开浏览器访问:
minikube service nginx-deployment四、实战二:配置 ConfigMap 管理配置
Kubernetes 推荐将配置与容器镜像解耦,我们可以使用 ConfigMap 来注入配置信息。
1. 创建配置文件
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
index.html: |
<html>
<head><title>My Nginx Site</title></head>
<body><h1>Hello from ConfigMap!</h1></body>
</html>kubectl apply -f configmap.yaml2. 使用配置挂载容器
修改 Deployment:
# nginx-deployment-with-configmap.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-config-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx-config
template:
metadata:
labels:
app: nginx-config
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/index.html
subPath: index.html
volumes:
- name: html
configMap:
name: nginx-configkubectl apply -f nginx-deployment-with-configmap.yaml五、实战三:Pod 自动扩缩容(HPA)
Kubernetes 的自动扩缩容机制(HPA)能根据 CPU 或内存使用率自动调整副本数量。
1. 安装 Metrics Server
minikube addons enable metrics-server2. 创建 HPA
kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=5查看 HPA 状态:
kubectl get hpa六、实战四:滚动更新与版本回滚
1. 更新镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.25.0查看状态:
kubectl rollout status deployment/nginx-deployment2. 版本回滚
如果更新失败:
kubectl rollout undo deployment/nginx-deployment七、实战五:Job 与定时任务 CronJob
Kubernetes 支持短生命周期的 Job,以及类似 Linux crontab 的 CronJob。
1. Job 示例
# job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: hello-job
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["echo", "Hello from Kubernetes!"]
restartPolicy: Neverkubectl apply -f job.yaml2. CronJob 示例
# cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello-cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
command: ["date"]
restartPolicy: OnFailurekubectl apply -f cronjob.yaml八、实战六:Ingress 实现统一入口
Ingress 控制器可以让你通过一个统一入口访问多个服务。
1. 启用 Ingress
minikube addons enable ingress2. 创建 Ingress 规则
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-deployment
port:
number: 80添加 hosts 映射(本地开发):
127.0.0.1 myapp.local九、常用命令总结
操作 | 命令 |
查看 pod |
|
查看服务 |
|
查看部署 |
|
查看所有资源 |
|
查看日志 |
|
进入容器 |
|
删除资源 |
|
YAML 生成 |
|
十、总结
本文通过部署 Nginx 服务、配置 ConfigMap、设置 HPA、使用 Ingress 等多个实战案例,展示了 Kubernetes 的核心能力和使用方式。从中你应该可以掌握以下几点:
- 如何定义和部署常见资源对象(Deployment、Service、ConfigMap)
- 如何使用 HPA、Job、CronJob 实现自动化和任务调度
- 如何通过 Ingress 实现统一入口管理
Kubernetes 的生态庞大,实战是最好的学习方式。建议大家继续尝试 StatefulSet、Volume、Secrets、网络策略等更多高级特性,深入理解 Kubernetes 在真实生产环境中的落地方法。
⭐️ 好书推荐
《Kubernetes实战(原书第2版) 》

【内容简介】
本书是管理大规模容器编排的大师级读物,涵盖了所有最新的Kubernetes功能、工具和弃用内容。在本书中,四位在分布式系统、企业应用开发和开源领域有着丰富经验的Kubernetes专家对使用 Kubernetes 容器编排系统构建应用进行了全程指导。本书内容丰富,涵盖开发者工作流、监控和度量指标、配置管理、持续集成和测试、版本控制与发布、应用程序的全球化部署、资源管理、网络、Pod安全、集群策略与治理、多集群管理、外部服务集成、机器学习、在Kubernetes上构建高层应用的模式、状态管理和有状态应用、准入控制与授权、GitOps、安全性、混沌测试、实现Operator等,是一本非常全面的实践指南。
















