AppHttpHealthy
English | 简体中文
基本描述
对于这种任务,kdoctor-controller 会根据 agentSpec 生成对应的 agent 等资源,每一个 agent Pod 都会向指定的目标发送 HTTP请求,并获得成功率和平均延迟。它可以指定成功条件来判断结果是否成功。并且,可以通过聚合 API 获取详细的报告。
AppHttpHealthy 示例
apiVersion: kdoctor.io/v1beta1
kind: AppHttpHealthy
metadata:
name: apphttphealth
spec:
agentSpec:
hostNetwork: false
kind: DaemonSet
terminationGracePeriodMinutes: 60
expect:
meanAccessDelayInMs: 1500
successRate: 1
request:
durationInSecond: 10
perRequestTimeoutInMS: 2000
qps: 10
schedule:
roundNumber: 1
roundTimeoutMinute: 1
schedule: 0 1
target:
enableLatencyMetric: false
host: http://www.baidu.com
http2: false
method: GET
status:
doneRound: 1
expectedRound: 1
finish: true
history:
- deadLineTimeStamp: "2023-07-28T09:58:41Z"
duration: 17.272005445s
endTimeStamp: "2023-07-28T09:57:58Z"
expectedActorNumber: 2
failedAgentNodeList: []
notReportAgentNodeList: []
roundNumber: 1
startTimeStamp: "2023-07-28T09:57:41Z"
status: succeed
succeedAgentNodeList:
- kdoctor-worker
- kdoctor-control-plane
lastRoundStatus: succeed
AppHttpHealthy 定义
字段 |
描述 |
结构 |
验证 |
name |
AppHttpHealthy 资源的名称 |
string |
必填 |
Spec
AgentSpec
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
annotation |
agent 工作负载的 annotation |
map[string]string |
可选 |
|
|
kind |
agent 工作负载的类型 |
string |
可选 |
Deployment、DaemonSet |
DaemonSet |
deploymentReplicas |
agent 工作负载类型为 deployment 时的期望副本数 |
int |
可选 |
大于等于 0 |
0 |
affinity |
agent 工作负载亲和性 |
labelSelector |
可选 |
|
|
env |
agent 工作负载环境变量 |
env |
可选 |
|
|
hostNetwork |
agent 工作负载是否使用宿主机网络 |
bool |
可选 |
true、false |
false |
resources |
agent 工作负载资源使用配置 |
resources |
可选 |
|
limit cpu:1000m,memory:1024Mi |
terminationGracePeriodMinutes |
agent 工作负载完成任务后多少分钟之后终止 |
int |
可选 |
大于等于 0 |
60 |
Schedule
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
roundNumber |
任务执行轮数 |
int |
可选 |
大于等于-1,为 -1 时表示永久执行,大于 0 表示将要执行的轮数 |
1 |
schedule |
任务执行时间, 执行时间应小于roundTimeoutMinute |
string |
可选 |
支持 linux crontab 与间隔法两种写法 linux crontab : /1 ** * 表示每分钟执行一次 间隔法:书写格式为 “M N” ,M取值为一个数字,表示多少分钟之后开启任务,N取值为一个数字,表示每一轮任务的间隔多少分钟执行,例如 “0 1” 表示立即开始任务,每轮任务间隔1min |
"0 1" |
roundTimeoutMinute |
任务超时时间,需要大于 durationInSecond 和 任务执行时间 |
int |
可选 |
大于等于 1 |
60 |
Request
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
durationInSecond |
每轮任务的请求发压的持续时间,小于roundTimeoutMinute |
int |
可选 |
大于等于 1 |
2 |
perRequestTimeoutInMS |
每个请求的超时时间,不可大于 durationInSecond |
int |
可选 |
大于等于 1 |
500 |
qps |
每一个 agent 每秒请求数量 |
int |
可选 |
大于等于 1 |
5 |
使用 agent 请求时,所有的 agent 都会向目标地址进行请求,因此实际 server 接收的 QPS 等于 agent 数量 * 设置的 QPS。
Target
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
host |
HTTP 请求地址 |
string |
必填 |
|
|
method |
HTTP 请求方法 |
string |
必填 |
GET、POST、PUT、DELETE、CONNECT、OPTIONS、PATCH、HEAD |
|
bodyConfigmapName |
HTTP 请求 body 存放的 configmap 名称,configmap 内容参考,若不需要 body 请求,忽略此字段 |
string |
可选 |
|
|
bodyConfigmapNamespace |
HTTP 请求 body 的 configmap 命名空间,如果 bodyConfigmapName 不为空,需要设置此字段 |
string |
可选 |
|
|
tlsSecretName |
HTTPs 请求证书存放的 secret 名称,secret类型为 kubernetes.io/tls,secret 内容参考,若使用协议非 https 忽略此字段 |
string |
可选 |
|
|
tlsSecretNamespace |
HTTPs 请求证书存放的 secret 命名空间,如果 tlsSecretName 字段不为空,需要设置此字段 |
string |
可选 |
|
|
header |
HTTP 请求头,数组形式,示例为 "Content-Type: application/json" |
元素为字符串的数组 |
可选 |
|
|
HTTP2 |
使用 HTTP2 协议进行请求开关 |
bool |
可选 |
true,false |
false |
enableLatencyMetric |
统计演示分布,开启后会增加内存使用量 |
bool |
可选 |
true,false |
false |
Expect
任务成功条件,若任务结果没有达到期望条件,任务失败
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
meanAccessDelayInMs |
平均延时,如果最终的结果 超过本值,任务会判定为失败 |
int |
可选 |
大于等于 1 |
5000 |
successRate |
HTTP 请求成功率,如果最终的结果 小于本值,任务会判定为失败 |
float |
可选 |
0-1 |
1 |
statusCode |
期待的 HTTP 返回状态码,如果最终的结果不等于本值,任务会判定为失败 |
int |
可选 |
0-600 |
200 |
Body
携带 body 请求,body 写法示例
apiVersion: v1
kind: ConfigMap
metadata:
name: kdoctor-test-body-5656-89207258
namespace: kdoctor
data:
test1: test1
test2: test2
TLS
HTTPs 请求使用证书时,若不填写 CA 证书则不对证书安全进行校验,HTTPs 请求证书示例。
apiVersion: v1
data:
ca.crt: xxxxxxxxxbase64
tls.crt: xxxxxxxxxbase64
tls.key: xxxxxxxxxbase64
kind: Secret
metadata:
name: kdoctor-client-cert
namespace: kdoctor
type: kubernetes.io/tls
Status
字段 |
描述 |
结构 |
取值 |
doneRound |
完成的任务轮数 |
int |
|
expectedRound |
期望执行的轮数 |
int |
|
finish |
任务是否完成 |
bool |
true、false |
lastRoundStatus |
最后一轮任务状态 |
string |
notstarted、ongoing、succeed、fail |
history |
任务历史 |
元素为history的数组 |
|
History
字段 |
描述 |
结构 |
取值 |
roundNumber |
任务轮数 |
int |
|
status |
任务状态 |
string |
notstarted、ongoing、succeed、fail |
startTimeStamp |
本轮任务开始时间 |
string |
|
endTimeStamp |
本轮任务结束时间 |
string |
|
duration |
本轮任务执行时间 |
string |
|
deadLineTimeStamp |
本轮任务 deadline |
string |
|
failedAgentNodeList |
任务失败的 agent |
元素为 string 的数组 |
|
succeedAgentNodeList |
任务成功的 agent |
元素为 string 的数组 |
|
notReportAgentNodeList |
没有上传任务报告的 agent |
元素为 string 的数组 |
|