blade create k8s container-container

介绍

Kubernetes 下 container 资源自身的场景,比如删容器,需要注意,执行容器场景,必须先确定 Pod,所以需要配置 Pod 相关参数

命令

支持场景命令如下
    blade create k8s container-container remove 删除容器

参数

1
--container-ids string 容器ID,支持配置多个
2
--container-names string 容器名称,支持配置多个
3
--docker-endpoint string Docker server 地址,默认为本地的 /var/run/docker.sock
4
--namespace string Pod 所属的命名空间,只能填写一个值,必填项
5
--evict-count string 限制实验生效的数量
6
--evict-percent string 限制实验生效数量的百分比,不包含 %
7
--labels string Pod 资源标签,多个标签之前是或的关系
8
--names string Pod 资源名
9
--kubeconfig string kubeconfig 文件全路径(仅限使用 blade 命令调用时使用)
10
--waiting-time string 实验结果等待时间,默认为 20s,参数值要包含单位,例如 10s,1m
11
--force 是否强制删除
Copied!

案例

删除 default 命名空间下,Pod 名为 frontend-d89756ff7-szblb 下的 container id 是 072aa6bbf2e2e2 的容器
yaml 配置方式
1
apiVersion: chaosblade.io/v1alpha1
2
kind: ChaosBlade
3
metadata:
4
name: remove-container-by-id
5
spec:
6
experiments:
7
- scope: container
8
target: container
9
action: remove
10
desc: "remove container by id"
11
matchers:
12
- name: container-ids
13
value: ["072aa6bbf2e2e2"]
14
# pod name
15
- name: names
16
value: ["frontend-d89756ff7-szblb"]
17
- name: namespace
18
value: ["default"]
Copied!
保存为 yaml 文件,比如 remove_container_by_id.yaml,使用 kubectl 命令执行:
1
kubectl apply -f remove_container_by_id.yaml
Copied!
实验状态查询:
1
kubectl get blade remove-container-by-id -o json
Copied!
返回结果如下(省略了一部分):
1
{
2
"apiVersion": "v1",
3
"items": [
4
{
5
"apiVersion": "chaosblade.io/v1alpha1",
6
"kind": "ChaosBlade",
7
"metadata": {
8
"finalizers": [
9
"finalizer.chaosblade.io"
10
],
11
"generation": 1,
12
"name": "remove-container-by-id",
13
"resourceVersion": "9429224",
14
"selfLink": "/apis/chaosblade.io/v1alpha1/chaosblades/remove-container-by-id",
15
"uid": "bb1482ea-ff76-11e9-8883-00163e0ad0b3"
16
},
17
"status": {
18
"expStatuses": [
19
{
20
"action": "remove",
21
"resStatuses": [
22
{
23
"id": "f5bfa325da504cac",
24
"kind": "container",
25
"name": "php-redis",
26
"nodeName": "cn-hangzhou.192.168.0.205",
27
"state": "Success",
28
"success": true,
29
"uid": "072aa6bbf2e2e286ec77b4b05440107b48aeebae6aea06e8e3a65b40e4f40326"
30
}
31
],
32
"scope": "container",
33
"state": "Success",
34
"success": true,
35
"target": "container"
36
}
37
],
38
"phase": "Running"
39
}
40
}
41
],
42
}
Copied!
执行前后,可以看到 Pod 内容器的变化:
执行以下命令停止实验:
1
kubectl delete -f remove_container_by_id.yaml
Copied!
或者直接删除 blade 资源:
1
kubectl delete blade remove-container-by-id
Copied!
删除容器后,执行销毁实验命令不会恢复容器,需要靠容器自身的管理拉起!
blade 执行方式
1
blade create k8s container-container remove --container-ids 060833967b0a37 --names frontend-d89756ff7-szblb --namespace default --kubeconfig config
Copied!
如果执行失败,会返回详细的错误信息;如果执行成功,会返回实验的 UID:
1
{"code":200,"success":true,"result":"17d7021c777b76e3"}
Copied!
可通过以下命令查询实验状态:
1
blade query k8s create 17d7021c777b76e3 --kubeconfig config
2
3
{"code":200,"success":true,"result":{"uid":"17d7021c777b76e3","success":true,"error":"","statuses":[{"id":"205515ad8fcc31da","uid":"060833967b0a3733d10f0e64d3639066b8b7fbcf371e0ace2401af150dbd9b12","name":"php-redis","state":"Success","kind":"container","success":true,"nodeName":"cn-hangzhou.192.168.0.205"}]}}
Copied!
销毁实验:
1
blade destroy 17d7021c777b76e3
Copied!
删除容器后,执行销毁实验命令不会恢复容器,需要靠容器自身的管理拉起!

常见问题

其他问题参考 [blade create k8s](blade create k8s.md) 常见问题
Last modified 4d ago