Kubescope cli
Kubescope cli 是一个可以运行在本地或 Kubernetes 中的工具,可直接从 Docker Daemon 中收集容器指标并可视化。和 cAdvisor
等其他集群指标收集服务一样, kubescope cli
收集指标的周期是 1 秒(而不是 10-15 秒)。如果周期是 10-15 秒,你可能会在测试期间错过一些引发性能瓶颈的问题。如果你使用 cAdvisor 进行测试,每次都要使用新的 Pod 作为测试对象,因为 Kubernetes 在超过资源限制时就会将 Pod 杀死,然后重新启动一个全新的 Pod。而 kubescope cli
就没有这方面的忧虑,它直接从 Docker Daemon 中收集容器指标(你可以自定义收集指标的时间间隔),并使用正则表达式来选择和过滤你想要显示的容器。
KubeMark
Kubemark是K8s官方提供的一个对K8s集群进行性能测试的工具。它可以模拟出一个K8s cluster(Kubemark cluster),不受资源限制,从而能够测试的集群规模比真实集群大的多。这个cluster中master是真实的机器,所有的nodes是Hollow nodes。Hollow nodes执行的还是真实的K8s程序,只是不会调用Docker,因此测试会走一套K8s API调用的完整流程,但是不会真正创建pod。
Kubefwd
kubefwd 是一个用于端口转发Kubernetes中指定namespace下的全部或者部分pod的命令行工具。 kubefwd 使用本地的环回IP地址转发需要访问的service,并且使用与service相同的端口。 kubefwd 会临时将service的域条目添加到 /etc/hosts 文件中。
kubectl-debug
kubectl-debug 是一个简单的 kubectl 插件, 能够帮助你便捷地进行 Kubernetes 上的 Pod 排障诊断. 背后做的事情很简单: 在运行中的 Pod 上额外起一个新容器, 并将新容器加入到目标容器的 pid, network, user 以及 ipc namespace 中, 这时我们就可以在新容器中直接用 netstat, tcpdump 这些熟悉的工具来解决问题了, 而旧容器可以保持最小化, 不需要预装任何额外的排障工具.
nsenter命令
nsenter 命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。
它的命令语法如下:
nsenter [options] [program [arguments]]
options:
-t, --target pid:指定被进入命名空间的目标进程的pid
-m, --mount[=file]:进入mount命令空间。如果指定了file,则进入file的命令空间
-u, --uts[=file]:进入uts命令空间。如果指定了file,则进入file的命令空间
-i, --ipc[=file]:进入ipc命令空间。如果指定了file,则进入file的命令空间
-n, --net[=file]:进入net命令空间。如果指定了file,则进入file的命令空间
-p, --pid[=file]:进入pid命令空间。如果指定了file,则进入file的命令空间
-U, --user[=file]:进入user命令空间。如果指定了file,则进入file的命令空间
-G, --setgid gid:设置运行程序的gid
-S, --setuid uid:设置运行程序的uid
-r, --root[=directory]:设置根目录
-w, --wd[=directory]:设置工作目录
如果没有给出program,则默认执行$SHELL。
具体使用实例
$ docker inspect -f {{.State.Pid}} nginx ## 其中nginx为需要查看的容器名,也可以使用用Container ID
$ nsenter --target 3326 --mount --uts --ipc --net --pid
kt-connect
kt-connect 是一个可以让开发环境访问K8S集群下应用的工具
Lens
Kubernetes可视化管理工具
Container-diff
container-diff
这是一个可对两个镜像进行内容对比的工具。比较本地镜像使用daemon://
。例如:
# container-diff diff daemon://modified_debian:latest remote://gcr.io/google-appengine/debian8:latest
kube-score
Kube-Score是一款针对Kubernetes的性能及安全分析工具,该工具能够对Kubernetes对象定义进行静态代码分析,并给出提升Kubernetes性能和安全性方面的建议。
kubectx、kubens
kubectx快速切换管理k8s的集群
kubens快速切换K8s集群的namespace
将多个kubectl config配置文件进行合并
$ KUBECONFIG=a.conf:b.conf:c.conf kubectl config view --flatten > .kube/config
kubecm
kubecm : Manage your kubeconfig more easily.
doc
参考文章
Kubernetes集群性能测试
kubemark 搭建测试集群和性能测试
简化 Pod 故障诊断: kubectl-debug 介绍
A Select List of Kubernetes Tools