开启 Kubernetes 监控并实施压力测试

1. Kubectl 基本命令

1.1 创建对象

1
2
3
4
5
6
7
8
# 创建资源,也可以使用远程 URL
kubectl create -f ./my.yaml
1. 使用多个文件创建资源
kubectl create -f ./my1.yaml -f ./my2.yaml
1. 使用目录下的所有清单文件来创建资源
kubectl create -f ./dir
1. 启动一个 nginx 实例
kubectl run nginx --image=nginx

1.2 显示和查找资源

1
2
3
4
5
6
7
8
# 列出所有 namespace 中的 service
kubectl get services
1. 列出所有 namespace 中的 pod
kubectl get pods --all-namespaces
1. 列出 kube-system 中的 pod
kubectl get pods -n kube-system
1. 列出所有 pod 并显示详细信息
kubectl get pods -o wide

1.3 更新资源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 滚动更新 pod frontend-v1
kubectl rolling-update frontend-v1 -f frontend-v2.json
1. 更新资源名称并更新镜像
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2
1. 更新 frontend pod 中的镜像
kubectl rolling-update frontend --image=image:v2
1. 强制替换,删除后重新创建资源。会导致服务中断。
kubectl replace --force -f ./pod.json
1. 为 nginx RC 创建服务,启用本地 80 端口连接到容器上的 8000 端口
kubectl expose rc nginx --port=80 --target-port=8000

1.4 删除资源

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 删除 pod.json 文件中定义的类型和名称的 pod
kubectl delete -f ./pod.json
1. 删除名为 "baz" 的 pod 和名为 "foo" 的 service
kubectl delete pod, service baz foo
1. 删除具有 name=myLabel 标签的 pod 和 serivce
kubectl delete pods, services -l name=myLabel
1. 删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
kubectl delete pods, services -l name=myLabel --include-uninitialized
1. 删除 my-ns namespace 下的所有 pod 和 serivce,包括尚未初始化的
kubectl -n my-ns delete po,svc --all

1.5 与运行中的 Pod 交互

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 流式输出 pod 的日志(stdout
kubectl logs -f my-pod
1. 流式输出 pod 中容器的日志(stdout,pod 中有多个容器的情况下使用)
kubectl logs -f my-pod -c my-container
1. 交互式 shell 的方式运行 pod
kubectl run -i --tty busybox --image=busybox -- sh
 1. 连接到运行中的容器
kubectl attach my-pod -i
1. 在已存在的容器中执行命令(pod 中有多个容器的情况下)
kubectl exec my-pod -c my-container -- ls /

2. Dashboard 简介