1、创建 Nginx 服务
1.1、创建 Deployment
Deployment 用于管理 Pod 副本和更新策略。
方式一:命令式创建
kubectl create deployment nginx-deployment --image=nginx:latest --replicas=3 --port=80
--replicas=3
:指定副本数为 3
--port=80
:容器暴露的端口
方式二:YAML 文件创建
推荐优先使用 YAML 文件:便于版本控制和复用(例如 Git 管理)
创建 nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
应用配置:
kubectl apply -f nginx-deployment.yaml
1.2、创建 Service
Service 用于暴露 Pod 的网络访问。
方式一:命令式创建 NodePort 类型 Service
kubectl expose <资源类型> <资源名称> --port=<Service暴露端口> --target-port=<容器端口> [其他参数]
kubectl expose deployment nginx-deployment --type=NodePort --port=80 --target-port=80 --name=nginx-service
--type=NodePort
:通过节点 IP 和端口访问
--target-port=80
:Pod 中容器实际监听的端口,需与容器定义一致(如 Dockerfile 中的 EXPOSE)
--port
:Service 对外暴露的端口,集群内其他组件通过此端口访问服务。
方式二:YAML 文件创建
创建 nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
应用配置:
kubectl apply -f nginx-service.yaml
2、查询 Nginx 服务状态
2.1、查看 Deployment 和 Pod
kubectl get deployments,pods -l app=nginx
-l app=nginx
:通过标签过滤。
标签管理:通过 -l
筛选资源,确保 Service 正确关联 Pod。
2.2、查看 Service
kubectl get svc nginx-service
输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service NodePort 10.96.123.45 <none> 80:31000/TCP 5m
访问地址:http://:31000
2.3、查看详细信息
kubectl describe deployment nginx-deployment # 查看 Deployment 详情
kubectl describe pod nginx-deployment-xxxxx # 查看 Pod 日志和事件
3、修改 Nginx 服务
3.1、扩展副本数
kubectl scale deployment nginx-deployment --replicas=5
3.2、更新镜像版本
kubectl set image deployment/nginx-deployment nginx=nginx:1.25
3.3、通过 YAML 文件更新
修改 nginx-deployment.yaml 后执行:
kubectl apply -f nginx-deployment.yaml
4、删除 Nginx 服务
4.1、删除 Deployment
kubectl delete deployment nginx-deployment
关联的 Pod 会自动删除
4.2、删除 Service
kubectl delete svc nginx-service
4.3、通过 YAML 文件删除
kubectl delete -f nginx-deployment.yaml -f nginx-service.yaml
5、常见问题排查
Pod 未启动
kubectl logs nginx-deployment-xxxxx # 查看 Pod 日志
kubectl describe pod nginx-deployment-xxxxx # 检查事件和资源限制
服务无法访问
kubectl get endpoints nginx-service # 检查后端 Pod IP 是否正常
回滚版本
kubectl rollout undo deployment/nginx-deployment # 回滚到上一版本
命名空间:若需隔离环境,可添加 -n 参数(如 -n dev)