1. kubectl编辑服务容器的deploy文件
kubectl edit deploy 服务名-n 命名空间
2. kubectl编辑服务容器的resourceclaim
kubectl edit resourceclaim 服务名.resourceclaim -n 命名空间
3. 查看所有服务的pod的运行状态
kubectl get pod -n 命名空间例如kubectl get pod -n balalalal
或者加上grep,指定想看的那个服务名kubectl get pod -n 命名空间 | grep 服务名前缀
进阶
每次这个命令只能看到一次所有pod的状态,要一直执行才能看到啥时候关注的那个pod的状态如何,这个时候就可以在前面加上watch -n命令来让他在屏幕上一直刷新。watch -n 1 kubectl get pod -n 命名空间
-n参数后面指定刷新时间,1就表示每秒刷新一次,这样当我们布上去一个新包后,只用盯帧观察目标pod就行了。
4. 快速进入容器
kubectl exec -it $(kubectl get pod -A | grep 服务名前缀 | grep 服务名前缀 | awk '{print $2}' | head -n 1) -n 命名空间 -- bash
5. 查看各节点的状态
kubectl get nodes -o wide
6. kubectl快速查看服务的日志
kubectl logs -f $(kubectl get pods -n 命名空间 --field-selector=status.phase=Running | grep "目标服务名称" | awk '{print $1}' | head -n1) -n 命名空间
7. 查看pod的状态
kubectl describe pod pod名称 -n 命名空间
8. 容器内测试接口
IR接口
curl -i --unix-socket /opt/sidecar/ir/http.sock --location 'http://localhost/接口路径'
ER接口
curl -i --unix-socket /opt/sidecar/http.sock --location 'http://localhost/接口路径'
9. 容器内日志路径
先进入容器,再进入如下目录
服务的日志路径
/opt/log/textlog/pod名/log/
工具初始化log
/opt/log/textlog/tool/initTool.log
tomcat的log
/opt/log/textlog/pod名/tomcatlog
这几个log的区别
- catalina.log
作用:记录Tomcat容器核心的运行日志,包括:
启动/关闭过程中加载的配置、类、端口信息。
System.out/System.err的输出(若未重定向到其他文件)。
部署应用的上下文(如WAR包解析)日志。
查看场景:
Tomcat启动失败时(如端口冲突、配置文件错误)。
需要排查JDBC连接池、Servlet容器等核心组件问题。 - catalina.out
作用:通常是catalina.log的实时追加输出流(部分Linux环境下由启动脚本重定向生成)。
内容可能和catalina.log部分重复,但更实时(例如未配置日志切割时,所有输出直接写入此文件)。
查看场景:
需要实时追踪Tomcat运行状态(如tail -f catalina.out)。
容器突然崩溃但catalina.log未记录完整信息时。 - localhost_access.log
作用:记录所有HTTP请求的访问日志,包括:
请求的URL、IP、响应状态码、耗时、User-Agent等(格式可配置)。
类似Nginx的access log。
查看场景:
分析接口调用量、响应耗时或异常请求(如大量404/500)。
排查安全问题(如恶意爬虫或高频攻击IP)。 - localhost.log
作用:记录与具体应用相关的日志,尤其是:
应用内未捕获的异常(如Servlet/JSP抛出的堆栈信息)。
部分依赖库(如Hibernate、Spring)的DEBUG级别日志(若配置了相关输出)。
查看场景:
应用抛出500 Internal Server Error时,优先查看此日志定位代码问题。
需要确认过滤器(Filter)、监听器(Listener)的执行逻辑时。
优先级总结
Tomcat自身问题(启动失败、资源不足)→ catalina.log或catalina.out。
HTTP请求问题(接口错误、性能瓶颈)→ localhost_access.log。
应用代码问题(空指针、数据库异常)→ localhost.log。
可根据问题阶段和日志特征快速定位文件。
10、手动上传镜像
在后台执行命令pkgctl push /root/pkg_tmp其中/root/pkg_tmp为镜像包的目录,可自定义,一般通过工具手动上传到环境上
11、后台进入服务的数据库
记得修改这几个变量,保存为快捷方式
kubectlexec-it数据库空间-n命名空间 -- zsql_lite 数据库名@数据库空间-0:32080提高效率的快捷命令
快速搜索常用服务的日志
使用场景:想看服务里自己添加的日志,手动进入pod再进入日志查看比较低效,可以使用这个命令快速的搜索。
在service_map里修改添加业务上常见的命名空间和服务,然后运行,还可以在执行时第一个service里直接给目标服务,不给的话就会默认去service_map搜。执行后再输入你想搜的日志内容,就可以了。
service="(目标服务,可选)";namespace="";namespace=${namespace:-$(kubectl get namespace | grep mc.*biz | awk '{ print $1 }')};declare-Aservice_map;service_map=(["命名空间1"]="服务1"["命名空间2"]="服务2"["命名空间3"]="服务3");service="${service:-${service_map[${namespace}]}}";read-p"Please enter the pattern you want to search for: "pattern;foriin$(kubectl get pods-n${namespace}|grep-i${service}|awk'{ print $1 }');doecho-e"\e[34m${i}:\\e[0m";kubectlexec-itq-n${namespace}${i}--bash-c"cd /opt/log/textlog/${i}-${service}*/log/${service}* && zgrep --color=always '${pattern}' *";echo-e"";done快速编辑服务的deployment的版本号,用于环境上快速替包验证
本地出了新包,传到环境上后需要修改deployment里的版本号时,手动编辑deployment里好几个地方的版本号比较麻烦,可以使用如下命令。使用后只需要输入要替换的版本号。26这里的版本号正则表达式根据实际情况修改,修改目标服务和命名空间。
read-p"Please enter the version of the image you want to replace with: "version;if[["${version}"=~^26[0-9.]*[0-9]+$]];thenecho"Replacing version to${version}";kubectl get deployment 目标服务-n目标命名空间-oyaml|sed"s/26[0-9.]*/${version}/"|kubectl apply-f-;elseecho"Abort, please check if version is correct!";fi快速进入业务常用容器
kubectlexec-it$(kubectl get pod-A|grep常用服务1|grep常用服务2|awk'{print $2}'|head-n1)-n命名空间--bash快速进入容器的log目录
cid=$(crictl ps | grep -w " 目标容器" | grep -v ‘排除不要的容器’ | head -n 1 | awk ‘{print $1}’); pid=(crictl inspect --output go-template --template '{{ .info.pid }}' ${cid});cd /proc/$pid/root/opt/log/textlog/
分析日志里特定URL的404错误
read -p “Please enter url: " url;router_ids=(zgrep"(zgrep "(zgrep"{url}” access.log*|grep ’ 404 '|sort -k2|tail -3|awk '{printKaTeX parse error: Expected 'EOF', got '}' at position 7: (NF-1)}̲');if [ -n "router_ids" ]; then zgrep -e “$router_ids” *;fi
通过Pod名称快速SSH跳到pod所在节点
read -p "Please enter client pod name: " pod_name;restart_time=kubectl get pods -o wide -A|grep $pod_name|awk '{print $ 5}';if [ $restart_time -eq 0 ]; then node_index=8; else node_index=10; fi;node_name=kubectl get pods -o wide -A|grep $pod_name|awk -v node_index=$node_index '{print $node_index}';suffix=’ ';external_ip=kubectl get nodes -owide|grep "$node_name$suffix"|awk '{print $6}';ssh $external_ip