我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Kubernetes应用服务质量管理的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Kubernetes应用服务质量管理的方法是什么

本篇内容主要讲解“Kubernetes应用服务质量管理的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes应用服务质量管理的方法是什么”吧!

    服务质量管理

    在Kubernetes中,Pod是最小的调度单元,所以跟资源和调度相关的属性都是Pod对象的字段,而其中最重要的就是CPU和内存。

    如下所示:

    ---apiVersion: v1kind: Podmetadata:  name: pod-demospec:  containers:  - name: myweb    image: wordpress    imagePullPolicy: IfNotPresent    resources:      requests:        memory: "128Mi"        cpu: "250m"      limits:        memory: "256Mi"        cpu: "500m"

    其中resources就是资源限制部分。

    注:由于一个Pod里可以定义多个Containers,而每个资源限制都是配置在各自的Container,所以Pod的整体配置资源是所有Containers的总和。

    在Kubernetes中,CPU这样的资源被称为"可压缩资源",所谓可压缩资源就是当可用资源不足的时候,Pod只会"饥饿",不会退出。而向Memory这样的资源被称为"不可压缩资源",所谓的不可压缩资源就是当资源不足的时候Pod只会OOM。

    其中CPU的设置单位是CPU的个数,比如CPU=1就表示这个Pod的CPU限额是1个CPU,而到底是1个CPU核心、是1个vCPU还是1个CPU超线程,这要取决于宿主机上CPU实现方式,而Kunernetes只需要保证该Pod能够使用到1个CPU的使用能力。

    Kubernetes允许将CPU的限额设置位分数,比如上面我们设置的CPU.limits的值为500m,而所谓的500m就是500milliCPU,也就是0.5个CPU,这样,这个Pod就会被分到一个CPU一半的计算能力。所以我们可以直接把配置写成cpu=0.5,不过官方推荐500m的写法,这是Kubernetes内部的CPU计算方式。

    在Kubernetes中,内存资源的单位是bytes,支持使用Ei,Pi,Ti,Gi,Mi,Ki的方式作为bytes的值,其中需要注意Mi和M的区别(1Mi=1024_1024,1M=1000_1000)。

    Kubernetes中Pod的CPU和内存的资源限制,实际上分为requests和limits两种情况。

    spec.containers[].resources.limits.cpuspec.containers[].resources.limits.memoryspec.containers[].resources.requests.cpuspec.containers[].resources.requests.memory

    这两者的区别如下:

    • 在调度的时候,kube-scheduler会安requests的值进行计算;

    • 在设置CGroups的时候,kubelet会安limits的值来进行设置;

    QoS模型

    Kubernetes中支持三种QoS模型。其分类是基于requests和limits的不同配置。

    Guaranteed

    当Pod里的每一个Containers都设置了requests和limits,并且其值都相等的时候,这种Pod就属于Guaranteed类别,如下:

    apiVersion: v1kind: Podmetadata:  name: qos-demo  namespace: qos-examplespec:  containers:  - name: qos-demo-ctr    image: nginx    resources:      limits:        memory: "200Mi"        cpu: "700m"      requests:        memory: "200Mi"        cpu: "700m"

    注意,当这Pod仅设置limits,没有设置requests的时候,系统默认为它分配于limits相等的requests值,也就会被划分为Guaranteed类别。

    Burstable

    而当这个Pod不满足Guaranteed条件,但至少有一个Contaienrs设置了requests,那么这个Pod就会被划分为Burstable类别。如下:

    apiVersion: v1kind: Podmetadata:  name: qos-demo-2  namespace: qos-examplespec:  containers:  - name: qos-demo-2-ctr    image: nginx    resources:      limits        memory: "200Mi"      requests:        memory: "100Mi"
    BestEffort

    如果这个Pod既没有设置requests值,也没有设置limits的值的时候,那么它的QoS类别就是BestEffort类别。

    apiVersion: v1kind: Podmetadata:  name: qos-demo-3  namespace: qos-examplespec:  containers:  - name: qos-demo-3-ctr    image: nginx

    而QoS划分的主要场景就是当宿主机资源紧张的时候,kubelet对资源进行Eviction时需要用到。目前Kubernetes设置的默认Eviction的阈值如下:

    memory.available<100Minodefs.available<10%nodefs.inodesFree<5%imagefs.available<15%

    上述条件可以在kubelet中设置:

    kubelet --eviction-hard=imagefs.available<10%,memory.available<500Mi,nodefs.available<5%,nodefs.inodesFree<5% --eviction-soft=imagefs.available<30%,nodefs.available<10% --eviction-soft-grace-period=imagefs.available=2m,nodefs.available=2m --eviction-max-pod-grace-period=600

    Kubernetes中的Eviction分为Soft Eviction和Hard Eviction两种模式。

    • Soft Eviction允许设置优雅等待时间,如上设置imagefs.available=2m,允许在Imagefs不足阈值达到2分钟之后才进行Eviction;

    • Hard Eviction在达到阈值就进行Eviction;

    当宿主机的Eviction阈值达到后,就会进入MemoryPressure或者DiskPressure状态,从而避免新的Pod调度到上面去。而当Eviction发生时,kubelet删除Pod的先后顺序如下:

    • BestEffort 类型的Pod;

    • Burstable类别并且发生"饥饿"的资源使用量已经超出了requests的Pod;

    • Guaranteed类别并且只有当Guaranteed类别的Pod的资源使用量超过了其limits限制,或者宿主机本身处于Memory Pressure状态时,Guaranteed才会被选中被Eviction;

    cpuset

    cpuset,就是把容器绑定到某个CPU核上,减少CPU的上下文切换。

    • Pod必须是Guaranteed类型;

    • 只需要将Pod的CPU资源的requests和limits设置为同一个相等的数值;

    spec:  containers:  - name: nginx    image: nginx    resources:      limits:        memory: "200Mi"        cpu: "2"      requests:        memory: "200Mi"        cpu: "2"

    LimitRange

    在正常配置应用Pod的时候,都会把服务质量加上,也就是配置好requests和limits,但是,如果Pod非常多,而且很多Pod只需要相同的限制,我们还是像上面那样一个一个的加就非常繁琐了,这时候我们就可以通过LimitRange做一个全局限制。如果在部署Pod的时候指定了requests和Limits,则指定的生效。反之则由全局的给Pod加上默认的限制。

    总结,LimitRange可以实现的功能:

    • 限制namespace中每个pod或container的最小和最大资源用量。

    • 限制namespace中每个PVC的资源请求范围。

    • 限制namespace中资源请求和限制数量的比例。

    • 配置资源的默认限制。

    常用的场景如下(来自《Kubernetes权威指南》)

    • 集群中的每个节点都有2GB内存,集群管理员不希望任何Pod申请超过2GB的内存:因为在整个集群中都没有任何节点能满足超过2GB内存的请求。如果某个Pod的内存配置超过2GB,那么该Pod将永远都无法被调度到任何节点上执行。为了防止这种情况的发生,集群管理员希望能在系统管理功能中设置禁止Pod申请超过2GB内存。

    • 集群由同一个组织中的两个团队共享,分别运行生产环境和开发环境。生产环境最多可以使用8GB内存,而开发环境最多可以使用512MB内存。集群管理员希望通过为这两个环境创建不同的命名空间,并为每个命名空间设置不同的限制来满足这个需求。

    • 用户创建Pod时使用的资源可能会刚好比整个机器资源的上限稍小,而恰好剩下的资源大小非常尴尬:不足以运行其他任务但整个集群加起来又非常浪费。因此,集群管理员希望设置每个Pod都必须至少使用集群平均资源值(CPU和内存)的20%,这样集群能够提供更好的资源一致性的调度,从而减少了资源浪费。

    (1)、首先创建一个namespace

    apiVersion: v1kind: Namespacemetadata:  name: coolops

    (2)、为namespace配置LimitRange

    apiVersion: v1kind: LimitRangemetadata:  name: mylimit  namespace: coolopsspec:  limits:  - max:      cpu: "1"      memory: 1Gi    min:      cpu: 100m      memory: 10Mi    maxLimitRequestRatio:      cpu: 3      memory: 4    type: Pod  - default:      cpu: 300m      memory: 200Mi    defaultRequest:      cpu: 200m      memory: 100Mi    max:      cpu: "2"      memory: 1Gi    min:      cpu: 100m      memory: 10Mi    maxLimitRequestRatio:      cpu: 5      memory: 4    type: Container

    参数说明:

    • max:如果type是Pod,则表示pod中所有容器资源的Limit值和的上限,也就是整个pod资源的最大Limit,如果pod定义中的Limit值大于LimitRange中的值,则pod无法成功创建。如果type是Container,意义类似。

    • min:如果type是Pod,则表示pod中所有容器资源请求总和的下限,也就是所有容器request的资源总和不能小于min中的值,否则pod无法成功创建。如果type是Container,意义类似。

    • maxLimitRequestRatio:如果type是Pod,表示pod中所有容器资源请求的Limit值和request值比值的上限,例如该pod中cpu的Limit值为3,而request为0.5,此时比值为6,创建pod将会失败。

    • defaultrequest和defaultlimit则是默认值,只有type为Container才有这两项配置

    注意:

    (1)、如果container设置了maxpod中的容器必须设置limit,如果未设置,则使用defaultlimt的值,如果defaultlimit也没有设置,则无法成功创建

    (2)、如果设置了containermin,创建容器的时候必须设置request的值,如果没有设置,则使用defaultrequest,如果没有defaultrequest,则默认等于容器的limit值,如果limit也没有,启动就会报错

    创建上面配置的LimitRange:

    $ kubectl apply -f limitrange.yaml limitrange/mylimit created$ kubectl get limitrange -n coolopsNAME      CREATED ATmylimit   2022-08-02T06:08:43Z$ kubectl describe limitranges -n coolops mylimitName:       mylimitNamespace:  coolopsType        Resource  Min   Max  Default Request  Default Limit  Max Limit/Request Ratio----        --------  ---   ---  ---------------  -------------  -----------------------Pod         cpu       100m  1    -                -              3Pod         memory    10Mi  1Gi  -                -              4Container   cpu       100m  2    200m             300m           5Container   memory    10Mi  1Gi  100Mi            200Mi          4

    (3)、创建一个允许范围之内的requests和limits的pod

    apiVersion: v1kind: Podmetadata:  name: pod01  namespace: coolopsspec:  containers:  - name: pod-01    image: nginx    imagePullPolicy: IfNotPresent    resources:      requests:        cpu: 200m        memory: 30Mi      limits:        cpu: 300m        memory: 50Mi

    我们通过kubectl apply -f pod-01.yaml可以正常创建Pod。

    (4)、创建一个cpu超出允许访问的Pod

    apiVersion: v1kind: Podmetadata:  name: pod02  namespace: coolopsspec:  containers:  - name: pod-02    image: nginx    imagePullPolicy: IfNotPresent    resources:      requests:        cpu: 200m        memory: 30Mi      limits:        cpu: 2        memory: 50Mi

    然后我们创建会报如下错误:

    # kubectl apply -f pod-02.yaml Error from server (Forbidden): error when creating "pod-02.yaml": pods "pod02" is forbidden: [maximum cpu usage per Pod is 1, but limit is 2, cpu max limit to request ratio per Pod is 3, but provided ratio is 10.000000, cpu max limit to request ratio per Container is 5, but provided ratio is 10.000000]

    (5)创建低于允许范围的Pod

    apiVersion: v1kind: Podmetadata:  name: pod03  namespace: coolopsspec:  containers:  - name: pod-03    image: nginx    imagePullPolicy: IfNotPresent    resources:      requests:        cpu: 200m        memory: 30Mi      limits:        cpu: 100m        memory: 10Mi

    然后会报如下错误:

    # kubectl apply -f pod-03.yaml The Pod "pod03" is invalid: * spec.containers[0].resources.requests: Invalid value: "200m": must be less than or equal to cpu limit* spec.containers[0].resources.requests: Invalid value: "30Mi": must be less than or equal to memory limit

    (6)、创建一个未定义request或Limits的Pod

    apiVersion: v1kind: Podmetadata:  name: pod04  namespace: coolopsspec:  containers:  - name: pod-04    image: nginx    imagePullPolicy: IfNotPresent    resources:      requests:        cpu: 200m        memory: 200Mi

    然后我们创建完Pod后会发现自动给我们加上了limits。如下:

    # kubectl describe pod -n coolops pod04...    Limits:      cpu:     300m      memory:  200Mi    Requests:      cpu:        200m      memory:     200Mi...

    上面我指定了requests,LimitRange自动给我们加上了defaultLimits,你也可以试一下全都不加或者加一个,道理是一样的。值得注意的是这里要注意一下我们设置的maxLimitRequestRatio,配置的比列必须小于等于我们设置的值。

    上文有介绍LimitRange还可以限制还可以限制PVC,如下:

    apiVersion: v1kind: LimitRangemetadata:  name: storagelimits  namespace: coolopsspec:  limits:  - type: PersistentVolumeClaim    max:      storage: 2Gi    min:      storage: 1Gi

    创建完后即可查看:

     kubectl describe limitranges -n coolops storagelimits Name:                  storagelimitsNamespace:             coolopsType                   Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio----                   --------  ---  ---  ---------------  -------------  -----------------------PersistentVolumeClaim  storage   1Gi  2Gi  -                -              -

    你可以创建PVC进行测试,道理是一样的。

    服务可用性管理

    高可用

    生产级别应用,为了保证应用的可用性,除了特殊应用(例如批次应用)都会保持高可用,所以在设计应用Pod的时候,就要考虑应用的高可用。

    最简单的就是多副本,也就是在创建应用的时候,至少需要2个副本,如下指定replicas为3就表示该应用有3个副本:

    apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: nginx  name: nginx-deploymentspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: nginx  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: nginx    spec:      containers:      - image: nginx:1.8        imagePullPolicy: IfNotPresent        name: nginx        resources:          requests:            cpu: 0.5            memory: 500M          limits:            cpu: 0.5            memory: 500M        ports:        - containerPort: 80          name: http          protocol: TCP

    但是光配置多副本就够了么?

    如果这三个副本都调度到一台服务器上,该服务器因某些原因宕机了,那上面的应用是不是就不可用?

    为了解决这个问题,我们需要为同一个应用配置反亲和性,也就是不让同一应用的Pod调度到同一主机上,将上面的应用YAML改造成如下:

    apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: nginx  name: nginx-deploymentspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: nginx  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: nginx    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: app                operator: In                values:                - nginx            topologyKey: kubernetes.io/hostname      containers:      - image: nginx:1.8        imagePullPolicy: IfNotPresent        name: nginx        resources:          requests:            cpu: 0.5            memory: 500M          limits:            cpu: 0.5            memory: 500M        ports:        - containerPort: 80          name: http          protocol: TCP

    这样能保证同应用不会被调度到同节点,基本的高可用已经做到了。

    可用性

    但是光保证应用的高可用,应用本身不可用,也会导致异常。

    我们知道Kubernetes的Deployment的默认更新策略是滚动更新,如何保证新应用更新后是可用的,这就要使用readinessProbe,用来确保应用可用才会停止老的版本,上面的YAML修改成如下:

    apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: nginx  name: nginx-deploymentspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: nginx  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: nginx    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: app                operator: In                values:                - nginx            topologyKey: kubernetes.io/hostname      containers:      - image: nginx:1.8        imagePullPolicy: IfNotPresent        name: nginx        resources:          requests:            cpu: 0.5            memory: 500M          limits:            cpu: 0.5            memory: 500M        readinessProbe:          failureThreshold: 3          httpGet:            path: /            port: http            scheme: HTTP          initialDelaySeconds: 10          periodSeconds: 10          successThreshold: 1          timeoutSeconds: 3        ports:        - containerPort: 80          name: http          protocol: TCP

    这样至少能保证只有新版本可访问才接收外部流量。

    但是应用运行过程中异常了呢?这就需要使用livenessProbe来保证应用持续可用,上面的YAML修改成如下:

    apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: nginx  name: nginx-deploymentspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: nginx  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: nginx    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: app                operator: In                values:                - nginx            topologyKey: kubernetes.io/hostname      containers:      - image: nginx:1.8        imagePullPolicy: IfNotPresent        name: nginx        resources:          requests:            cpu: 0.5            memory: 500M          limits:            cpu: 0.5            memory: 500M        readinessProbe:          failureThreshold: 3          httpGet:            path: /            port: http            scheme: HTTP          initialDelaySeconds: 10          periodSeconds: 10          successThreshold: 1          timeoutSeconds: 3        livenessProbe:          failureThreshold: 3          httpGet:            path: /            port: http            scheme: HTTP          initialDelaySeconds: 20          periodSeconds: 10          successThreshold: 1          timeoutSeconds: 3        ports:        - containerPort: 80          name: http          protocol: TCP

    上面的readinessProbe和livenessProbe都是应用在运行过程中如何保证其可用,那应用在退出的时候如何保证其安全退出?

    所谓安全退出,也就是能正常处理退出逻辑,能够正常处理退出信号,也就是所谓的优雅退出。

    优雅退出有两种常见的解决方法:

    • 应用本身可以处理SIGTERM信号。

    • 设置一个preStop hook,在hook中指定怎么优雅停止容器

    这里抛开应用本身可以处理SIGTERM信号不谈,默认其能够处理,我们要做的就是协助其能优雅退出。在Kubernetes中,使用preStop hook来协助处理,我们可以将上面的YAML修改成如下:

    apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: nginx  name: nginx-deploymentspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: nginx  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: nginx    spec:      affinity:        podAntiAffinity:          requiredDuringSchedulingIgnoredDuringExecution:          - labelSelector:              matchExpressions:              - key: app                operator: In                values:                - nginx            topologyKey: kubernetes.io/hostname      containers:      - image: nginx:1.8        imagePullPolicy: IfNotPresent        name: nginx        lifecycle:          preStop:            exec:              command:              - /bin/sh              - -c              - sleep 15        resources:          requests:            cpu: 0.5            memory: 500M          limits:            cpu: 0.5            memory: 500M        readinessProbe:          failureThreshold: 3          httpGet:            path: /            port: http            scheme: HTTP          initialDelaySeconds: 10          periodSeconds: 10          successThreshold: 1          timeoutSeconds: 3        livenessProbe:          failureThreshold: 3          httpGet:            path: /            port: http            scheme: HTTP          initialDelaySeconds: 20          periodSeconds: 10          successThreshold: 1          timeoutSeconds: 3        ports:        - containerPort: 80          name: http          protocol: TCP

    当然,这里只是一个样例,实际的配置还需要根据企业情况做跳转,比如企业使用了注册中心如zk或者nacos,我们就需要把服务从注册中心下掉。

    PDB

    上面的那些配置基本可以让应用顺利的在Kubernetes里跑了,但是不可避免有维护节点的需求,比如升级内核,重启服务器等。

    而且也不是所有的应用都可以多副本,当我们使用kubectl drain的时候,为了避免某个或者某些应用直接销毁而不可用,Kubernetes引入了PodDisruptionBudget(PDB)控制器,用来控制集群中Pod的运行个数。

    在PDB中,主要通过两个参数来控制Pod的数量:

    • minAvailable:表示最小可用Pod数,表示在Pod集群中处于运行状态的最小Pod数或者是运行状态的Pod数和总数的百分比;

    • maxUnavailable:表示最大不可用Pod数,表示Pod集群中处于不可用状态的最大Pod数或者不可用状态Pod数和总数的百分比;

    注意:minAvailable和maxUnavailable是互斥了,也就是说两者同一时刻只能出现一种。

    kubectl drain命令已经支持了PodDisruptionBudget控制器,在进行kubectl drain操作时会根据PodDisruptionBudget控制器判断应用POD集群数量,进而保证在业务不中断或业务SLA不降级的情况下进行应用POD销毁。在进行kubectl drain或者Pod主动逃离的时候,Kubernetes会通过以下几种情况来进行判断:

    • minAvailable设置成了数值5:应用POD集群中最少要有5个健康可用的POD,那么就可以进行操作。

    • minAvailable设置成了百分数30%:应用POD集群中最少要有30%的健康可用POD,那么就可以进行操作。

    • maxUnavailable设置成了数值5:应用POD集群中最多只能有5个不可用POD,才能进行操作。

    • maxUnavailable设置成了百分数30%:应用POD集群中最多只能有30%个不可用POD,才能进行操作。

    在极端的情况下,比如将maxUnavailable设置成0,或者设置成100%,那么就表示不能进行kubectl drain操作。同理将minAvailable设置成100%,或者设置成应用POD集群最大副本数,也表示不能进行kubectl drain操作。

    注意:使用PodDisruptionBudget控制器并不能保证任何情况下都对业务POD集群进行约束,PodDisruptionBudget控制器只能保证POD主动逃离的情况下业务不中断或者业务SLA不降级,例如在执行kubectldrain命令时。

    (1)、定义minAvailable

    apiVersion: policy/v1kind: PodDisruptionBudgetmetadata:  name: pdb-demospec:  minAvailable: 2  selector:    matchLabels:      app: nginx

    (2)、定义maxUnavailable

    apiVersion: policy/v1kind: PodDisruptionBudgetmetadata:  name: pdb-demospec:  maxUnavailable: 1  selector:    matchLabels:      app: nginx

    可以看到PDB是通过label selectors和应用Pod建立关联,而后在主动驱逐Pod的时候,会保证app: nginx的Pod最大不可用数为1,假如本身是3副本,至少会保证2副本正常运行。

    到此,相信大家对“Kubernetes应用服务质量管理的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Kubernetes应用服务质量管理的方法是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Kubernetes应用服务质量管理的方法是什么

    本篇内容主要讲解“Kubernetes应用服务质量管理的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes应用服务质量管理的方法是什么”吧!服务质量管理在Kuberne
    2023-07-04

    linux服务器批量管理的方法是什么

    在Linux服务器上进行批量管理的方法有多种,以下是一些常见的方法:使用Shell脚本:编写Shell脚本可以实现批量执行多个命令或操作,可以通过for循环、while循环等结构实现对多台服务器的管理。使用SSH:通过SSH协议可以远程登录
    linux服务器批量管理的方法是什么
    2024-04-09

    Kubernetes集群的跨云部署与管理方法是什么

    Kubernetes集群的跨云部署与管理方法可以采用以下几种方式:使用多云管理平台:可以使用专门的多云管理平台,来统一管理不同云平台上的Kubernetes集群,实现跨云部署和管理。自建跨云集群:可以在不同云平台上分别建立Kubernet
    Kubernetes集群的跨云部署与管理方法是什么
    2024-05-07

    轻量应用服务器购买方法是什么

    轻量应用服务器通常使用Java语言编写,通过Web应用程序或其他Web服务器进行部署和管理。下面介绍一些购买轻量应用服务器时需要考虑的因素。可扩展性选择轻量应用服务器时,您需要考虑如何扩展应用程序的功能。您可以将应用程序拆分成多个子应用程序,并通过轻量应用服务器提供这些子应用程序的功能。例如,您可以创建一个简单的应用程序,其中包含一个简单的数据库,并将数据库连接到轻量应用服务器上,以便轻
    2023-10-26

    什么是轻量应用服务器设置方法

    轻量应用服务器是一种使用云计算平台的应用程序,通常用于构建在云端的应用程序。下面是轻量应用服务器设置的一些方法:数据加载和处理:轻量应用服务器通常使用PostgreSQL或MySQL来加载应用程序数据,这使得它们比传统的应用程序更轻量。轻量应用服务器还可以通过使用CIFS文件系统或Nosql数据库来存储数据。用户界面:轻量应用服务器通常使用Swift或JavaScript语言来构建用户界面
    2023-10-26

    轻量应用服务器购买方法是什么样的

    轻量应用服务器通常使用Java语言编写,具有简单、快速、灵活和易于维护等特点,适合在各种场景下快速部署和处理数据。以下是一些常见的购买轻量应用服务器的方法:自行编写:自行编写的轻量应用服务器可能会更加容易上手,因为它的设计通常更为简单,并且有许多现成的库可用。如果您是初学者,可以选择自行编写的方法,但这可能需要一定的时间和精力。云托管:如果您没有足够的预算和时间来构建自己的轻量应用服务器,
    2023-10-26

    轻量应用服务器购买方法是什么呢

    轻量应用服务器是一种用于开发小型、轻量级应用程序的服务器,通常比传统的大型企业级应用服务器具有更低的成本和更高的效率。以下是购买轻量应用服务器的一般步骤:查看市场上的轻量应用服务器供应商。了解各个品牌的特点和定价。了解产品功能和性能。轻量应用服务器通常具有比传统的大型企业级应用服务器更高的性能和更短的启动时间。查看产品安全性和可用性。轻量应用服务器在设计时考虑了应用程序的安全性和可用性。
    2023-10-26

    什么是轻量应用服务器设置方法呢

    轻量应用服务器设置方法如下:打开Web服务器管理器,如WebLogic.web或Apache-Web.so来进行管理。在Configuration中找到WebSiteManager,然后找到WebSiteManager下的Configuration子菜单中的ConfigurationDelegate来添加或删除WebLogicServer。添加WebSiteManager后,可以看到Co
    2023-10-26

    Python上下文管理器的本质及用法是什么

    今天就跟大家聊聊有关Python上下文管理器的本质及用法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 上下文管理器是什么?举个例子,你在写Python代码的时候经常将一系
    2023-06-17

    android任务管理的方法是什么

    Android的任务管理方法可以通过以下几种方式实现:1. 使用任务管理器:Android系统提供了自带的任务管理器,可以通过长按设备的“Home”键或者使用多任务按钮来打开任务管理器。在任务管理器中,可以查看当前打开的应用程序列表,并可以
    2023-08-18

    云服务器磁盘管理的方法是什么

    云服务器磁盘管理的方法主要包括以下几种:1. 磁盘分区:根据需求将物理磁盘划分为多个逻辑分区,以便更好地管理数据和文件。2. 文件系统:选择适当的文件系统来管理磁盘上的文件和目录,如NTFS、EXT4等。3. 磁盘配额:设置磁盘配额限制每个
    2023-09-27

    轻量应用服务器购买方法是什么意思

    轻量应用服务器通常被认为是专为小型应用程序或轻量级应用程序而设计的服务器。这类应用程序通常不会需要高性能服务器,但它们的体积相对较小,因此非常适合部署在云计算平台上。以下是一些购买轻量应用服务器的方法:直接从供应商处购买这种方法通常被认为是最简单、最便宜的一种购买方式,因为供应商通常会提供各种选项,以满足不同的应用程序和需求。在线购买平台一些在线交易平台,例如Etsy,提供了轻量应用
    2023-10-26

    云服务器磁盘管理的方法是什么

    云服务器磁盘管理方法涉及创建、扩展、挂载和管理虚拟存储卷。通过控制面板或命令行创建磁盘卷,并可通过在线扩展或离线扩展的方式扩展容量。挂载磁盘卷可通过手动或自动方式实现。管理磁盘卷包括格式化、修改文件系统、创建分区和快照等。最佳实践包括使用持久性存储、计划存储需求、创建快照、监控存储使用情况和遵循安全最佳实践。具体方法因云服务提供商而异,操作前请参考提供商文档。
    云服务器磁盘管理的方法是什么
    2024-04-09

    轻量应用服务器带宽调整方法是什么

    轻量应用服务器可以通过在服务器中增加多块物理内存来提高性能。以下是一些常见的方法:增加虚拟内存:轻量应用服务器可以使用额外的物理内存作为虚拟内存,以便存储更多数据。虚拟内存可以使用服务器的CPU或者存储器来创建,例如,可以使用一个较大的内存区域来存储更长的数据,例如64GB的内存。增加服务器IO:轻量应用服务器可以通过增加服务器IO来提高服务器的性能。例如,可以增加服务器内核的IO操作数、
    2023-10-26

    轻量应用服务器性能测试方法是什么

    轻量应用服务器性能测试方法通常是针对具有高负载或高并发访问的系统,如Web应用和数据库系统等。这些系统的性能通常受以下几个因素影响:处理器和内存:轻量应用服务器常常需要处理大量的请求和数据。处理器和内存大小的增加会使系统处理更多的指令,从而影响系统的性能。在这种情况下,可以通过更频繁地运行相同的指令来测试性能。CPU和内存:处理器和内存是轻量应用服务器的关键组成部分。处理器和内存的数量越多
    2023-10-26

    轻量应用服务器端口设置方法是什么

    轻量应用服务器端口设置方法一般是使用默认的端口号。以下是一些常见的端口号设置技巧:Win7/Win8.1默认8080(一般为2345)MacOSX(一般为10.6)Linux(一般为192.168.1)如果你想要更精确的设置,您可以使用Powershell脚本来设置这些端口:```pythonimportpowershell获取默认端口号ifnotxinyourbrowser
    2023-10-26

    轻量应用服务器带宽调整方法是什么样的

    轻量应用服务器(LightApplicationServer)是一种轻量级的应用服务器,用于处理小型网站或应用程序。它们通常采用低端、廉价的X服务器和一些轻量化的处理器,以及一些软件模块来构建。这些服务器可以通过配置或管理软件升级来增加服务器的数量,以满足不断变化的需求。为了轻量应用服务器的带宽调整,一些方法可以包括:自动调整-轻量应用服务器通常有一个内置的应用程序控制台来监控带宽使用情况,
    2023-10-26

    轻量应用服务器性能测试方法是什么样的

    轻量应用服务器性能测试方法通常是利用应用程序的内存使用情况和CPU使用情况进行测试。这些测试将在应用程序服务器上执行,利用应用程序服务器的缓存数据和日志记录进行性能分析,以找出应用程序服务器的性能瓶颈。测试方法的具体步骤包括以下几个方面:定义性能指标:首先需要制定一份性能指标列表,其中包含应用程序服务器内存使用率、CPU使用率、内存使用量等指标。这些指标应该与应用程序服务器的特定要求相匹配。
    2023-10-26

    轻量应用服务器搭建数据库的方法是什么

    轻量应用服务器是一种可以提供较少的数据库负载的服务器,通常用于那些不需要高度复杂的数据库管理系统的轻量应用程序。在构建轻量应用服务器时,您通常会考虑以下几个步骤:选择合适的数据库类型。通常,轻量应用服务器可以选择关系型数据库,如Redis、MySQL或PostgreSQL等。在选择数据库时,您需要考虑您的应用程序需要处理的数据量以及您希望使用哪种类型的数据库。选择合适的操作系统。选择操作系
    2023-10-26

    轻量应用服务器端口设置方法是什么样的

    轻量应用服务器端口设置方法一般是使用Python的PythonURLlib库来实现的,具体如下所示:```importurllibimportosfromos.listdirimportos.path.dirnamefromos.listdirimportos.listdir.deepcopy创建轻量应用服务器对象url="https://www.example.com"urll
    2023-10-26

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录