NetReach
English | 简体中文
基本描述
对于这种任务,kdoctor-controller 会根据 agentSpec 生成对应的 agent 等资源,每一个 agent Pod 都会相互发送 http 请求,请求地址为每一个 agent 的 Pod IP、service IP、ingress IP 等等,并获得成功率和平均延迟。它可以指定成功条件来判断结果是否成功。并且,可以通过聚合API获取详细的报告。
NetReach 示例
apiVersion: kdoctor.io/v1beta1
kind: NetReach
metadata:
name: netreach
spec:
agentSpec:
hostNetwork: false
kind: DaemonSet
terminationGracePeriodMinutes: 60
expect:
meanAccessDelayInMs: 1500
successRate: 1
request:
durationInSecond: 10
perRequestTimeoutInMS: 1000
qps: 10
schedule:
roundNumber: 1
roundTimeoutMinute: 1
schedule: 0 1
target:
clusterIP: true
enableLatencyMetric: false
endpoint: true
ingress: true
ipv4: true
ipv6: true
loadBalancer: true
multusInterface: false
nodePort: true
status:
doneRound: 1
expectedRound: 1
finish: true
history:
- deadLineTimeStamp: "2023-07-28T09:59:12Z"
duration: 15.462579243s
endTimeStamp: "2023-07-28T09:58:27Z"
expectedActorNumber: 2
failedAgentNodeList:
- kdoctor-worker
- kdoctor-control-plane
failureReason: some agents failed
notReportAgentNodeList: []
roundNumber: 1
startTimeStamp: "2023-07-28T09:58:12Z"
status: fail
succeedAgentNodeList: []
lastRoundStatus: fail
NetReach 定义
字段 |
描述 |
结构 |
验证 |
name |
NetReach 资源的名称 |
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
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
clusterIP |
测试集群 service cluster IP |
bool |
可选 |
true,false |
true |
endpoint |
测试集群 Pod endpoint |
bool |
可选 |
true,false |
true |
multusInterface |
测试集群 Pod multus 多网卡 IP |
bool |
可选 |
true,false |
false |
IPv4 |
测试 IPv4 |
bool |
可选 |
true,false |
true |
IPv6 |
测试 IPv6 |
bool |
可选 |
true,false |
false |
ingress |
测试 ingress 地址 |
bool |
可选 |
true,false |
false |
nodePort |
测试 service node port |
bool |
可选 |
true,false |
true |
enableLatencyMetric |
统计演示分布,开启后会增加内存使用量 |
bool |
可选 |
true,false |
false |
Expect
任务成功条件,若任务结果没有达到期望条件,任务失败
字段 |
描述 |
结构 |
验证 |
取值 |
默认值 |
meanAccessDelayInMs |
平均延时,如果最终的结果 超过本值,任务会判定为失败 |
int |
可选 |
大于等于 1 |
5000 |
successRate |
http请求成功率,如果最终的结果 小于本值,任务会判定为失败 |
float |
可选 |
0-1 |
1 |
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的数组 |
|