• 使用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...


  • 小玩意:东芝FlashAir无线SD存储卡,单反相机的好伙伴

    今年春节过后,把单反相机从老家带了回来。相机是多年前买的,放在老家好几年了,我哥说别放家里了,都快长毛了。 前几天有次傍晚背着相机去江边玩,拍了张照片。 拍完了想发出去,但是这个相机本身没有WiFi功能,照片只能回家倒到电脑,然后再从电脑倒到手机里才行。那时早就意兴阑珊了。 其实在无线技术如此成熟的今天,万物早已互联,只要给SD卡装个WiFi AP就可以了,像我买的东芝FlashAir无线SD存储卡就是这种。 下面我要开始盗图了。 图是JD扒下来的。 我买的是32GB的(不包含图上...


  • 一个可以查看linux当前缓存了哪些大文件的小工具

    linux用户可能经常遇到的一个问题是,机器有16GB内存,开的进程也不多,但是剩下的free内存并不多,大部分都被buff/cache掉了(比如下面我的PC),但是cache了些什么东西并不清楚,linux也没有个命令能查看。 $ free -h total used free shared buff/cache available Mem: 15G 6.4G 2.3G ...


  • centos上docker使用devicemapper的注意点:小心磁盘满了

    devicemapper的经验 再说点题外话 再再说点题外话 devicemapper的经验 Docker需要union fs来做容器的存储,各个发行版不一样,ubuntu上使用AUFS,centos上默认使用devicemapper(关于这俩的对比,可以参加infoQ的文章)。AUFS据说因为代码写的太糟糕,一直被linus拒绝接纳进内核,所以在Redhat系列上,需要留神,比如我们就有几次遇到了这么一个问题。 在centos 7.2上,默认配置安装docker,当运行的doc...


  • 在kubernetes上使用flume TAILDIR收集日志到HDFS上

    需求分析 实现细节 需求分析 我们的应用以前直接跑在物理机上,应用日志使用flume ng 的exec方式(即tail -F)收集后,写到HDFS上。如下图: 在flume.conf中定义sources、channels、sinks: agent1.sources = source1 agent1.channels = ch1 agent1.sinks = sink1 agent1.sources.source1.type = exec agent1.sources.sour...


  • 杀死一只小鲸鱼

    docker容器退出会收到哪些信号? docker stop docker kill docker rm -f 应用应该处理哪个信号? 应用是怎么接收到信号的 之所以会有这个主题,是因为这几天我给mysql集群前置了一个keepalived,为了方便也做成了docker镜像,丢给k8s来部署。但实际测试时发现,当停止或者删除keepalived容器后,网卡上还残余之前keepalived下发的virtual ip。 直...