容器化场景常用kubectl命令
2026/6/11 16:27:57 网站建设 项目流程

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的区别

  1. catalina.log
    作用:记录Tomcat容器核心的运行日志,包括:
    启动/关闭过程中加载的配置、类、端口信息。
    System.out/System.err的输出(若未重定向到其他文件)。
    部署应用的上下文(如WAR包解析)日志。
    查看场景:
    Tomcat启动失败时(如端口冲突、配置文件错误)。
    需要排查JDBC连接池、Servlet容器等核心组件问题。
  2. catalina.out
    作用:通常是catalina.log的实时追加输出流(部分Linux环境下由启动脚本重定向生成)。
    内容可能和catalina.log部分重复,但更实时(例如未配置日志切割时,所有输出直接写入此文件)。
    查看场景:
    需要实时追踪Tomcat运行状态(如tail -f catalina.out)。
    容器突然崩溃但catalina.log未记录完整信息时。
  3. localhost_access.log
    作用:记录所有HTTP请求的访问日志,包括:
    请求的URL、IP、响应状态码、耗时、User-Agent等(格式可配置)。
    类似Nginx的access log。
    查看场景:
    分析接口调用量、响应耗时或异常请求(如大量404/500)。
    排查安全问题(如恶意爬虫或高频攻击IP)。
  4. 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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询