温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

解决回收linux的cache缓存,设置系统语言

发布时间:2020-06-30 05:22:19 来源:网络 阅读:907 作者:wx5c1cfd6e22842 栏目:系统运维

在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%
解决回收linux的cache缓存,设置系统语言

可以看到,有一个 trace的异常进程,占用了大量 CPU 资源。该进程是服务器被后,被恶意安装的比特币挖矿程序,一般存在于 /home/ 目录下,当然这个看具体位置

了解大概情况之后,大概知道通常是后会植入挖矿程序赚取收益,该类程序占用CPU等资源,影响用户正常业务,危害较大。

处理方案
恶意 trace、minerd、tplink 进程

使用如下命令,通过 PID 获取对应文件的路径。然后,找到并删除对应的文件。

ls -l /proc/$PID/exe

其中,$PID 为进程对应的 PID 号,可以通过 ps 或者 top 获取。

使用 kill 命令关闭进程。
由于代码ak可能暴漏在github或者其他地方,建议平时修改accesskey
建议平时增强服务器的安全维护,优化代码,以避免因程序漏洞等导致服务器被。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI