k8s日志?简单实用查日志命令

vbhYIYTMK89032024-04-12 16:57:07

一、k8s***简单实用查日志命令***最后一种内存使用低***

可以使用kubectl get service-n namespace可以查看namespace的信息

使用kubectl exec-it-n namespace podname bash进入远程目录(tips:可以使用tab索引)

进入日志目录

查看当前日志:

1.可以使用tail-f log_file.log(日志名称)打印所有现在会打印的日志

2.使用grep方法抓包tail-f log_file.log(日志名称)|grep特殊索引如trace id

查看历史日志:

1.使用vim方法查看,慎用,会拉高节点的cpu

可以配合/特殊索引,

:set hls是高亮索引

会搜索全文,shift+g,是到最底部,n是去下一个,shift+n是上一个

2.使用cat方法,据说也会拉高cpu

可以cat log.log|grep-I"想搜索的内容如trace_id"

加-C5可以显示周围的几行(C后面是显示周围几行)

3.直接grep,力推,经证实cat vi都会拉高内存使用率

grep"关键字" rlog.log-C10

二、k8s常用命令

docker run busybox echo"hello world"

docker run--name kubia-container-p 8080:8080-d kubia

docker build-t kubia.

docker images

docker ps

docker exec-it kubia-container bash

docker stop kubia-container

docker rm kubia-container

docker tag kubia luksa/kubia

docker login

docker push luksa/kubia

docker logs<container id>

kubectl run kubia--image=luksa/kubia--port=8080

kubectl expose pod kubia<--type=LoadBalancer--name kubia-http>(type指定svc类型默认clusterip,name指定svc名称)

kubectl get...(#-o wide列出pod ip和运行节点#-o yaml输出格式#--show-lables列出标签#-L列出指定标签)

kubectl describe...

kubectl cluster-info

kubectl explain pod

kubectl explain pod.spec

kubectl create-f kubia-manual.yaml

kubectl logs<pod>-c<container id>(#--previous获取奔溃容器的日志)

kubectl port-forward kubia-manual 8888:8080

参考:

kubectl label po<pod name><key=value>#添加

kubectl label po<pod name><key=value>--overwrite#修改

kubectl annotate

kubectl delete po<pod name>(--all所有poad)

kubectl delete po-l

kubectl delete ns#删除整个命名空间

kubectl delete all--all(删除所有资源)

128+9(SIGKILL)进程强制终止,此时会创建一个全新容器

128+15(SIGTERM)

initalDelaySeconds设置延迟来说明应用程序启动时间

kubectl delete rc kubia--cascade=false

kubectl get nodes-o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

export CURL_CA_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

TOKEN= TOKEN"

kubectl create clusterrolebinding permissive-binding--clusterrole=cluster-admin--group=system:serviceaccounts

kubectl apply-f nginx-test.yaml

kubectl delete-f nginx-test.yaml#删除YAML文件中定义的资源

kubectl get deployment nginx-test-o yaml

kubectl create deployment test--image=nginx:1.7.9--dry-run=client-o yaml> nginx.yaml

kubectl api-versions#查看K8S所支持API版本

kubectl api-resources#查看K8S所有资源类型

kubectl explain pods#发现api对象字段

kubectl explain pods.spec#了解各个属性更多信息

kubectl apply-f pod-demo.yaml

kubectl get pods#查看容器是否运行,正常情况应该是Running

kubectl get pods-o wide#查看pod详细信息,包含了IP、所属Node等

kubectl get pods--show-labels#查看资源标签

kubectl get pods-L creation_method,env#将creation_method,env标签展示在列表上

kubecl label pods kubia-manual creation_method=manual#添加标签

kubecl label pods kubia-manual env=debug--overwrite#修改标签--overwrite选项

kubectl get namespaces#查看namespace

kubectl get pods-n kube-system#显示指定namespace的pod

kubectl describe pods pod-demo

kubectl delete pods<pod name>#按名称删除

kubectl delete pods-l<label>#按标签删除<namespace>#删除整个命名空间来删除pod

kubectl delete pods--all#删除命名空间中的所有pod

kubectl delete all--all#删除命名空间中的几乎所有资源,pod rc svc

kubectl delete rc kubia--cascade=false#只删除 ReplicationController并保待 pod运行

kubectl logs mypod

kubectl logs mypod--previous#查看前一个容器的日志

退出状态码是两个数字的总和:128+x,其中x是终止进程的信号编号

主要用于Pod调度和驱逐,优先级越低的QOS越容易被驱逐。不同QOS优先级不同,使用kubectl describe命令可以查看Qos Class:

· BestEffort:尽可能的为Pod分配资源,默认不进行requests设置就是该QOS,优先级最低

· Burstable:资源可波动,requests小于limit的值就是该QOS,推荐

· Guaranteed:完全可保障资源,必须使用requests和limit定义内存和CPU两项资源并且相等,优先级最高

由于每个节点都有一个唯一标签,其中键为kubernetes.io/hostname,值为该节点的实际主机名

kubectl annotate pods<podname><key=value>

三、linux和k8s和数据库笔记

有关linux:

1、卸载某一个特定的挂在点。

umount/dev/datavg01/data01

2、移掉lvm。

vgremove/dev/datavg01

3、拷贝数据。

scp-r/home/gaoge.txt root@192.168.10.1:/opt或rsync-av/root/rpmpkgs/tmp/backups/

4、显示系统盘符并以树状格式展开。

lsblk。

5、扫描新增设备。

echo"---">/sys/class/scsi-host/hosto/scan

6、强行杀死mysql

kill-9$(ps-ef| grep mysql)

7、将文件内容以每一行5个的形式展示出来。

cat test2.txt| xargs-n 5

8、用cut去实现awk切割列的效果

cat/etc/passwd| cut-d:-f 2

9、sed、grsp、awk。之前已经说过了、具体看从linux三剑客说起这篇。

10、增加一个oracle用户让其属于oinstall组同时也隶属于dba组。useradd oracle-g oinstall-G dba

11、新建立一个组groupnew并将组id修改为255。

groupadd-g 255 groupnew

12、将本地/dev/hdb整盘中的数据备份到/dev/hdd上。

dd if=/dev/hdb of=/dev/hdd

13、查看服务器cpu个数。

cat/proc/cpuinfo| grep"physical id"| wc-l

14、查看服务器io状况并以每间隔1秒的速度输出5次。

iostat 1 5

15、查看服务器内存使用情况并以每间隔2秒的速度输出10次。

vmstat 2 10

16、将gaoge.txt中的第一列db2找到并将db两个字符用ab替换。

cat gaoge.txt|grep db2| awk-F 2'{print$1}'| tr db ab

17、将包名解压到指定目录。

tar-cxvf包名-C指定的目录

18、linux中前后台任务切换。

ctrl+z切换到后台、jobs显示id、fg+ id切换至前台。

19、杀掉top下stopped的进程。

ps-A-ostat,ppid,pid,cmd|grep-e'^[T]'

然后在进行kill

20、监控cpu状态。

mpstat

21、查看虚拟内存使用了多少。

swapon

22、每月1到10号4:45重启nginx。

crontab-u root-l显示root当前的计划任务。

crontab-u root-e后输入以下内容并保存退出。

45 4 1,10** systemctl start nginx

23、awk打印df-h的第一列、第三列、最后一列。

df-h| awk'{print$1""$3""$NF}'

24、批量拉、打标签、推docker镜像的shell脚本。

#!/bin/bash

for image in'docker images| grep 10.171.10.1:10000| awk'{ print$1":"$2}

do

version='echo$image| awk-F/'{ print$2}'

docker tag$image 192.168.10.1/$version

docker push 192.168.10.1/$version

done

25、正则表达式匹配电话号码。

(?0d{2}[)-]?d{8}

26、编译安装三步骤。

./configure--prefix=安装目录

make

make install

有关kubernetes:

将kubernetes中pod的数据拷贝到物理宿主机上。

kubectl cp gyl-run/gyl-mysql-01020304:/opt/docker.sh/opt

将kubernetes中物理宿主机上的数据拷贝到pod中。

kubectl cp/opt/docker.sh gyl-run/gyl-mysql-01020304:/opt

检查当前用户有没有权限在k8s中创建资源权限。

kubectl auth can-i'*''*'

检查当前用户有没有权限在k8s集群中创建namespace权限。

kubectl auth can-i create pods--all-namespaces

查看集群是否健康。

kubectl get cs

有关数据库:

查看 mysql二进制日志格式。

show variables like‘%binlog_format%’

查看所有二进制日志文件

show master logs

查看正在写入的二进制日志

show master status

格式化二进制显示为sql格式

mysqlbinlog--base64--output=decode-rows-v--start-date="2019-01-25 00:00:00"--stop-date=“2019-01-26 17:30” master-bin.000006

利用bin-log去还原数据

/usr/bin/mysqlbinlog--no-default/var/lib/mysql/mysql-bin.00001| usr/bin/mysql-u root-p pwd test

连接 postgresql

psql-U用户名-d数据

数据库名-h主机地址-p端口(默认端口为5432)

l显示数据库列表

d显示所有表

d表名称显示表结构

du显示所有数据库用户

c数据库名连接数据库

q退出pg窗口

pg备份:

pg_dump-U kong-d kong-f/opt/2019-01-26-pg.sql

pg还原:

psql-d kong-U kong-f/opt/2019-01-26-pg.sql

mongo批量更新数据:把age大于20的class name修改为,设置multi为true

热门标签
    关注我们