kubernetes对于一个nginx服务的增删改查

1、创建 Nginx 服务

1.1、创建 Deployment

Deployment 用于管理 Pod 副本和更新策略。

方式一:命令式创建

bash 复制代码
kubectl create deployment nginx-deployment --image=nginx:latest --replicas=3 --port=80

--replicas=3:指定副本数为 3
--port=80:容器暴露的端口

方式二:YAML 文件创建

推荐优先使用 YAML 文件:便于版本控制和复用(例如 Git 管理)

创建 nginx-deployment.yaml:

yml 复制代码
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

应用配置:

bash 复制代码
kubectl apply -f nginx-deployment.yaml

1.2、创建 Service

Service 用于暴露 Pod 的网络访问。

方式一:命令式创建 NodePort 类型 Service

bash 复制代码
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:

yml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

应用配置:

bash 复制代码
kubectl apply -f nginx-service.yaml

2、查询 Nginx 服务状态

2.1、查看 Deployment 和 Pod

bash 复制代码
kubectl get deployments,pods -l app=nginx

-l app=nginx:通过标签过滤。

标签管理:通过 -l 筛选资源,确保 Service 正确关联 Pod。

2.2、查看 Service

bash 复制代码
kubectl get svc nginx-service

输出示例:

bash 复制代码
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、查看详细信息

bash 复制代码
kubectl describe deployment nginx-deployment  # 查看 Deployment 详情
kubectl describe pod nginx-deployment-xxxxx  # 查看 Pod 日志和事件

3、修改 Nginx 服务

3.1、扩展副本数

bash 复制代码
kubectl scale deployment nginx-deployment --replicas=5

3.2、更新镜像版本

bash 复制代码
kubectl set image deployment/nginx-deployment nginx=nginx:1.25

3.3、通过 YAML 文件更新

修改 nginx-deployment.yaml 后执行:

bash 复制代码
kubectl apply -f nginx-deployment.yaml

4、删除 Nginx 服务

4.1、删除 Deployment

bash 复制代码
kubectl delete deployment nginx-deployment

关联的 Pod 会自动删除

4.2、删除 Service

bash 复制代码
kubectl delete svc nginx-service

4.3、通过 YAML 文件删除

bash 复制代码
kubectl delete -f nginx-deployment.yaml -f nginx-service.yaml

5、常见问题排查

Pod 未启动

bash 复制代码
kubectl logs nginx-deployment-xxxxx       # 查看 Pod 日志
kubectl describe pod nginx-deployment-xxxxx  # 检查事件和资源限制

服务无法访问

bash 复制代码
kubectl get endpoints nginx-service  # 检查后端 Pod IP 是否正常

回滚版本

bash 复制代码
kubectl rollout undo deployment/nginx-deployment  # 回滚到上一版本

命名空间:若需隔离环境,可添加 -n 参数(如 -n dev)

相关推荐
码匠许师傅6 分钟前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试
QCodingDev28 分钟前
Spring AI Alibaba ReAct Agent实战:从Tool Calling到Agent,企业AI复杂业务该如何设计?
java·人工智能·agent·ai编程·spring ai
RainCity40 分钟前
Java Swing 自定义组件库分享(十六)
java·笔记·后端
流烟默40 分钟前
Kubernetes 探针完全指南:健康检查机制深度解析
云原生·容器·kubernetes
赵广陆2 小时前
企业实战:Markdown图片检索
android·java·开发语言
C++、Java和Python的菜鸟2 小时前
第3章 从0开始用若依
java·开发语言
Json____2 小时前
五金制品行业-企业官网源码
java·大数据·数据库·企业站·wwwoop.com
GGG7663 小时前
k8s-Pod Scheduler
云原生·容器·kubernetes
counting money4 小时前
Spring AI Alibaba 从入门到实战:构建企业级 AI 应用
java·人工智能·spring
GGG7664 小时前
k8s-动态卷供应
云原生·容器·kubernetes