• kubernetes调度器scheduler源码解析

    kubernetes调度器概述 kubernetes源码分析 命令行入口 NewConfigFactory CreateFromKeys scheduler框架 generic scheduler实例 predicates算法 priorities算法 kubernetes调度器概述 kubernetes调度器kube-scheduler在集群中体现为一个kube-scheduler进程。kub...


  • golang如何获取变量的类型:反射,类型断言

    感觉接口的理解还有些不是很清楚,强写一篇 如果某个函数的入参是interface{},有下面几种方式可以获取入参的方法: 1 fmt: import "fmt" func main() { v := "hello world" fmt.Println(typeof(v)) } func typeof(v interface{}) string { return fmt.Sprintf("%T", v) } 2 反射: import ( "reflect...


  • 不要开启tcp_tw_recycle

    TL;DR: 问题描述 定位过程 怀疑点1:网络 怀疑点2:postgre进程故障 怀疑点3:内核丢包 解决方法 深入理解 TIME_WAIT是干啥的 为什么Greenplum会开启tcp_tw_recycle 为什么不要开启tcp_tw_recycle 特殊国情 总结 TL;DR: 不要开启net/ipv4/tcp_tw_recycle ...


  • go依赖包管理工具对比

    GOPATH和GOROOT GOROOT并不是必须要设置的。 GOPATH必须要设置,但并不是固定不变的 本项目内部的依赖 管理外部的依赖包 使用GOPATH来管理外部依赖 vendor godep glide govendor golang官方dep 各依赖管理工具对比 gvt vendor的问题 ...


  • 三罐可乐带你读懂Greenplum的interconnect

    UDP报文是干啥的? 关于Greenplum查询过程 segment如何取得master的监听端口号 问题如何解决 master如何决定监听哪个UDP端口呢? 写在最后 我厂为了做Greenplum的多租户,将GP master做成了容器,跑在flannel网络里面,而GP segment跑在物理网络上。 之所以master没有跑在宿主机网络(hostnet)上,是因为GP部署会ssh localhost做一些不可描述的事情(比如生成一个id文件),如果容器的网络使...


  • 使用Jsonnet模板语言以更好的使用kubernetes

    Jsonnet基础 用Jsonnet组合Kubernetes对象 定义Kubernetes部署的模板 示例1:每个服务部署一个文件 示例2:在单个文件中组合部署 示例3:对多个环境进行子类化模板 如何为我所用 Kubernetes的编排文件支持2种格式:json和yaml,这两种格式是等价的。以RedHat的Openshift CaaS平台为例,用户会先编辑好自己的编排文件,然后丢到Openshift上去跑,这时...


  • 说说内核协议栈的端口号

    bind固定端口号 bind 0 端口号 connect时选择本地端口号 fastreuse 最后 说说端口号。内核版本2.6.32。 bind固定端口号 服务端通常bind指定端口号,例如ssh 22(tcp), ftp 21(tcp), dhcp 67(udp), dns 53(udp)。以下面这个例子来说。 package main import ( "fmt" "net" ) func listen1(str string) { ad...


  • 五步完成ssh full mesh全连接免密打通

    中间人攻击 免密打通的基本原理 full mesh全连接免密打通 第一步 横空出世 第二步 遍访群雄 第三步 纵横捭阖 第四步 去蕪存菁 第五步 平定天下 中间人攻击 ssh是一种可以防止中间人攻击的远程登录协议,通常我们用的实现是openssh。那么ssh是如何防止中间人攻击呢? 先来看下ssh登录过程。 ssh客户端连接ssh服务端,服务端将自己的公钥发给客户端 客户端用公钥加密登...


  • 代码解析Linux系统调用

    用户态是如何陷入到内核态的 内核如何分发系统调用 具体系统调用函数的实现 总结 Linux用户态进程,在使用一些内核功能的时候,是通过系统调用来完成的。本文会以一个bind动作为例,从代码上来理解整个系统调用的过程。注意kernel版本是v4.11,不同版本具体实现略有不同。 用户态是如何陷入到内核态的 以下面这个man bind的示例开始。 #include <sys/socket.h> #include <sys/un.h> #include &...


  • Linux网络栈解剖(Anatomy of the Linux networking stack)

    协议介绍 核心网络架构 系统调用接口 协议无关接口 网络协议 设备无关接口 设备驱动程序 进一步 最近和屈总伯温一起看linux协议栈,正好回忆了下14-15赛季做FTCP的时候看的一些linux network kernel的代码,找到了这篇文章,写的很好。原文为Anatomy of the Linux networking stack, From sockets to device drivers...