CentOS 7 不收集日志 /var/log/messages 处理
之前一直有日志生成,最后一次轮替日志之后,日志文件都为空,/var/log/message, /var/log/secure 等都不记录了。
背景
重启机器:reboot 无效
重启日志: systemctl start rsyslog 无效
怀疑空间不足,删除/var/log/messages,重新运行rsyslog 无效
重装下rsyslog,于是yum reinstall rsyslog,重新运行rsyslog 无效
解决找到配置文件 /etc/rsyslog.conf修改如下:
解注释:#$ModLoad imklog # reads kernel messages (the same are read from journald)修改为:$ModLoad imklog # reads kernel messages (the same are read from journald)增加注释:$OmitLocalLogging on修改为:#$OmitLocalL ...
连接一个不存在的 IP 地址,会发生什么
概述分享两个题,都是基于场景问的网络问题。
Q1:客户端连接一个不存在的 IP 地址,会发生什么?
Q2:客户端连接一个存在的 IP 地址但是端口不存在,会发生什么?
PS:这里的「连接」指的是 TCP 连接。
结论Q1:客户端连接一个不存在的 IP 地址,会发生什么?这个问题要分两种情况来思考,不同的情况得到的结论是不同的。
第一个情况:目标 IP 地址和客户端的 IP 地址是同一个局域网(网络号相同)。第一种情况,客户端无法发出 SYN 报文,主要卡在数据链路层。
因为目标地址不存在 IP 地址,客户端的内核在发 arp 请求的时候,广播询问这个目标 IP 地址是谁的,由于网络中不存在该目标 IP 地址,所以没有设备应答客户端的 arp 请求。
由于客户端无法拿到目标设备的 MAC,这样就没办法组装 MAC 头的信息,所以 SYN 报文无法发送出去。
第二个情况:目标 IP 地址和客户端的 IP 地址不在同一个局域网(网络号不同)。第二种情况,客户端会先将 SYN 报文发给路由器,然后路由器会继续转发。
由于目标 IP 地址是不存在的,该 SYN 报文会在网络中消亡, ...
安装prometheus
安装git clone https://github.com/prometheus-operator/kube-prometheus.gitcd kube-prometheus# Create the namespace and CRDs, and then wait for them to be availble before creating the remaining resourceskubectl create -f manifests/setup# Wait until the "servicemonitors" CRD is created. The message "No resources found" means success in this context.until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; donekubectl create -f manifests/
卸载kubectl d ...
内核参数配置
系统内核参数
系统内核参数配置路径/usr/lib/sysctl.d/ # 类似于/etc/sysctl.d/,但通常用于系统级别的配置,可能包含由发行版维护的默认配置/usr/local/lib/sysctl.d/*.conf/etc/sysctl.d/ # 里面可以放置多个.conf文件,每个文件都可以包含一组内核参数设置。/etc/sysctl.conf # 最常用的内核参数配置文件,用于持久化地设定内核参数。/lib/sysctl.d/*.conf/run/sysctl.d/ # 这个目录中的文件在系统启动时会被读取和应用,主要用于临时覆盖其他位置的设置/proc/sys/ # 这个目录包含了当前内核参数的运行时状态,可以直接通过文件系统接口修改参数,但修改后的值在重启后不会保留
常用命令sysctl -a # 显示所有可用的内核参数变量和值sysctl fs.file-max # 查看指定参数的值sysctl -w fs.file-max=1000000 # 设定指定参数的值sysctl -p /some/path/t ...
精简 Docker 镜像
精简 Docker 镜像
精简镜像的好处
减少构建时间。
减少磁盘使用量。
减少下载时间,加快容器启动速度,在需要快速扩容的场景下显得尤为重要。
降低带宽压力。在大规模扩容的场景下,大量镜像并发拉取,镜像仓库或任意节点达到带宽瓶颈都会影响扩容速度,精简的镜像会降低带宽压力,从而降低达到带宽瓶颈的概率和时长。
提高安全性,减少攻击面积。无用的依赖少,从而大大减少被攻击目标。
使用精简的基础镜像alpineAlpine一个基于 musl libc 和 busybox、面向安全的轻量级 Linux 发行版,压缩体积只有 3M 左右,很多流行的镜像都有基于 alpine 的制作的基础镜像。
scratchscratch 是一个空镜像,如果你的应用是一个包含所有依赖的二进制(不依赖动态链接库),可以使用 scratch 作为基础镜像,这样镜像的体积几乎就等于你 COPY 进去的二进制的体积。
示例:
FROM scratchCOPY app /appCMD ["/app"]
busybox如果你希望镜像里可以包含一些常用的 Linux 工具,busybox 镜像是个不 ...
overlayfs tmpfs 讲解--容器
文件系统Linux 的文件系统遵循 HFS 设计,有如下实现:
Ext (Extended Filesystem), Ext2, Ext3, Ext4JFS (Journaling Filesystem)ReiserFSXFS (Extent Filesystem)Btrfs (B Tree Filesystem)Swap
mountunix 有树状的文件系统,根节点是 /,每个节点可能来自不同的 devices。mount 将 device 上的某文件系统放在树的某节点上。
标准格式是 mount -t type device dir,会把类型为type的device挂载到dir目录上,之前dir目录的内容还在而只是被隐藏了。
如果 mount /dir 则会在 /etc/fstab 中找挂载点
也可以 mount –target /mountpoint
mount [-l] [-t type] 会列出已挂载的设备
通过更改 /etc/fstab 文件可以挂载,内容如下:
Device: usual ...
hexo-deployer-aws-s3
hexo-deployer-aws-s3
安装插件# 进入到 hexo 主目录,执行如下命令npm install hexo-deployer-aws-s3 --save-dev
配置 _config.yml# 配置 hexo 项目中的 _config.yml 文件deploy: type: aws-s3 # The name of this plugin region: us-east-1 # The region where your bucket is located bucket: my-bucket # The name of your bucket prefix: blog-resources # The s3 key prefix
配置 aws key# mac 系统将对应的 key 配置到 ~/.zprofile 中export AWS_ACCESS_KEY_ID=xxxxexport AWS_SECRET_ACCESS_KEY=xxxxxxxx
部署到 s3hexo deploy
参 ...
K8s 内存泄漏 runc、kubelet 编译方法
K8s 内存泄漏 runc、kubelet 编译方法准备一台和生产节点相同内核版本的机器# 安装 go # 下载地址: https://golang.google.cn/dl/# 也可以直接 yum 安装,连带 git 一起安装了 下载源码时会用到yum install golang git -y# 安装编译工具和依赖包yum -y install gcc gcc-c++ kernel-devel libseccomp-devel
runc 编译有两种方法下载runc的代码
# 通过go工具下载# runc的源码自动下载到$GOPATH/src/github.com/opencontainers/runc目录下# go get github.com/opencontainers/runc# 直接通过git工具克隆代码cd $GOPATH/src/github.com/opencontainersgit clone https://github.com/opencontainers/runc# 切换到对应的版本cd runcgit checkout v1.0.0-rc9# 编译 r ...
lvm 删除正在使用的逻辑卷
1报错[root@SBackup ~]# lvremove /dev/vg_storage1/lei Logical volume vg_storage1/lei in use.
查看是否被占用[root@SBackup ~]# lvdisplay /dev/vg_storage1/lei |grep open # open 1 --被打开了 [root@SBackup ~]# fuser -kuc /dev/vg_storage1/lei/dev/vg_storage1/lei: 1726(root) --也可以看到进程号1726的root用户正在使用
杀掉该进程ps -ef | grep 1726 kill 1726
再次删除[root@SBackup ~]# lvremove /dev/vg_storage1/leiDo you really want to remove active logical volume lei? [y/n]: y Logical volume "lei" successfull ...
lvm
lvm 示意图
依次为:disk -> partition -> PV -> VG -> LV -> fs,也即磁盘->分区->物理卷->卷组->逻辑卷->文件系统。
LVM 主要构成
物理存储介质 (PM, physical media):LVM 存储介质可以是分区、磁盘、RAID 阵列或 SAN 磁盘。
物理卷 (PV, physical volume):物理卷是 LVM 的基本存储逻辑块,但与基本的物理存储介质(如分区、 磁盘等)比较,却包含有与 LVM 相关的管理参数,创建物理卷可以用磁盘分区,也可以用磁盘本身。磁盘设备必须初始化为 LVM 物理卷,才能与 LVM 结合使用。
卷组 (VG, Volume Group):LVM 卷组由一个或多个物理卷组成。
逻辑卷 (LV, logical volume):LV 建立在 VG 之上,可以在 LV 之上建立文件系统。
物理范围 (PE, physical extents):PV 物理卷中可以分配的最小存储单元,PE 的大小是可以指定的,默认为 4MB。
逻辑范围 ( ...