runc 启动容器过程分析(附 CVE-2019-5736 实现过程)

环境 OCI runtime spec 地址:https://github.com/opencontainers/runtime-spec runc 地址:https://github.com/opencontainers/runc/ Commit:f414f497b50a61750ea3af9fccf998a3db687cea 系统版本:Fedora Release 28 内核版本:4.17.9-200.fc28.x86_64 runc 介绍 runc...

22 minute read

从源码部署基于 cri-o 的 Kubernetes 集群

系统环境 系统版本:Fedora Release 28 内核版本:4.17.9-200.fc28.x86_64 从源码构建必要组件 安装依赖和工具: $ dnf install git go make libseccomp-devel gpgme-devel...

2 minute read

在 OSX 上安装最小化 Linux 开发环境

准备工具 Virtual Box 下载地址:https://www.virtualbox.org/wiki/Downloads Fedora Server 下载地址:https://getfedora.org/zh_CN/server/download/ 在 OSX 下安装一个无桌面的 Linux 开发环境。主要完成三个目标: 剪贴板共享 文件共享 使用...

1 minute read

Centos 7 systemd 死锁问题分析

问题分析 系统信息: KERNEL: /lib/debug/lib/modules/3.10.0-693.el7.x86_64/vmlinux DUMPFILE: ./systemd-hang-c221v38/vmcore [PARTIAL DUMP] CPUS: 4 DATE: Mon Jun 11 14:23:55...

11 minute read

Kubernetes HPA 弹性伸缩规则

基本规则: 每隔 30 秒循环检查一次所有 HPA(间隔可配置) 第一次自动伸缩完成后,记录伸缩时间 如果需要扩容,那么至少与上次伸缩时间间隔 3 分钟(可配置) 如果需要缩容,那么至少与上次伸缩时间间隔 5 分钟(可配置) 伸缩计算方法: 如果目标资源(比如 Deployment)的...

1 minute read

Golang 的启动过程分析

系统环境 系统版本: Fedora Release 25 内核版本:4.12.8-200.fc25.x86_64 GO: 1.10.1 linux/amd64 从二进制中查找 Entry Point 首先编译一个 go 的二进制程序(此处我编译的是...

3 minute read

Golang runtime.getg() 的实现

系统环境 系统版本: Fedora Release 25 内核版本:4.12.8-200.fc25.x86_64 GO: 1.8.3 linux/amd64 runtime.getg() 这个函数用于获取当前正在执行的 goroutine 的信息(/usr/local/go/src/runtime/stubs.go#21)。 // getg...

1 minute read

使用 QEMU 和 GDB 调试 Linux 内核 v4.12

系统环境 系统版本: Fedora Release 25 内核版本:4.8.6-300-fc25.x86_64 QEMU:2.7.1-6.fc25 GDB:7.12-24.fc25 GCC: 6.2.1 MAKE: 4.1 编译内核 内核下载地址(目前最新版本为:v4.12-rc7): git...

2 minute read