Kubernetes方式

top命令查看所有pod,nodes中内存,CPU使用情况

查看pod

root @ master ➜  ~  kubectl top pod -n irm-server
NAME CPU(cores) MEMORY(bytes)
test-ecd-server-56b77d9fbb-zfctt 1m 1529Mi
test-flow-server-b477756f-2s5bc 1m 3006Mi
test-huishi-api-86dcfdb7c5-jtcpt 0m 1829Mi
test-huishi-message-5d4b456b88-n8xl5 241m 344Mi
test-huishi-schedule-bc5f5d4d5-z22gq 3m 510Mi
test-huishi-server-6f875487d7-9rzpd 44m 1483Mi
test-irm-bd9444948-rwtgn 1m 1270Mi
test-irm-task-89f65f5bd-zht2x 0m 1282Mi
test-order-server-5fcc5575bd-67c4r 32m 1066Mi
test-payment-6df4459864-5d8xl 1m 634Mi
test-urule-54f4b8f84f-l5xbm 1m 2382Mi

查看具体某一个pod

root @ master ➜  ~  kubectl top pod test-huishi-server-6f875487d7-9rzpd -n irm-server
NAME CPU(cores) MEMORY(bytes)
test-huishi-server-6f875487d7-9rzpd 36m 1489Mi

查看nodes

root @ master ➜  ~  kubectl top nodes -n irm-server
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 225m 9% 2853Mi 25%
node1 219m 3% 18990Mi 65%
node11 61m 6% 4236Mi 31%
node12 2344m 36% 27839Mi 101%
node2 76m 7% 7950Mi 59%
node4 106m 10% 8151Mi 61%
node5 123m 12% 4877Mi 92%
node6 129m 12% 5614Mi 42%
node7 58m 5% 3738Mi 28%
node8 132m 6% 9098Mi 57%
node9 60m 6% 3017Mi 22%

查看具体某一个node

root @ master ➜  ~  kubectl top nodes node1 -n irm-server
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node1 222m 3% 19009Mi 65%

上面使用nodes,node都可以

进入容器pod内部查看

root @ master ➜  ~  kubectl exec test-huishi-server-6f875487d7-9rzpd -it sh -n irm-server
/home # jps 1
sh: jps: not found
/home # jstack 1
sh: jstack: not found
/home # exit
command terminated with exit code 127

docker容器内部没有jstack命令

Docker方式

找到具体pod所在的节点,进入使用docker命令查看具体的信息

docker top命令查看

[root@node1 ~]# docker ps -a |grep huishi-server
73c1189ddd0e 18.16.200.191:5000/test/huishi-server "/bin/sh -c 'java $J…" 20 hours ago Up 20 hours k8s_test-huishi-server_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0
ed1a36493259 gcr.io/google_containers/pause-amd64:3.0 "/pause" 20 hours ago Up 20 hours k8s_POD_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 [root@node1 ~]# docker top 73c1189ddd0e
UID PID PPID C STIME TTY TIME CMD
root 3439 3416 0 Dec18 ? 00:11:41 java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -Xms1024M -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8 -javaagent:/data/jacocoagent.jar=includes=*,output=file,append=true,destfile=/data/log/huishi-server/jacoco.exec -jar /home/huishi-server.jar

docker stats 命令查看

docker stats 命令用来返回运行中的容器的实时数据流,

默认情况下,stats 使用参数-a或者--all,命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。

[root@node1 ~]# docker stats -a

CONTAINER ID        NAME                                                                                                                                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
1ad181f01c76 k8s_POD_test-capital-schedule-6468f8774f-2s6dd_common-server_78d133b9-21f7-11ea-932e-525400506c6a_0 0.00% 1.766MiB / 30.89GiB 0.01% 0B / 0B 0B / 0B 1
73c1189ddd0e k8s_test-huishi-server_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 0.04% 1.178GiB / 2GiB 58.88% 0B / 0B 0B / 254kB 68
ed1a36493259 k8s_POD_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 0.00% 1.25MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
05c08624b3d7 k8s_POD_test-p2p-bms-7db78b7c46-9vvnt_common-server_759c4604-1c7e-11ea-932e-525400506c6a_0 0.00% 1.543MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
9013e1d0a243 k8s_POD_test-institution-6569774458-t8sk9_institution-server_f35e22c0-1a2e-11ea-932e-525400506c6a_0 0.00% 1.578MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1

输出内容:

[CONTAINER]:以短格式显示容器的 ID。

[CPU %]:CPU 的使用情况。

[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。

[MEM %]:以百分比的形式显示内存使用情况。

[NET I/O]:网络 I/O 数据。

[BLOCK I/O]:磁盘 I/O 数据。

[PIDS]:PID 号。

如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:

[root@node1 ~]# docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1ad181f01c76 k8s_POD_test-capital-schedule-6468f8774f-2s6dd_common-server_78d133b9-21f7-11ea-932e-525400506c6a_0 0.00% 1.766MiB / 30.89GiB 0.01% 0B / 0B 0B / 0B 1
73c1189ddd0e k8s_test-huishi-server_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 1.72% 1.178GiB / 2GiB 58.89% 0B / 0B 0B / 254kB 68
ed1a36493259 k8s_POD_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 0.00% 1.25MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
05c08624b3d7 k8s_POD_test-p2p-bms-7db78b7c46-9vvnt_common-server_759c4604-1c7e-11ea-932e-525400506c6a_0 0.00% 1.543MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
9013e1d0a243 k8s_POD_test-institution-6569774458-t8sk9_institution-server_f35e22c0-1a2e-11ea-932e-525400506c6a_0 0.00% 1.578MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1
366e27c0265f k8s_debug-agent_debug-agent-h88sf_kube-system_263ac99f-133f-11ea-932e-525400506c6a_0 0.00% 10.3MiB / 30.89GiB 0.03% 0B / 0B 0B / 0B 14

格式化输出

[root@node1 ~]# docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
CONTAINER NAME CPU % MEM USAGE / LIMIT
1ad181f01c76 k8s_POD_test-capital-schedule-6468f8774f-2s6dd_common-server_78d133b9-21f7-11ea-932e-525400506c6a_0 0.00% 1.766MiB / 30.89GiB
73c1189ddd0e k8s_test-huishi-server_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 0.32% 1.178GiB / 2GiB
ed1a36493259 k8s_POD_test-huishi-server-7f4f5c5f8c-kqzrw_irm-server_2bc27a95-216a-11ea-932e-525400506c6a_0 0.00% 1.25MiB / 30.89GiB
05c08624b3d7 k8s_POD_test-p2p-bms-7db78b7c46-9vvnt_common-server_759c4604-1c7e-11ea-932e-525400506c6a_0 0.00% 1.543MiB / 30.89GiB
9013e1d0a243 k8s_POD_test-institution-6569774458-t8sk9_institution-server_f35e22c0-1a2e-11ea-932e-525400506c6a_0 0.00% 1.578MiB / 30.89GiB
366e27c0265f k8s_debug-agent_debug-agent-h88sf_kube-system_263ac99f-133f-11ea-932e-525400506c6a_0 0.05% 10.3MiB / 30.89GiB

上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。

下面是自定义的格式中可以使用的所有占位符:

.Container 根据用户指定的名称显示容器的名称或 ID。

.Name 容器名称。

.ID 容器 ID。

.CPUPerc CPU 使用率。

.MemUsage 内存使用量。

.NetIO 网络 I/O。

.BlockIO 磁盘 I/O。

.MemPerc 内存使用率。

.PIDs PID 号。

有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。

JSON格式输出

docker stats --no-stream --format \
"{\"container\":\"{{ .Container }}\",\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"cpu\":\"{{ .CPUPerc }}\"}" {"container":"1ad181f01c76","memory":{"raw":"1.766MiB / 30.89GiB","percent":"0.01%"},"cpu":"0.00%"}
{"container":"73c1189ddd0e","memory":{"raw":"1.178GiB / 2GiB","percent":"58.90%"},"cpu":"0.33%"}
{"container":"ed1a36493259","memory":{"raw":"1.25MiB / 30.89GiB","percent":"0.00%"},"cpu":"0.00%"}
{"container":"05c08624b3d7","memory":{"raw":"1.543MiB / 30.89GiB","percent":"0.00%"},"cpu":"0.00%"}
{"container":"9013e1d0a243","memory":{"raw":"1.578MiB / 30.89GiB","percent":"0.00%"},"cpu":"0.00%"}
{"container":"366e27c0265f","memory":{"raw":"10.3MiB / 30.89GiB","percent":"0.03%"},"cpu":"0.00%"}
{"container":"9f206bab70fd","memory":{"raw":"1.465MiB / 30.89GiB","percent":"0.00%"},"cpu":"0.00%"}
{"container":"7a34c4cb664f","memory":{"raw":"1.555MiB / 30.89GiB","percent":"0.00%"},"cpu":"0.00%"}

容器内部查看分析

进入到容器:

[root@node1 ~]# docker exec -it  1218a5d5022d  sh
/home # cd /
/ # find . -name "jdk*"
^C
/ # find . -name "*jdk*"
^C
/ # find . -name "*jre*"
./opt/jre
./opt/jre1.8.0_231

进入到docker容器,发现并没有jdk,只有jre

docker cp迁移jdk到容器

[root@node1 java]# docker cp jdk1.8.0_91  1218a5d5022d:/usr/local
[root@node1 java]# docker exec -it 1218a5d5022d sh
/home # cd /usr/local
/usr/local # ls
bin jdk1.8.0_91 lib share
/usr/local # jps
sh: jps: not found

命令不能使用

设置PATH环境变量

[root@node1 bin]# export PATH="$PATH:/usr/java/jdk1.8.0_91/bin"

[root@node1 bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/java/jdk1.8.0_91/bin

再次执行命令:

[root@node1 bin]# jps
-bash: /usr/java/jdk1.8.0_91/bin/jps: Permission denied

发现没有权限。

这其实不是什么 Bug,而是 Docker 自 1.10 版本开始加入的安全特性。

类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是 Docker 自 1.10 在默认的 seccomp 配置文件中禁用了 ptrace。

释放docker容器ptrace权限

在docker run 命令中加上参数--cap-add=SYS_PTRACE
docker run --cap-add=SYS_PTRACE ......

参考:

kubectl 命令技巧大全

记一次k8s环境java服务卡死的处理

Kubernetes 集群分析查看内存,CPU的更多相关文章

  1. GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)

    引言 本文通过对卷类型的分析对比,来帮助读者选取生产环境最符合服务的挂载存储,命令可结合<glusterfs详解及kubernetes 搭建heketi-glusterfs>进行实验,下面 ...

  2. Just 5分钟!使用k3s部署轻量Kubernetes集群快速教程

    大小仅有40MB的k3s为想要节省开销进行开发和测试的企业提供了一个很好的选择.本文将用一种极为简洁的方式,教你在5分钟之内使用k3s部署轻量Kubernetes集群. Kubernetes已经改变了 ...

  3. (转)实验文档4:kubernetes集群的监控和日志分析

    改造dubbo-demo-web项目为Tomcat启动项目 Tomcat官网 准备Tomcat的镜像底包 准备tomcat二进制包 运维主机HDSS7-200.host.com上:Tomcat8下载链 ...

  4. kube-liveboard: kubernetes集群可视化工具

    kube-liveboard 随着kubernetes 集群的增大,对于集群数据选取恰当的形式进行展示有助于直观反映集群的状态,方便发现集群的短板,了解集群的瓶颈.因此,笔者做了kube-livebo ...

  5. Centos7部署Kubernetes集群(单工作节点)+配置dashboard可视化UI

    目标:docker+kubernetes+cadvosor+dashboard 一:物理硬件 两台虚拟机(centos7):一台做为主节点(master),一台做为工作节点(node) [root@M ...

  6. 手动搭建高可用的kubernetes 集群

    之前按照和我一步步部署 kubernetes 集群的步骤一步一步的成功的使用二进制的方式安装了kubernetes集群,在该文档的基础上重新部署了最新的v1.8.2版本,实现了kube-apiserv ...

  7. 【Kubernetes学习之二】Kubernetes集群安装

    环境 centos 7 Kubernetes有三种安装方式:yum.二进制.kubeadm,这里演示kubeadm. 一.准备工作1.软件版本 软件 版本 kubernetes v1.15.3 Cen ...

  8. Kubernetes集群

    Kubernetes已经成为当下最火热的一门技术,未来一定也会有更好的发展,围绕着云原生的周边产物也越来越多,使得上云更加便利更加有意义,本文主要讲解一些蔚来汽车从传统应用落地到Kubernetes集 ...

  9. Kubernetes集群安装(自己搭过,已搭好)

    k8s安装目录 1. 组件版本 && 集群环境 组件版本 etcd 集群 && k8s master 机器 && k8s node 机器 集群环境变量 ...

随机推荐

  1. NOIP模拟赛 拓展

    题目描述 Description \(φ\) 函数是数论中非常常用的函数.对于正整数 \(x\) ,\(φ(x)\) 表示不超过 \(x\) 的所有正整数与 \(x\) 互质的个数. 现在我们对它进行 ...

  2. 【2019.7.20 NOIP模拟赛 T2】B(B)(数位DP)

    数位\(DP\) 首先考虑二进制数\(G(i)\)的一些性质: \(G(i)\)不可能有连续两位第\(x\)位和第\(x+1\)位都是\(1\).因为这样就可以进位到第\(x+2\)位.其余情况下,这 ...

  3. 【转】ServletContext介绍及用法

    1.1.  介绍 ServletContext官方叫servlet上下文.服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象.这个对象全局唯一,而且工程内部的所有servl ...

  4. 洛谷P4015 运输问题 网络流24题

    看了下SPFA题解,一个一个太麻烦了,另一个写的很不清楚,而且注释都变成了"????"不知道怎么过的,于是自己来一发SPFA算法. Part 1.题意 M 个仓库,卖给 N 个商店 ...

  5. EF直接更新数据(不需查询)

    //0.0创建修改的 实体对象 Models.BlogArticle model = new BlogArticle(); model.AId = ; model.ATitle = "新的数 ...

  6. Unreal Engine 4 系列教程 Part 8:粒子系统教程

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  7. 移动端&PC端CSS样式兼容代码

    CSS样式兼容代码 1.禁止选中复制文本 *{ user-select: none; -moz-user-select: none; -ms-user-select: none; -webkit-us ...

  8. docker入门与部署微服务--学习笔记

    最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...

  9. SqlServer 开篇简介

    实例:我们的电脑中可以安装一个或多个SqlServer实例,每一个SqlServer实例可以包含一个或者多个数据库. 架构:数据库中,又有一个或者多个架构.架构里面包含:表,视图,存储过程. 文件与文 ...

  10. 2019年ASP.NET Core学习路线

    - [先决条件] + C# + Entity Framework + ASP.NET Core + SQL 基础知识 - [通用开发技能] + 学习 GIT, 在 GitHub 中创建开源项目 + 掌 ...