一、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