NOTE

shell 运维命令集合

目录 求和、求平均值 grep 显示前后命令 循环读取文件的内容 查看磁盘读写io nc 网络测试命令 变量的默认值 安装包管理 sed 命令 ansible 基本用法 nslookup 测试域名解析 ssh 配置免密登录 使用 tc 模拟网络丢包和时延 vi 复制与删除 查看文件被哪个进程占用 set -euxo pipefai...

容器share pid 导致 restart 命令卡主

在工作中发现执行 docker restart 命令重启一个容器的时候,容器卡主了,这里分析总结下原因。其结论是容器 share pid namespace 功能不完善,社区已经有 PR 修复问题。 问题复现/现象 使用下面 yaml 创建 pod,在 yaml 中配置了两个容器,并且设置了共享 pid namespace:shareProcessNamespace: true apiVe...

linux 块设备 IO 栈浅析[转载]

原文地址linux块设备IO栈浅析 块存储,简单来说就是使用块设备为系统提供存储服务。块存储分多种类型,有单机块存储,网络存储(如NAS,SAN等),分布式块存储(目前主流的如AWS的EBS,青云的云硬盘,阿里云的云磁盘,网易云硬盘等)。通常块存储的表现形式就是一块设备,用户看到的就是类似于sda,sdb这样的逻辑设备。本文主要介绍Linux块设备,对Linux的块设备I/O栈进行分析。 ...

Golang 汇编入门-从输出 HelloWorld 说起[转载]

原文地址:Go 语言汇编入门 —— 从输出 HelloWorld 说起 作者:挖坑的张师傅 链接:https://juejin.im/post/5d6c58465188251a875b169e 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 在 JVM 中,字节码可以帮我们搞清楚很多编译执行的细节, 为了搞清楚 go 语言底层的语法糖和原理,需要对底层的...

大概了解下 Golang 中的垃圾收集

本文分析的算法是根据go1.12版本,主要参考《Garbage Collection In Go》系列文章。回收过程分为四个阶段: Mark Setup - STW Marking - Concurrent Mark Termination - STW Sweeping - Concurrent Mark Setup - STW 垃圾收集开始的时候,第一件事是打开写屏障...

containerd runc docker 之间的关系

从 Docker 1.11 开始,Docker 容器运行已经不是简单的通过 Docker daemon 来启动,而是集成了containerd、runC 等多个组件。Docker 服务启动之后,我们也可以看见系统上启动了 dockerd、docker-containerd 等进程,本文主要介绍新版 Docker(1.11 以后)每个部分的功能和作用。 runC runc是由Docker公司...

理解 Golang 中的 unsafe Pointer

对于 unsafe.Pointer,在编程过程中用的不多,但是源码中经常遇到,理解 unsafe.Pointer 有助于更好的理解 Golang 的运行机制。 定义及使用 在 unsafe 包中,unsafe.Pointer 的定义为 ArbitratyType,代表任意类型,代码中的注释说这个类似起占位符的作用,我们就理解成 unsafe.Pointer 是一个可以指向任意类型的指针就可...

K8s 队列之基本 Controller 设计模式

目录 一般工作过程 1.队列声明 2.队列初始化 3.往队列里丢事件 4.启动worker 限速器(加入队列时限速) ItemExponentialFailureRateLimiter BucketRateLimiter 限速队列(延时队列+限速器) ...

K8s 队列之基本队列实现

这里的基本队列是指实现了如下接口的队列,代码路径为:client-go/util/workqueue/queue.go,区别于DelayingInterface,以及RateLimitingInterface,DelayingInterface实现延时加入队列的功能,RateLimitingInterface要配合限速器使用,实现了加入队列时的速率控制。后两者都内嵌了Interface,是基...

Golang 内存框架[转载]

本文转载自《Go 内存管理》 前言 编写过C语言程序的肯定知道通过malloc()方法动态申请内存,其中内存分配器使用的是glibc提供的ptmalloc2。 除了glibc,业界比较出名的内存分配器有Google的tcmalloc和Facebook的jemalloc。二者在避免内存碎片和性能上均比glibc有比较大的优势,在多线程环境中效果更明显。 Golang中也实现了内存分配器,原...