#kubectl run test --image=busybox:1.25 --command sleep 3600
kubectl run test --image=alpine:3.7.3 --commandsleep 3600
kubectl run test --image=debian:buster --commandsleep 3600
注意:用于测试的容器镜像不要使用busybox镜像,测试结果可能不准确。 比如,使用最新版busybox的nslookup解析可能解析失败,但是换个低版本的busybox可能就正常了;使用telnet的测试端口提示Connection closed by foreign host,nc测试也是没有结果,但是换成其他镜像就可以正常连接。
自制测试镜像
1、准备Dockerfile
1 2 3 4
FROM debian:buster RUN sed -i 's#http://deb.debian.org#http://mirrors.tuna.tsinghua.edu.cn#g' /etc/apt/sources.list RUN sed -i 's#http://security.debian.org/debian-security#http://mirrors.tuna.tsinghua.edu.cn/debian-security#g' /etc/apt/sources.list RUN apt update && apt install -y telnet netcat curl
kubectl top nodes kubectl top nodes --sort-by='cpu' kubectl top nodes --sort-by='memory'
查看Pod资源使用
1 2 3
kubectl top pods -A kubectl top pods -A --sort-by='cpu' kubectl top pods -A --sort-by='memory'
查看Pod资源申请
1 2 3 4 5 6 7 8 9 10 11 12 13 14
kubectl get po -A \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,requests-cpu:spec.containers[*].resources.requests.cpu,requests-memory:spec.containers[*].resources.requests.memory"
kubectl get po -A --field-selector status.phase==Running \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,requests-cpu:spec.containers[*].resources.requests.cpu,requests-memory:spec.containers[*].resources.requests.memory"
kubectl get po -A --field-selector status.phase==Running,spec.nodeName=worker0 \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,requests-cpu:spec.containers[*].resources.requests.cpu,requests-memory:spec.containers[*].resources.requests.memory"
kubectl get po -A \ -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]} {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"
kubectl get po -A \ -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]} {.name}:{.resources.requests.memory}{'\n'}{end}{'\n'}{end}"
查看Pod资源限制
1 2 3 4 5 6 7 8 9 10 11 12 13 14
kubectl get po -A \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,limits-cpu:spec.containers[*].resources.limits.cpu,limits-memory:spec.containers[*].resources.limits.memory"
kubectl get po -A --field-selector status.phase==Running \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,limits-cpu:spec.containers[*].resources.limits.cpu,limits-memory:spec.containers[*].resources.limits.memory"
kubectl get po -A --field-selector status.phase==Running,spec.nodeName=worker0 \ -o custom-columns="name:metadata.name,namespace:metadata.namespace,limits-cpu:spec.containers[*].resources.limits.cpu,limits-memory:spec.containers[*].resources.limits.memory"
kubectl get po -A \ -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]} {.name}:{.resources.limits.cpu}{'\n'}{end}{'\n'}{end}"
kubectl get po -A \ -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]} {.name}:{.resources.limits.memory}{'\n'}{end}{'\n'}{end}"