Flagger on ASM——基于Mixerless Telemetry实现渐进式灰度发布系列 3 渐进式灰度发布

简介: 作为CNCF[成员](https://landscape.cncf.io/card-mode?category=continuous-integration-delivery&grouping=category&selected=weave-flagger),[Weave Flagger](flagger.app)提供了持续集成和持续交付的各项能力。Flagger将渐进式发布总结为3类: - **灰度发布/金丝雀发布(Canary)**:用于渐进式切流到灰度版本(progressive traffic shifting) - **A/B测试(A/B Testing)**:用于根据请求信息将

作为CNCF成员,Weave Flagger提供了持续集成和持续交付的各项能力。Flagger将渐进式发布总结为3类:

  • 灰度发布/金丝雀发布(Canary):用于渐进式切流到灰度版本(progressive traffic shifting)
  • A/B测试(A/B Testing):用于根据请求信息将用户请求路由到A/B版本(HTTP headers and cookies traffic routing)
  • 蓝绿发布(Blue/Green):用于流量切换和流量复制 (traffic switching and mirroring)

本篇将介绍Flagger on ASM的渐进式灰度发布实践。

Setup Flagger

1 部署Flagger

执行如下命令部署flagger(完整脚本参见:demo_canary.sh)。

alias k="kubectl --kubeconfig $USER_CONFIG"
alias h="helm --kubeconfig $USER_CONFIG"cp $MESH_CONFIG kubeconfig
k -n istio-system create secret generic istio-kubeconfig --from-file kubeconfig
k -n istio-system label secret istio-kubeconfig istio/multiCluster=trueh repo add flagger https://flagger.app
h repo update
k apply -f $FLAAGER_SRC/artifacts/flagger/crd.yaml
h upgrade -i flagger flagger/flagger --namespace=istio-system \--set crd.create=false \--set meshProvider=istio \--set metricsServer=http://prometheus:9090 \--set istio.kubeconfig.secretName=istio-kubeconfig \--set istio.kubeconfig.key=kubeconfig

2 部署Gateway

在灰度发布过程中,Flagger会请求ASM更新用于灰度流量配置的VirtualService,这个VirtualService会使用到命名为public-gateway的Gateway。为此我们创建相关Gateway配置文件public-gateway.yaml如下:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: public-gatewaynamespace: istio-system
spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- "*"

执行如下命令部署Gateway:

kubectl --kubeconfig "$MESH_CONFIG" apply -f resources_canary/public-gateway.yaml

3 部署flagger-loadtester

flagger-loadtester是灰度发布阶段,用于探测灰度POD实例的应用。

执行如下命令部署flagger-loadtester:

kubectl --kubeconfig "$USER_CONFIG" apply -k "https://github.com/fluxcd/flagger//kustomize/tester?ref=main"

4 部署PodInfo及其HPA

我们首先使用Flagger发行版自带的HPA配置(这是一个运维级的HPA),待完成完整流程后,我们再使用应用级的HPA。

执行如下命令部署PodInfo及其HPA:

kubectl --kubeconfig "$USER_CONFIG" apply -k "https://github.com/fluxcd/flagger//kustomize/podinfo?ref=main"

渐进式灰度发布

1 部署Canary

Canary是基于Flagger进行灰度发布的核心CRD,详见How it works。我们首先部署如下Canary配置文件podinfo-canary.yaml,完成完整的渐进式灰度流程,然后在此基础上引入应用维度的监控指标,来进一步实现应用有感知的渐进式灰度发布

apiVersion: flagger.app/v1beta1
kind: Canary
metadata:name: podinfonamespace: test
spec:# deployment referencetargetRef:apiVersion: apps/v1kind: Deploymentname: podinfo# the maximum time in seconds for the canary deployment# to make progress before it is rollback (default 600s)progressDeadlineSeconds: 60# HPA reference (optional)autoscalerRef:apiVersion: autoscaling/v2beta2kind: HorizontalPodAutoscalername: podinfoservice:# service port numberport: 9898# container port number or name (optional)targetPort: 9898# Istio gateways (optional)gateways:- public-gateway.istio-system.svc.cluster.local# Istio virtual service host names (optional)hosts:- '*'# Istio traffic policy (optional)trafficPolicy:tls:# use ISTIO_MUTUAL when mTLS is enabledmode: DISABLE# Istio retry policy (optional)retries:attempts: 3perTryTimeout: 1sretryOn: "gateway-error,connect-failure,refused-stream"analysis:# schedule interval (default 60s)interval: 1m# max number of failed metric checks before rollbackthreshold: 5# max traffic percentage routed to canary# percentage (0-100)maxWeight: 50# canary increment step# percentage (0-100)stepWeight: 10metrics:- name: request-success-rate# minimum req success rate (non 5xx responses)# percentage (0-100)thresholdRange:min: 99interval: 1m- name: request-duration# maximum req duration P99# millisecondsthresholdRange:max: 500interval: 30s# testing (optional)webhooks:- name: acceptance-testtype: pre-rollouturl: http://flagger-loadtester.test/timeout: 30smetadata:type: bashcmd: "curl -sd 'test' http://podinfo-canary:9898/token | grep token"- name: load-testurl: http://flagger-loadtester.test/timeout: 5smetadata:cmd: "hey -z 1m -q 10 -c 2 http://podinfo-canary.test:9898/"

执行如下命令部署Canary:

kubectl --kubeconfig "$USER_CONFIG" apply -f resources_canary/podinfo-canary.yaml

部署Canary后,Flagger会将名为podinfo的Deployment复制为podinfo-primary,并将podinfo-primary扩容至HPA定义的最小POD数量。然后逐步将名为podinfo的这个Deployment的POD数量将缩容至0。也就是说,podinfo将作为灰度版本的Deploymentpodinfo-primary将作为生产版本的Deployment

同时,创建3个服务——podinfopodinfo-primarypodinfo-canary,前两者指向podinfo-primary这个Deployment,最后者指向podinfo这个Deployment。

2 升级podinfo

执行如下命令,将灰度Deployment的版本从3.1.0升级到3.1.1

kubectl --kubeconfig "$USER_CONFIG" -n test set image deployment/podinfo podinfod=stefanprodan/podinfo:3.1.1

3 渐进式灰度发布

此时,Flagger将开始执行如本系列第一篇所述的渐进式灰度发布流程,这里再简述主要流程如下:

  1. 逐步扩容灰度POD、验证
  2. 渐进式切流、验证
  3. 滚动升级生产Deployment、验证
  4. 100%切回生产
  5. 缩容灰度POD至0

我们可以通过如下命令观察这个渐进式切流的过程:

while true; do kubectl --kubeconfig "$USER_CONFIG" -n test describe canary/podinfo; sleep 10s;done

输出的日志信息示意如下:

Events:Type     Reason  Age                From     Message----     ------  ----               ----     -------Warning  Synced  39m                flagger  podinfo-primary.test not ready: waiting for rollout to finish: observed deployment generation less then desired generationNormal   Synced  38m (x2 over 39m)  flagger  all the metrics providers are available!Normal   Synced  38m                flagger  Initialization done! podinfo.testNormal   Synced  37m                flagger  New revision detected! Scaling up podinfo.testNormal   Synced  36m                flagger  Starting canary analysis for podinfo.testNormal   Synced  36m                flagger  Pre-rollout check acceptance-test passedNormal   Synced  36m                flagger  Advance podinfo.test canary weight 10Normal   Synced  35m                flagger  Advance podinfo.test canary weight 20Normal   Synced  34m                flagger  Advance podinfo.test canary weight 30Normal   Synced  33m                flagger  Advance podinfo.test canary weight 40Normal   Synced  29m (x4 over 32m)  flagger  (combined from similar events): Promotion completed! Scaling down podinfo.test

相应的Kiali视图(可选),如下图所示:

kiali.png

到此,我们完成了一个完整的渐进式灰度发布流程。如下是扩展阅读。

灰度中的应用级扩缩容

在完成上述渐进式灰度发布流程的基础上,我们接下来再来看上述Canary配置中,关于HPA的配置。

  autoscalerRef:apiVersion: autoscaling/v2beta2kind: HorizontalPodAutoscalername: podinfo

这个名为podinfo的HPA是Flagger自带的配置,当灰度Deployment的CPU利用率达到99%时扩容。完整配置如下:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:name: podinfo
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: podinfominReplicas: 2maxReplicas: 4metrics:- type: Resourceresource:name: cputarget:type: Utilization# scale up if usage is above# 99% of the requested CPU (100m)averageUtilization: 99

我们在前面一篇中讲述了应用级扩缩容的实践,在此,我们将其应用于灰度发布的过程中。

1 感知应用QPS的HPA

执行如下命令部署感知应用请求数量的HPA,实现在QPS达到10时进行扩容(完整脚本参见:advanced_canary.sh):

kubectl --kubeconfig "$USER_CONFIG" apply -f resources_hpa/requests_total_hpa.yaml

相应地,Canary配置更新为:

  autoscalerRef:apiVersion: autoscaling/v2beta2kind: HorizontalPodAutoscalername: podinfo-total

2 升级podinfo

执行如下命令,将灰度Deployment的版本从3.1.0升级到3.1.1

kubectl --kubeconfig "$USER_CONFIG" -n test set image deployment/podinfo podinfod=stefanprodan/podinfo:3.1.1

3 验证渐进式灰度发布及HPA

命令观察这个渐进式切流的过程:

while true; do k -n test describe canary/podinfo; sleep 10s;done

在渐进式灰度发布过程中(在出现Advance podinfo.test canary weight 10信息后,见下图),我们使用如下命令,从入口网关发起请求以增加QPS:

INGRESS_GATEWAY=$(kubectl --kubeconfig $USER_CONFIG -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
hey -z 20m -c 2 -q 10 http://$INGRESS_GATEWAY

使用如下命令观察渐进式灰度发布进度:

watch kubectl --kubeconfig $USER_CONFIG get canaries --all-namespaces

使用如下命令观察hpa的副本数变化:

watch kubectl --kubeconfig $USER_CONFIG -n test get hpa/podinfo-total

结果如下图所示,在渐进式灰度发布过程中,当切流到30%的某一时刻,灰度Deployment的副本数为4:

hpa-canary.png

灰度中的应用级监控指标

在完成上述灰度中的应用级扩缩容的基础上,最后我们再来看上述Canary配置中,关于metrics的配置:

  analysis:metrics:- name: request-success-rate# minimum req success rate (non 5xx responses)# percentage (0-100)thresholdRange:min: 99interval: 1m- name: request-duration# maximum req duration P99# millisecondsthresholdRange:max: 500interval: 30s# testing (optional)

1 Flagger内置监控指标

到目前为止,Canary中使用的metrics配置一直是Flagger的两个内置监控指标:请求成功率(request-success-rate)和请求延迟(request-duration)。如下图所示,Flagger中不同平台对内置监控指标的定义,其中,istio使用的是本系列第一篇介绍的Mixerless Telemetry相关的遥测数据。

image.png

2 自定义监控指标

为了展示灰度发布过程中,遥测数据为验证灰度环境带来的更多灵活性,我们再次以istio_requests_total为例,创建一个名为not-found-percentage的MetricTemplate,统计请求返回404错误码的数量占请求总数的比例

配置文件metrics-404.yaml如下(完整脚本参见:advanced_canary.sh):

apiVersion: flagger.app/v1beta1
kind: MetricTemplate
metadata:name: not-found-percentagenamespace: istio-system
spec:provider:type: prometheusaddress: http://prometheus.istio-system:9090query: |100 - sum(rate(istio_requests_total{reporter="destination",destination_workload_namespace="{{ namespace }}",destination_workload="{{ target }}",response_code!="404"}[{{ interval }}]))/sum(rate(istio_requests_total{reporter="destination",destination_workload_namespace="{{ namespace }}",destination_workload="{{ target }}"}[{{ interval }}])) * 100

执行如下命令创建上述MetricTemplate:

k apply -f resources_canary2/metrics-404.yaml

相应地,Canary中metrics的配置更新为:

  analysis:metrics:- name: "404s percentage"templateRef:name: not-found-percentagenamespace: istio-systemthresholdRange:max: 5interval: 1m

3 最后的验证

最后,我们一次执行完整的实验脚本。脚本advanced_canary.sh示意如下:

#!/usr/bin/env sh
SCRIPT_PATH="$(cd "$(dirname "$0")" >/dev/null 2>&1pwd -P
)/"
cd "$SCRIPT_PATH" || exitsource config
alias k="kubectl --kubeconfig $USER_CONFIG"
alias m="kubectl --kubeconfig $MESH_CONFIG"
alias h="helm --kubeconfig $USER_CONFIG"echo "#### I Bootstrap ####"
echo "1 Create a test namespace with Istio sidecar injection enabled:"
k delete ns test
m delete ns test
k create ns test
m create ns test
m label namespace test istio-injection=enabledecho "2 Create a deployment and a horizontal pod autoscaler:"
k apply -f $FLAAGER_SRC/kustomize/podinfo/deployment.yaml -n test
k apply -f resources_hpa/requests_total_hpa.yaml
k get hpa -n testecho "3 Deploy the load testing service to generate traffic during the canary analysis:"
k apply -k "https://github.com/fluxcd/flagger//kustomize/tester?ref=main"k get pod,svc -n test
echo "......"
sleep 40secho "4 Create a canary custom resource:"
k apply -f resources_canary2/metrics-404.yaml
k apply -f resources_canary2/podinfo-canary.yamlk get pod,svc -n test
echo "......"
sleep 120secho "#### III Automated canary promotion ####"echo "1 Trigger a canary deployment by updating the container image:"
k -n test set image deployment/podinfo podinfod=stefanprodan/podinfo:3.1.1echo "2 Flagger detects that the deployment revision changed and starts a new rollout:"while true; do k -n test describe canary/podinfo; sleep 10s;done

使用如下命令执行完整的实验脚本:

sh progressive_delivery/advanced_canary.sh

实验结果示意如下:


#### I Bootstrap ####
1 Create a test namespace with Istio sidecar injection enabled:
namespace "test" deleted
namespace "test" deleted
namespace/test created
namespace/test created
namespace/test labeled
2 Create a deployment and a horizontal pod autoscaler:
deployment.apps/podinfo created
horizontalpodautoscaler.autoscaling/podinfo-total created
NAME            REFERENCE            TARGETS              MINPODS   MAXPODS   REPLICAS   AGE
podinfo-total   Deployment/podinfo   <unknown>/10 (avg)   1         5         0          0s
3 Deploy the load testing service to generate traffic during the canary analysis:
service/flagger-loadtester created
deployment.apps/flagger-loadtester created
NAME                                      READY   STATUS     RESTARTS   AGE
pod/flagger-loadtester-76798b5f4c-ftlbn   0/2     Init:0/1   0          1s
pod/podinfo-689f645b78-65n9d              1/1     Running    0          28sNAME                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/flagger-loadtester   ClusterIP   172.21.15.223   <none>        80/TCP    1s
......
4 Create a canary custom resource:
metrictemplate.flagger.app/not-found-percentage created
canary.flagger.app/podinfo created
NAME                                      READY   STATUS    RESTARTS   AGE
pod/flagger-loadtester-76798b5f4c-ftlbn   2/2     Running   0          41s
pod/podinfo-689f645b78-65n9d              1/1     Running   0          68sNAME                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/flagger-loadtester   ClusterIP   172.21.15.223   <none>        80/TCP    41s
......
#### III Automated canary promotion ####
1 Trigger a canary deployment by updating the container image:
deployment.apps/podinfo image updated
2 Flagger detects that the deployment revision changed and starts a new rollout:Events:Type     Reason  Age                  From     Message----     ------  ----                 ----     -------Warning  Synced  10m                  flagger  podinfo-primary.test not ready: waiting for rollout to finish: observed deployment generation less then desired generationNormal   Synced  9m23s (x2 over 10m)  flagger  all the metrics providers are available!Normal   Synced  9m23s                flagger  Initialization done! podinfo.testNormal   Synced  8m23s                flagger  New revision detected! Scaling up podinfo.testNormal   Synced  7m23s                flagger  Starting canary analysis for podinfo.testNormal   Synced  7m23s                flagger  Pre-rollout check acceptance-test passedNormal   Synced  7m23s                flagger  Advance podinfo.test canary weight 10Normal   Synced  6m23s                flagger  Advance podinfo.test canary weight 20Normal   Synced  5m23s                flagger  Advance podinfo.test canary weight 30Normal   Synced  4m23s                flagger  Advance podinfo.test canary weight 40Normal   Synced  23s (x4 over 3m23s)  flagger  (combined from similar events): Promotion completed! Scaling down podinfo.test

原文链接

本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

react 使用 leaflet 百度地图_【React】react项目中应用百度地图添加起始点绘制路线...

如图&#xff1a;项目中百度地图的应用添加起始点、终点并绘制路线在展示代码的时候首先展示一下后台返回给我的接口{其中position_list参数代表的是用户的行驶点&#xff0c; area参数代表的是服务区的坐标点&#xff0c;下面会用到参数下面开始展示代码了index.html引入百度地…

基线长度中误差的计算_电子战支援实施中的测向技术

派遣一个机载电子战机组执行支援压制敌防空系统任务&#xff0c;在任务计划阶段&#xff0c;全体人员将会获取任务区域内的EOB&#xff0c;机载电子战人员会优先识别他们在任务期间可能会遇到的威胁辐射源&#xff0c;以及其他中立、友好辐射源。当机载电子战人员进入目标作战区…

洞察设计模式的底层逻辑

简介&#xff1a; 设计模式是开发同学经常聊到的话题&#xff0c;也经常被用到实际的开发项目中&#xff0c;熟练的人可以做到信手拈来&#xff0c;不熟悉的人陷入苦思冥想中。笔者认为&#xff0c;不仅仅要掌握设计模式的用法&#xff0c;更要洞察设计模式的底层逻辑&#xff…

pta段错误是什么意思_用Python执行Django数据迁移时报!(1091错误及解决方法)...

前言&#xff1a;今天为大家带来的内容是用Python执行Django数据迁移时报!(1091错误及解决方法)本文内容具有不错的参考意义&#xff0c;希望在此能够帮助到大家&#xff01;前几天在Pycharm 中的Terminal下&#xff0c;执行数据迁移操作时&#xff1a;第一步&#xff1a; Pyth…

cad大理石填充图案_CAD制图初学入门者必须知道的CAD填充问题

在使用浩辰CAD软件绘制图纸的过程中&#xff0c;经常会用到CAD填充功能。但是CAD制图初学入门者在进行CAD填充时偶尔会遇到一些问题&#xff0c;比如在自己的CAD软件中填充是完整的&#xff0c;但是在别人的CAD软件中打开却出现了缺口&#xff0c;这是什么原因呢&#xff1f;接…

苹果:iOS 比 Android 更安全!

整理 | 祝涛 出品 | CSDN据报道&#xff0c;在答复欧盟委员会数字市场行动的函件中&#xff0c;苹果援引诺基亚2019年、2020年的威胁情况报告称&#xff0c;安卓平台恶意软件的数量是iPhone的15~47倍。苹果称iOS比安卓安全就在于无法绕过商店安装软件&#xff0c;因此坚决…

日志服务SLS 助力识货 APP,解决业务数据采集查询监控问题

简介&#xff1a; 日志服务SLS 助力识货 APP&#xff0c;解决业务数据采集查询监控问题 更多存储标杆案例 欢迎点击下方链接查看 阿里云存储标杆案例样板间 公司介绍 识货APP是虎扑体育旗下的导购应用&#xff0c;致力于为广大年轻用户提供专业的网购决策指导&#xff0c;为…

html5 烟雾,jQuery烟雾背景发生器(HTML5 Canvas插件waterpipe.js

插件描述&#xff1a;waterpipe.js是一个创建烟雾弥漫的背景,有多种效果可选择&#xff0c;自定义参数效果还是挺酷的哦&#xff01;使用方法1、包括jQuery和waterpipe.js2、创建画布元素内包装Your browser does not support HTML5 canvas.3、创建画布元素内包装var smokyBG …

数据仓库分层存储技术揭秘

简介&#xff1a; 本文介绍数据仓库产品作为企业中数据存储和管理的基础设施&#xff0c;在通过分层存储技术来降低企业存储成本时的关键问题和核心技术。 作者 | 沄浩、士远 来源 | 阿里技术公众号 一 背景 据IDC发布的《数据时代2025》报告显示&#xff0c;全球每年产生的数…

cups支持的打印机列表_网络存储让你的打印机瞬间变无线,打印文件不用愁

无论是公司的文件、合同还是学校的教材作业总有需要打印的而且还需要满足手机、电脑等设备的无线打印不然文件来回拷贝实在是太麻烦了只要打印机搭配群晖NAS旧打印机也能上岗再就业轻松实现无线打印&#xff01;话不多说&#xff0c;这就开始教大家如何使用&#xff01;先确认一…

python同时输出多个值_怎样在python中输出多个数组元素?

展开全部 如果2113要输出多个列表元素&#xff0c;实际上是列表的分片5261或者说是切片。 以下代码运4102行通过&#xff1a;12list [a, b, mpilgrim, z, example]print(\n, list[0:3]) 运行效1653果&#xff1a;1.python输出一维矩阵或numpy数组中的非0元素 import numpy as …

网游云上网络优化方案

简介&#xff1a; 网游云上网络优化方案1. 游戏行业背景 1.1 行业概况 2019全球数字游戏营收1094亿美元&#xff0c;其中中国市场328亿美元。国内游戏⽤户数6.5亿&#xff1b;移动端 (60%)>PC端>主机。移动游戏占⽐逐年增⻓已成为绝对的主流。国内公司近3万&#xff0c;近…

云栖大会展出两款一体机,搭载新一代无影融合架构

10月18日云栖大会开放日上&#xff0c;阿里云基于新一代无影架构的两款一体机已对观众展出。两款新品分为23.8寸标准版和27寸Pro版&#xff0c;Pro版为手绘场景配有触控屏和触控笔&#xff0c;官方介绍为首款设计师云电脑。 在云栖大会展区&#xff0c;观众已经可以对一体机进…

ansys如何删除线_绘画新手不懂如何用ps提取线稿?教你用PS提取自己喜欢的线稿!...

绘画新手不懂如何用ps提取线稿&#xff1f;初学者如何自学绘画&#xff1f;自学板画难吗&#xff1f;怎样才能学习好绘画&#xff1f;想必这些都是绘画初学者们经常在想的问题吧&#xff0c;就是不知道如何才能学习好绘画&#xff0c;然后绘画出自己想要画的东西那么今天灵猫课…

Service Mesh 从“趋势”走向“无聊”

简介&#xff1a; 过去一年&#xff0c;阿里巴巴在 Service Mesh 的探索道路上依旧扎实前行&#xff0c;这种坚定并非只因坚信 Service Mesh 未来一定是云计算基础技术的关键组成部分&#xff0c;还因需要借这一技术趋势去偿还过去所积累下来的技术债&#xff08;“技术债”并非…

python增加一列数据_python数据怎么添加列?

python在DataFrame数据中添加列的方法&#xff1a; 1、使用concat方法在数据中添加列 concat方法相当于数据库中的全连接&#xff08;union all&#xff09;&#xff0c;它不仅可以指定连接的方式&#xff08;outer join或inner join&#xff09;还可以指定按照某个轴进行连接。…

开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?

简介&#xff1a; Dapr 是 2019 年 10 月微软开源的可移植、事件驱动分布式运行时&#xff0c;它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的无状态和有状态的应用程序&#xff0c;从而降低基于微服务架构构建现代云原生应用的准入门槛。 作者 | 敖小剑 来源…

cron 每年执行一次_crontab服务执行定时脚本,在指定时间内让php执行处理业务逻辑...

技小白 2019-12-19 11:45:33crontab-e编辑某个用户的cron服务设置执行脚本crontab-l列出某个用户cron服务列表信息crontab-r删除某个用户的cron服务定时任务crontab格式分小时日月星期命令******0-590-231-311-120-6command注&#xff1a;“*”代表取值范围内的数字“/”代表每…

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

简介&#xff1a; 弹性伸缩作为 Kubernetes 的核心能力之一&#xff0c;但它一直是围绕这无状态的应用负载展开。而 Fluid 提供了分布式缓存的弹性伸缩能力&#xff0c;可以灵活扩充和收缩数据缓存。 它基于 Runtime 提供了缓存空间、现有缓存比例等性能指标, 结合自身对于 Run…

ff14注册完服务器可以转,FF14怎么转服 FF14转服条件一览-游侠网

你知道FF14怎么转服吗&#xff1f;如果想要换服务器&#xff0c;都有哪些特别的要求呢&#xff1f;下面为大家带来的是FF14转服条件一览&#xff0c;大家一起来了解一下吧。转服条件一览跨区角色转移试行规则1、本次仅开放陆行鸟区转向莫古力区指定服务器功能。我们将在莫古力区…