一、前言
随着容器技术的兴起,Kubernetes(简称 K8s)作为目前最主流的容器编排系统,已经被广泛应用于微服务架构、云原生开发、DevOps 体系等多个领域。然而,仅仅掌握 Kubernetes 的基础概念远远不够,实践操作和实战经验,才是真正上手的关键。
本文将带你从 0 到 1,逐步搭建一个可用的 Kubernetes 应用环境,并通过实战案例掌握核心资源对象的使用方法。
二、Kubernetes 环境搭建(以 Minikube 为例)
在学习 Kubernetes 实战之前,我们需要一个本地环境。Minikube 是一个轻量级的 Kubernetes 实现,非常适合学习和测试。
1. 安装 Minikube
macOS / Linux:
curl -LO https://storage./minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Windows:
下载地址:https://minikube.sigs./docs/start/
2. 启动本地集群
minikube start
3. 验证集群状态
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:80
kubectl apply -f nginx-deployment.yaml
2. 暴露 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.yaml
2. 使用配置挂载容器
修改 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-config
kubectl apply -f nginx-deployment-with-configmap.yaml
五、实战三:Pod 自动扩缩容(HPA)
Kubernetes 的自动扩缩容机制(HPA)能根据 CPU 或内存使用率自动调整副本数量。
1. 安装 Metrics Server
minikube addons enable metrics-server
2. 创建 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-deployment
2. 版本回滚
如果更新失败:
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:Never
kubectl apply -f job.yaml
2. 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:OnFailure
kubectl apply -f cronjob.yaml
八、实战六:Ingress 实现统一入口
Ingress 控制器可以让你通过一个统一入口访问多个服务。
1. 启用 Ingress
minikube addons enable ingress
2. 创建 Ingress 规则
# ingress.yaml
apiVersion:networking./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
访问:http://myapp.local/
九、常用命令总结
| |
|---|
| kubectl get pods |
| kubectl get svc |
| kubectl get deployment |
| kubectl get all |
| kubectl logs <pod-name> |
| kubectl exec -it <pod-name> -- /bin/sh |
| kubectl delete -f <file.yaml> |
| kubectl create deployment NAME --image=IMAGE --dry-run=client -o yaml |
十、总结
本文通过部署 Nginx 服务、配置 ConfigMap、设置 HPA、使用 Ingress 等多个实战案例,展示了 Kubernetes 的核心能力和使用方式。从中你应该可以掌握以下几点:
- 如何定义和部署常见资源对象(Deployment、Service、ConfigMap)
- 如何使用 HPA、Job、CronJob 实现自动化和任务调度
Kubernetes 的生态庞大,实战是最好的学习方式。建议大家继续尝试 StatefulSet、Volume、Secrets、网络策略等更多高级特性,深入理解 Kubernetes 在真实生产环境中的落地方法。
⭐️ 好书推荐
《Kubernetes实战(原书第2版) 》

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