在k8s当中有可能你的网络不是很好有的机器拉镜像很慢,那么我们就可以将一台机器上的镜像进行打包,然后直接将这个镜像scp过去,直接导入进docker就直接可以用了
格式
docker save -o 指定路径和打包镜像的名字 本地镜像的名称
[root@k8s-node2 ~]# docker save -o /root/flannel.tar zhaocheng172/flannel
[root@k8s-node2 ~]# ls
anaconda-ks.cfg flannel.tar
scp到其他的机器...........
现在进行导入
格式docker load i 导过来的镜像名称
[root@k8s-node1 ~]# docker load -i flannel.tar
7bff100f35cb: Loading layer [==================================================>] 4.672MB/4.672MB
5d3f68f6da8f: Loading layer [==================================================>] 9.526MB/9.526MB
9b48060f404d: Loading layer [==================================================>] 5.912MB/5.912MB
3f3a4ce2b719: Loading layer [==================================================>] 35.25MB/35.25MB
9ce0bb155166: Loading layer [==================================================>] 5.12kB/5.12kB
Loaded image: zhaocheng172/flannel:v0.11.0-amd64
查看某个进程占用多大的内存
先使用top 找到进程的pid,打印出来
[root@zhaocheng ~]# cat /proc/5076/status |grep VmRSS |awk '{print $2,$3}'
5884 kB
遇到Read-only file system,只读文件系统
node6 rsyslogd[1984]: action 'action 0' suspended, next retry is Tue Jan 28 09:25:31 2020 [v8.24.0-34.el7 try http://www.rsyslog.com/e/2007 ]
Jan 28 09:25:01 k8s-node6 kube-proxy[2477]: I0128 09:25:01.155123 2477 config.go:132] Calling handler.OnEndpointsUpdate
Jan 28 09:25:01 k8s-node6 rsyslogd[1984]: imjournal: fopen() failed for path: '/var/lib/rsyslog/imjournal.state.tmp': Read-only file system [v8.24.0-34.el7 try http://www.rsyslog.com/e/2013 ]
Jan 28 09:25:01 k8s-node6 rsyslogd[1984]: imjournal: fopen() failed for path: '/var/lib/rsyslog/imjournal.state.tmp': Read-only file system [v8.24.0-34.el7 try http://www.rsyslog.com/e/2013 ]
解决方法给它写权限重新挂载一下,这里可以针对目录对进行写权限
[root@k8s-node6 ~]# mount -o remount -rw /
使用docker的时候会发现/var/lib/docker/overaly2或者containers下面占用比较大的时候,可以根据两种办法来进行解决磁盘的占用情况
第一个就是清理/var/lib/docker/containers/的容器
使用du -sh * 来查看哪个容器的日志比较多,来进行清理,可以使用cat /dev/null > xxxxxxxx-json.log
清理的时候可以查看df -h本地的占用已经减少了,但是这个一般情况之后需要使用k8s的sidecar模式将日志采集到es上,不然微服务的日志情况之后日志就找不到了,所以这是前提或者其他的办法去做这个容器日志的采集工作
如果这个下面的清空可能对你的磁盘没多大,没怎么减少,那么可以使用docker system df来查看docker 在本主机的多少的占用
[root@zhaocheng ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 7 0 2.346 GB 2.346 GB (100%)
Containers 0 0 0 B 0 B
Local Volumes 0 0 0 B 0 B
可以使用这个命令,这里显示了所以的容器与镜像的占用情况,还有可回收的资源,也就是没有用到的,这个容器之前创建了之后,然后不用了,但是镜像和容器的数据还有保存,所以,可以进行对不用的容器进行清理
可以使用docker container ls -a 来查看容器的状态Exited 的退出状态也就是没有运行,可以清理一下,可以使用docker rm -f xxid号
或者可以使用它自动清理的命令
[root@zhaocheng ~]# docker system --help
Usage: docker system COMMAND
Manage Docker
Options:
--help Print usage
Commands:
df Show docker disk usage
events Get real time events from the server
info Display system-wide information
prune Remove unused data
可以使用docker system prune来清理不使用的数据
-a, --all Remove all unused images not just dangling ones
-f, --force Do not prompt for confirmation
--help Print usage
[root@zhaocheng ~]# docker system prune --all
WARNING! This will remove:
-a 删除所有未使用的镜像,而不仅仅是悬挂的镜像
这个删除的话,不仅仅是没有使用的镜像,就是创建之后可能没有都会删除,所以这个最好慎用,一些重要的镜像避免删除
使用kubectl api-versions会输出很多的api版本,在k8s中怎么去选用这些api对象呢,其实k8s有条命命令可以输出对这个类型的使用的api对象kubectl explain deployment
文档里面会告诉你使用的类型
查看Linux系统语言,这是改好的
[root@hdss7-200 ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.utf-8"
LC_NUMERIC="zh_CN.utf-8"
LC_TIME="zh_CN.utf-8"
LC_COLLATE="zh_CN.utf-8"
LC_MONETARY="zh_CN.utf-8"
LC_MESSAGES="zh_CN.utf-8"
LC_PAPER="zh_CN.utf-8"
LC_NAME="zh_CN.utf-8"
LC_ADDRESS="zh_CN.utf-8"
LC_TELEPHONE="zh_CN.utf-8"
LC_MEASUREMENT="zh_CN.utf-8"
LC_IDENTIFICATION="zh_CN.utf-8"
LC_ALL=zh_CN.utf-8
只需在系统变量增加下面一行
[root@hdss7-200 ~]# tail -2 /etc/profile
export LC_ALL=zh_CN.utf-8
然后source /etc/profile
回收linux的cache的内存
[root@hdss7-12 ~]# free -m
total used free shared buff/cache available
Mem: 1738 343 253 8 1140 1124
Swap: 0 0 0
[root@hdss7-12 ~]# echo 1 > /proc/sys/vm/drop_caches
[root@hdss7-12 ~]# free -m
total used free shared buff/cache available
Mem: 1738 344 1106 8 287 1134
Swap: 0 0 0
进行对目录下的文件打包成zip格式
格式 zip -q -r 应该打成的包名字的.zip的格式 + 目标目录[root@VM_0_8_centos ~]# zip -q -r work.zip work/
查看进程的cpu/memory的百分比占用情况[root@VM_0_8_centos ~]# ps aux --sort -rss
K8s资源调度分组配置,给node节点创建分组标签
[root@k8s-master1 ~]# kubectl label node k8s-node1 team_node=node1
node/k8s-node1 labeled
并在spec下定义调度的节点
spec:
nodeSelector:
team_node: team1
containers:
查看创建的标签
[root@k8s-master1 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready <none> 4d4h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux
k8s-node1 Ready <none> 4d4h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux,team_node=node1
删除标签
[root@k8s-master1 ~]# kubectl label node k8s-node1 team_node-
node/k8s-node1 labeled
[root@k8s-master1 ~]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready <none> 4d4h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux
k8s-node1 Ready <none> 4d4h v1.16.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux
vim 命名替换文本中所有的字符
在k8s的yaml中有时候会遇到修改一些name的名称,因为微服务的名称基本都是一样的,那么对全文进行替换,使用的命令
替换所有行的内容: :%s/pod-css-orr/pod-base-common/
对所有行的内容进行替换
k8s-busybox域名解析yaml
[root@k8s-master1 ~]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- name: busybox
image: busybox:1.28.4
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
解析结果,如果解析其他的比如kube-system命名空间加个.,比如
grafana.kube-system
[root@k8s-master1 ~]# kubectl exec -it busybox-deployment8-7c88f588d5-blvgw /bin/sh
/ # nslookup kubernetes
Server: 10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local
Name: kubernetes
Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local
查看pid的命令
ps,top,pgrep,fuser,lsof
linux光标移动
ctrl+a:跳到本行的行首
ctrl+e:跳到页尾
vim光标移动到行首shift 4
vim光标移动到行尾shift 6
vim光标移动到下一行首shift 0
Linux实例磁盘空间满和inode满的问题排查方法
转载地址来自阿里云技术文档
https://help.aliyun.com/knowledge_detail/42531.html
使用NAT网关的SNAT功能,为专有网络中无公网IP的ECS实例提供访问互联网的代理服务
转载地址来自阿里云技术文档
https://help.aliyun.com/document_detail/65183.html?
不同阿里云账号下RDS MySQL实例间的数据同步
转载地址来自阿里云技术文档
https://help.aliyun.com/document_detail/26639.html?spm=a2c4g.11186623.2.53.413351bd7uZw5f#concept-26639-zh
在线扩展分区和文件系统linux系统盘
转载地址来自阿里云技术文档
https://help.aliyun.com/document_detail/111738.html?spm=a2c4g.11186623.2.7.5cd04c070zXhjz#concept-ocb-htw-dhb
记一次服务器被挖矿的经历
云服务器 ECS Linux 服务器上 CPU 使用率超过 90%,严重时可达到 100%
使用ps或者top命令查看有个恶意进程占用导致cpu飙升391%
可以看到,有一个 trace的异常进程,占用了大量 CPU 资源。该进程是服务器被后,被恶意安装的比特币挖矿程序,一般存在于 /home/ 目录下,当然这个看具体位置
了解大概情况之后,大概知道通常是后会植入挖矿程序赚取收益,该类程序占用CPU等资源,影响用户正常业务,危害较大。
处理方案
恶意 trace、minerd、tplink 进程
使用如下命令,通过 PID 获取对应文件的路径。然后,找到并删除对应的文件。
ls -l /proc/$PID/exe
其中,$PID 为进程对应的 PID 号,可以通过 ps 或者 top 获取。
使用 kill 命令关闭进程。
由于代码ak可能暴漏在github或者其他地方,建议平时修改accesskey
建议平时增强服务器的安全维护,优化代码,以避免因程序漏洞等导致服务器被。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。