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. asp.net mvc 系统操作日志设计

    第一步.系统登录日志 通过signalr来管理用户的登录情况,并保存用户的登录记录. 第二步 通过mvc过滤器,来横切路由访问记录. 保存方式:通过httpclient异步请求webapi 数据通过m ...

  2. H5开发 连接蓝牙打印机 打印标签(斑马ZR628)

    1.连接蓝牙打印机(先用手机自带蓝牙进行配对),然后绑定出已配对的蓝牙设备(用来选择/切换打印机之用),代码如下 已配对蓝牙设备,中显示的就是已连接的,点击一下即可 代码: <!DOCTYPE ...

  3. Ubuntu上的apt/apt-get等命令的实质意义和区别

    Ubuntu上的apt/apt-get等命令的实质意义和区别 一.前言 在使用apt和apt-get命令的时候我们常常会疑惑这两者有什么区别,因为大多数时间这两个命令能做很多相同的事情. 二.APT/ ...

  4. Kubernetes生产架构浅谈

    注意 本文,只是笔者针对Kubernetes生产环境运行的一些关于架构设计介绍. 介绍 基于 Kubernetes 系统构建的统一开发运维管控平台.在 Kubernetes 基础上,围绕 微服务系统的 ...

  5. CodeForces - 560D Equivalent Strings

    Today on a lecture about strings Gerald learned a new definition of string equivalency. Two strings ...

  6. 基于OceanStor Dorado V3存储之精简高效 Smart 系列特性

    基于OceanStor Dorado V3存储之精简高效 Smart 系列特性 1.1  在线重删 1.2  在线压缩 1.3  智能精简配置 1.4  智能服务质量控制 1.5  异构虚拟化 1.6 ...

  7. C#, CSV,Generic, 泛型,导出

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  8. [笔记] C# 如何获取文件的 MIME Type

    MIME Type 为何物: MIME 参考手册 svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 常规方式 对于有文件后 ...

  9. python 处理中文遇到的编码问题总结 以及 字符str的编码如何判断

    如何处理中午编码的问题 Python的UnicodeDecodeError: 'utf8' codec can't decode byte 0xxx in position 这个错误是因为你代码中的某 ...

  10. Java学习——反射

    Java学习——反射 摘要:本文主要讲述了什么是反射,使用反射有什么好处,以及如何使用反射. 部分内容来自以下博客: https://www.cnblogs.com/tech-bird/p/35253 ...