k8s的pod的管理和优化

news2024/10/8 14:11:02

资源管理介绍

  • 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。

  • kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务

  • 所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。

  • kubernetes的最小管理单元是pod而不是容器,只能将容器放在Pod中,

  • kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。

  • Pod中服务服务的访问是由kubernetes提供的Service资源来实现。

  • Pod中程序的数据需要持久化是由kubernetes提供的各种存储系统来实现

# 查看所有pod
kubectl get pod 

# 查看某个pod
kubectl get pod pod_name

# 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml

#查看某个pod的详细信息
kubectl get pod_name -o wide 

查看版本

[root@k8s-master ~]# kubectl version 

查看私有节点状态

[root@k8s-master ~]# kubectl get nodes 

NAME         STATUS   ROLES           AGE     VERSION
k8s-1        Ready    <none>          3d20h   v1.30.5
k8s-2        Ready    <none>          3d20h   v1.30.5
k8s-master   Ready    control-plane   3d21h   v1.30.5

常用资源类型

常见的命令操作

一切的示例演示的前提是你的hub仓库有这些镜像

基本命令

创建一个类型为deployment,名字为web的控制器,并指定有3个

[root@k8s-master ~]# kubectl create deployment web --image nginx/nginx --replicas 3

查看控制器

[root@k8s-master ~]# kubectl get deployments.apps 

NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    3/3     3            3           5s

查看pod

[root@k8s-master ~]# kubectl get pod

NAME                READY   STATUS    RESTARTS   AGE
web-78bcbff-pssd6   1/1     Running   0          49s
web-78bcbff-qlq2v   1/1     Running   0          49s
web-78bcbff-w6dqt   1/1     Running   0          49s

查看某个pod的详细信息显示

[root@k8s-master ~]# kubectl get pod web-78bcbff-pssd6 -o wide 

NAME                READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
web-78bcbff-pssd6   1/1     Running   0          86s   10.244.1.4   k8s-1   <none>           <none>

编辑控制器的配置,如把数量该为一个

[root@k8s-master ~]# kubectl edit deployments.apps web 

此时在查看pod就会发现只有一个了

[root@k8s-master ~]# kubectl get pod

NAME                READY   STATUS    RESTARTS   AGE
web-78bcbff-qlq2v   1/1     Running   0          5m36s

或者查看控制器

[root@k8s-master ~]# kubectl get deployments.apps 

NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    1/1     1            1           6m45s

也可以用命令修改,此时该为6个

[root@k8s-master ~]# kubectl scale deployment web --replicas 6

查看

如果删除pod,控制器会再自动创建新的pod

如果要删除,删除资源,

[root@k8s-master ~]# kubectl delete deployments.apps web 

此时在查看就会提示没有了

[root@k8s-master ~]# kubectl get pod

No resources found in default namespace.

运行和调试

运行一个pod

[root@k8s-master ~]# kubectl run web --image nginx/nginx

查看

[root@k8s-master ~]# kubectl get pod

NAME   READY   STATUS    RESTARTS   AGE
web    1/1     Running   0          12s

端口暴露(即创建一个微服务),把微服务80端口映射到容器内的80端口

[root@k8s-master ~]# kubectl expose pod web --port 80 --target-port 80 

查看

此时就可以进行访问

可以查看pod的web的详细信息,要指定pod名称

可以查看日志,指定pod的名称

删除微服务

[root@k8s-master ~]# kubectl delete service web

运行一个交互的pod

[root@k8s-master ~]# kubectl run -it test --image busybox/busybox
If you don't see a command prompt, try pressing enter.
/ # 
/ # 

当同时安装下CTRL和pq时会退出pod,但不会停止运行

重新进入

[root@k8s-master ~]# kubectl attach pods/test -it

如果删除交互示的pod较慢时可以加--force

[root@k8s-master ~]# kubectl delete pod test --force 

在已经运行的pod中运行指定命令,此时就会在名为web的pod中运行了一个一个 bash shell 会话

[root@k8s-master ~]# kubectl exec pods/web -- /bin/bash

也可以加-it进入交互查看

把文件复制到pod里

[root@k8s-master ~]# mkdir mqw

[root@k8s-master ~]# kubectl cp mqw web:/

此时进入容器查看,就会看到在/下多出一个mqw的文件

可以把pod里的文件复制到本机中

[root@k8s-master mnt]# kubectl cp web:/home home

此时就会在mnt的目录下有home的目录

高级命令演示

生成yml模板

[root@k8s-master ~]# kubectl create deployment --image nginx/nginx web --dry-run=client -o yaml > web.yml

此时可以查看,vim web.yml

启用

[root@k8s-master ~]# kubectl apply -f web.yml 

查看

因为控制器的原因,即使你删了pod,控制器会自动再开启新的pod

收回资源

[root@k8s-master ~]# kubectl delete -f web.yml

版本更新

用控制器创建pod,并暴露端口,

访问,此时是v1版本的

查看历史版本



命令修改

[root@k8s-master ~]# kubectl set image deployments/test myapp=myapp:v2

查看版本

此时再次访问,就会变成v2版本

版本回滚

[root@k8s-master ~]# kubectl rollout undo deployment test --to-revision 1

此时就会变为v1版本了

利用yaml文件部署

资源参数介绍

参数名称类型参数说明
versionString这里是指的是K8S API的版本,目前基本上是v1,可以用kubectl api-versions命令查询
kindString这里指的是yaml文件定义的资源类型和角色,比如:Pod
metadataObject元数据对象,固定值就写metadata
metadata.nameString元数据对象的名字,这里由我们编写,比如命名Pod的名字
metadata.namespaceString元数据对象的命名空间,由我们自身定义
SpecObject详细定义对象,固定值就写Spec
spec.containers[]list这里是Spec对象的容器列表定义,是个列表
spec.containers[].nameString这里定义容器的名字
spec.containers[].imagestring这里定义要用到的镜像名称
spec.containers[].imagePullPolicyString定义镜像拉取策略,有三个值可选: (1) Always: 每次都尝试重新拉取镜像 (2) IfNotPresent:如果本地有镜像就使用本地镜像 (3) )Never:表示仅使用本地镜像
spec.containers[].command[]list指定容器运行时启动的命令,若未指定则运行容器打包时指定的命令
spec.containers[].args[]list指定容器运行参数,可以指定多个
spec.containers[].workingDirString指定容器工作目录
spec.containers[].volumeMounts[]list指定容器内部的存储卷配置
spec.containers[].volumeMounts[].nameString指定可以被容器挂载的存储卷的名称
spec.containers[].volumeMounts[].mountPathString指定可以被容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnlyString设置存储卷路径的读写模式,ture或false,默认为读写模式
spec.containers[].ports[]list指定容器需要用到的端口列表
spec.containers[].ports[].nameString指定端口名称
spec.containers[].ports[].containerPortString指定容器需要监听的端口号
spec.containers[] ports[].hostPortString指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
spec.containers[].ports[].protocolString指定端口协议,支持TCP和UDP,默认值为 TCP
spec.containers[].env[]list指定容器运行前需设置的环境变量列表
spec.containers[].env[].nameString指定环境变量名称
spec.containers[].env[].valueString指定环境变量值
spec.containers[].resourcesObject指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
spec.containers[].resources.limitsObject指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpuString指定CPU的限制,单位为核心数,1=1000m
spec.containers[].resources.limits.memoryString指定MEM内存的限制,单位为MIB、GiB
spec.containers[].resources.requestsObject指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpuStringCPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memoryString内存请求,单位为MIB、GIB,容器启动的初始化可用数量
spec.restartPolicystring定义Pod的重启策略,默认值为Always. (1)Always: Pod-旦终止运行,无论容器是如何 终止的,kubelet服务都将重启它 (2)OnFailure: 只有Pod以非零退出码终止时,kubelet才会重启该容器。如果容器正常结束(退出码为0),则kubelet将不会重启它 (3) Never: Pod终止后,kubelet将退出码报告给Master,不会重启该
spec.nodeSelectorObject定义Node的Label过滤标签,以key:value格式指定
spec.imagePullSecretsObject定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetworkBoolean定义是否使用主机网络模式,默认值为false。设置true表示使用宿主机网络,不使用docker网桥,同时设置了true将无法在同一台宿主机 上启动第二个副本

示例

获取yaml模板

[root@k8s-master ~]# cd mqw/
[root@k8s-master mqw]# ls
[root@k8s-master mqw]# kubectl run test --image myapp:v1 --dry-run=client -o yaml > pod.yml

查看文件

[root@k8s-master mqw]# vim pod.yml

运行

资源回收

[root@k8s-master mqw]# kubectl delete -f pod.yml 

注意如果多个容器运行在一个pod中,资源共享的同时在使用相同资源时也会干扰,比如端口

示例

[root@k8s-master mqw]# vim pod.yml 

启动之后查看,此时有一个会启动不了

在一个pod中开启多个容器时一定要确保容器彼此不能互相干扰

示例

[root@k8s-master mqw]# vim pod1.yml 


apiVersion: v1
kind: Pod 
metadata:
  labels:
    run: timing
  name: timinglee
spec:
  containers:
    - image: nginx/nginx:latest
      name: web1

    - image: busybox/busybox:latest
      name: busybox
      command: ["/bin/sh","-c","sleep 1000000"]
~                                                 

此时两个容器都运行了

同在一个pod中的容器公用一个网络

示例

[root@k8s-master mqw]# vim pod2.yml 

运行

在同一pod下的容器进行测试

可以看到查看到了另一个容器的内容

端口映射

示例

[root@k8s-master mqw]# vim pod3.yml 

运行

此时就可以访问了

设定环境变量

示例

[root@k8s-master mqw]# vim pod4.yml 

运行,并测试

资源限制

示例

[root@k8s-master mqw]# vim pod5.yml

 limits是设置pod使用资源的最高限制	
 requests是设置pod期望使用资源量,不能大于limits

查看

容器启动管理

示例

[root@k8s-master mqw]# vim pod6.yml

选择节点管理

示例

[root@k8s-master mqw]# vim pod7.yml


apiVersion: v1
kind: Pod
metadata:
  labels:
    run: timinglee
  name: test
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-2  #选择在节点2上运行
  restartPolicy: Always
  containers:
    - image: myapp:v1
      name: myapp
~                         

运行,可以看到在节点2上运行了

共享宿主机网络

示例

[root@k8s-master mqw]# vim pod8.yml


apiVersion: v1
kind: Pod
metadata:
  labels:
    run: timinglee
  name: test
spec:
  hostNetwork: true      #打开
  restartPolicy: Always
  containers:
    - image: busybox/busybox:latest
      name: busybox
      command: ["/bin/sh","-c","sleep 100000"]
~                                                

运行,测试

[root@k8s-master mqw]# kubectl apply -f pod8.yml 


[root@k8s-master mqw]#  kubectl exec -it pods/test -c busybox -- /bin/s

pod的生命周期

  • Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。

  • Init 容器与普通的容器非常像,除了如下两点:

    • 它们总是运行到完成

    • init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成,每个 Init 容器必须运行成功,下一个才能够运行。

  • 如果Pod的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。但是,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动

INIT 容器的功能

  • Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码。

  • Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低。

  • 应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像。

  • Init 容器能以不同于Pod内应用容器的文件系统视图运行。因此,Init容器可具有访问 Secrets 的权限,而应用容器不能够访问。

  • 由于 Init 容器必须在应用容器启动之前运行完成,因此 Init 容器提供了一种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。一旦前置条件满足,Pod内的所有的应用容器会并行启动。

示例

[root@k8s-master mqw]# vim pod9.yml

启动之后容器并没有运行,因为没有满足在容器内有mqw这个文件

此时在容器内创建mqw的文件后,就可以运行了

探针

探针是由 kubelet 对容器执行的定期诊断:

  • ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。

  • TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。

  • HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。

每次探测都将获得以下三种结果之一:

  • 成功:容器通过了诊断。

  • 失败:容器未通过诊断。

  • 未知:诊断失败,因此不会采取任何行动。

Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应:

  • livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 重启策略 的影响。如果容器不提供存活探针,则默认状态为 Success。

  • readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success。

  • startupProbe: 指示容器中的应用是否已经启动。如果提供了启动探测(startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失败,kubelet 将杀死容器,容器服从其重启策略进行重启。如果容器没有提供启动探测,则默认状态为成功Success。

ReadinessProbe 与 LivenessProbe 的区别

  • ReadinessProbe 当检测失败后,将 Pod 的 IP:Port 从对应的 EndPoint 列表中删除。

  • LivenessProbe 当检测失败后,将杀死容器并根据 Pod 的重启策略来决定作出对应的措施

StartupProbe 与 ReadinessProbe、LivenessProbe 的区别

  • 如果三个探针同时存在,先执行 StartupProbe 探针,其他两个探针将会被暂时禁用,直到 pod 满足 StartupProbe 探针配置的条件,其他 2 个探针启动,如果不满足按照规则重启容器。

  • 另外两种探针在容器启动后,会按照配置,直到容器消亡才停止探测,而 StartupProbe 探针只是在容器启动后按照配置满足一次后,不在进行后续的探

存活探针演示

[root@k8s-master mqw]# vim pod10.yml

解释

  tcpSocket作用:检测端口存在性
 initialDelaySeconds: 3		#容器启动后要等待多少秒后就探针开始工作,默认是 0
 periodSeconds: 1			#执行探测的时间间隔,默认为 10s
timeoutSeconds: 1			#探针执行检测请求后,等待响应的超时时间,默认为 1s

运行

就绪探针

[root@k8s-master mqw]# vim pod11.yml

此时启动后,但还是处于准备状态

端口启动微服务

[root@k8s-master mqw]# kubectl expose pod readiness --port 80 --target-port 80

此时查看详细信息,但端口没暴露,不满足条件

添加

[root@k8s-master mqw]# kubectl exec pods/readiness -c myapp -- /bin/sh -c "echo test > /usr/share/nginx/html/test.html"

查看,此时条件满足,已经运行了

查看详细信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2196528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes--深入理解Pod资源管理

文章目录 kubectl --helpapi-resourcesapi-versionskubectl explain ... API资源资源规范PodServiceConfigMapSecret 显示资源删除资源详细描述RESTful API Pod资源管理Pod的核心概念Pod资源配置了解Pod运行状况Kubectl get pods xxxxkubectl describe pods xxxkubectl logs -f…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案&#xff0c;它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中&#xff0c;常见的设计模式可以分为三大类&#xff1a;创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

性能剖析利器-Conan|得物技术

作者 / 得物技术 - 仁慈的狮子 目录 一、背景 1. 局限性 2. 向前一步 二、原理剖析 1. 系统架构 2. 工作模式 3. reporter 三、稳定性验证 四、案例分析 五、写在最后 一、背景 线上问题的定位与优化是程序员进阶的必经之路&#xff0c;常见的问题定位手段有日志排查、分布式链…

脑机接口技术的未来与现状:Neuralink、机械手臂与视觉假体的突破

近年来&#xff0c;脑机接口&#xff08;BCI&#xff09;技术发展迅速&#xff0c;不仅限于科幻小说和电影&#xff0c;已经逐步进入现实应用。特别是马斯克的Neuralink公司推出的“盲视&#xff08;Blindsight&#xff09;”设备&#xff0c;最近获得了FDA的突破性设备认定&am…

IEC104规约的秘密之八----应用任务优先级

所谓应用任务优先级&#xff0c;就是同时出现不同的应用任务时&#xff0c;优先发哪个报文。这里有一个表格&#xff0c;可以做为参考&#xff0c;一般是在子站来实现&#xff0c;子站是数据提供方&#xff0c;需要对各种任务的优先级进行排序&#xff0c;以满足应用的实际需要…

为什么Linux系统下的程序无法在Windows下运行

两个系统的格式不同&#xff0c;格式就是协议&#xff0c;是在固定位置有意义的数据。Linux下可执行文件格式是elf&#xff0c;可使用readelf查看elf文件头 而Windows下的可执行程序是PE格式&#xff0c;是一种可执行文件。 还有一点是Linux下和Win下系统API不同&#xff0c;这…

【CSS】houdini自定义CSS属性实现渐变色旋转动画

现有一段代码&#xff0c;在不旋转整个元素的前提下&#xff0c;渐变背景无法应用动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

基于 TOSHIBA eFuse 应用电路(带热关断功能)设计方案

近年来各类消费产品&#xff0c;存储设备&#xff0c;服务器等电路变得越来越密集&#xff0c;越来越灵敏&#xff0c;因此保护功能变得越来越重要&#xff0c;我们开发了是用于过流保护和过温保护的参考设计解决方案。 将介绍参考设计中的两种电路&#xff0c;合在一起2CM*2CM…

jetlinks物联网平台学习5:dtu设备接入及温度报警场景联动

dtu设备接入及温度报警场景联动 1、平台端配置1、新建协议2、新建网络组件3、设备接入网关配置4、新增产品5、导入产品物模型6、新增设备7、场景联动配置7.1、触发规则7.2、触发条件7.3、执行动作 2、平台端验证场景联动 1、平台端配置 下载三个文件 https://hanta.yuque.com…

详解 SPI 机制

SPI(Service Provider Interface) 是 JDK 内置的一种服务提供发现机制&#xff1a;可以用来启用框架扩展和替换组件&#xff0c;主要用于框架中开发。例如&#xff1a;Dubbo、Spring、Common-Logging&#xff0c;JDBC 等都是采用 SPI 机制&#xff0c;针对同一接口采用不同的实…

RTOS系统移植

一、完成系统移植 系统移植上官网寻找合适的系统包&#xff0c;下载后将文件移植入工程文件 二、创建任务句柄、内核对象句柄&#xff08;信号量&#xff0c;消息队列&#xff0c;事件标志组&#xff0c;软件定时器&#xff09;、声明全局变量、声明函数 三、创建主函数&#…

Stable Diffusion绘画 |,IP角色多视图生成技巧(附插件模型)

在游戏设计、小说推文、角色设计里面&#xff0c;很多场景都运用到IP角色的多视图。 人物角色多视图 第1步&#xff0c;输入提示词&#xff1a; 第2步&#xff0c;由于要在同一张图片中生成多角度的并排展示&#xff0c;需要修改图片的分辨率&#xff08;尤其是宽度&#xff…

开源问答类知识付费网站源码系统 带完整的安装代码包以及搭建部署教程

系统概述 近年来&#xff0c;随着互联网的飞速发展&#xff0c;知识付费市场呈现出爆炸式增长。各大知识付费平台如雨后春笋般涌现&#xff0c;涵盖了从教育、科技到生活娱乐等各个领域。用户通过付费获取高质量的知识内容&#xff0c;而内容创作者则通过分享知识获得经济回报…

大模型应用探讨,免费AI写作、一键PPT、免费PDF百种应用、与AI对话

大模型应用平台知识普及, 应用可见评论区 我们生活在一个充满无限可能的数字时代&#xff0c;人工智能技术正在推动着各种创新的边界。大模型应用平台一般包含以下功能。 ## 1. 一键生成论文 写作是学生、研究人员和职场人士都无法避免的任务。大模型应用平台拥有强大的文本生…

如何让算法拥有“记忆”?一文读懂记忆化搜索

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 什么是记忆化搜索 二 相关题目练习 2.1 斐波那契数&#xff08;详解记忆化搜索&#xff09; ​编辑 解法一&#xff08;递归&#xff09;&#xff1a; 解法二&#xff08;记…

全面整理人工智能(AI)学习路线图及资源推荐,非常详细收藏我这一篇就够了

在人工智能&#xff08;AI&#xff09;飞速发展的今天&#xff0c;掌握AI技术已经成为了许多高校研究者和职场人士的必备技能。从深度学习到强化学习&#xff0c;从大模型训练到实际应用&#xff0c;AI技术的广度和深度不断拓展。作为一名AI学习者&#xff0c;面对浩瀚的知识海…

kafka的成神秘籍(java)

kafka的成神秘籍 kafka的简介 ​ Kafka 最初是由Linkedin 即领英公司基于Scala和 Java语言开发的分布式消息发布-订阅系统&#xff0c;现已捐献给Apache软件基金会。Kafka 最被广为人知的是作为一个 消息队列(mq)系统存在&#xff0c;而事实上kafka已然成为一个流行的分布式流…

【吊打面试官系列-MySQL面试题】试述视图的优点?

大家好&#xff0c;我是锋哥。今天分享关于【试述视图的优点&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 试述视图的优点&#xff1f; (1) 视图能够简化用户的操作 (2) 视图使用户能以多种角度看待同一数据&#xff1b; (3) 视图为数据库提供了一定程度的…

8年JAVA逆袭转AI之路!成功拿下offer

前段时间有一个粉丝投稿&#xff0c;他是8年老Java程序员了&#xff0c;每天两小时的碎片化学习时间&#xff0c;不仅没有陷入程序员的年龄恐慌&#xff0c;还拿到了目前薪资翻倍的offer 问到他是什么让他坚持学了6个月&#xff0c;他用了华为总裁任正非说的“今后职场上只有…

Nginx03-使用

零、文章目录 Nginx03-使用 1、Nginx服务器启停命令 对于 Nginx 的启停在 Linux 系统中也有很多种方式&#xff0c;我们介绍两种方式&#xff1a; Nginx信号控制Nginx命令行控制 &#xff08;1&#xff09;Nginx信号控制 查看Nginx 中的 master 和 worker 进程 [rootloc…