Blog

  • kubernetes权威指南读后总结

    k8s 的优点:

    1. 开发和运维的高手编写,产品思维好,贴近需求。掌握一些网络,linux, iptables,docker 知识的工程师就能搭起来。就像早期的 linux, HTTP 一样有缺点,但最核心功能简单高效;
    2. k8s 将自己打造成一个编排容器的平台,把管理容器的部分抽象成 Container Runtime Interface, CRI。编排容器不只可以是 docker,还可以是 rkt;
    3. 把自己抽出来当一个平台,计划将自建机房,云供应商都纳入管理,跨机房迁移简单。感觉随时可以对 docker 和 一些云服务商进行降维打击;
    4. 配置简单上线就简单,用的人就多。

    如果使用 k8s,可能有几个阶段就能完全接入:

    1. Deployment 功能,结合自己的 CI/CD 。不管单体应用还是微服务,自动解决大部分无状态应用上线变更需求,同时做好监控告警和日志收集;
    2. 使用 Service + dns 功能,把应用包装成一系列有 load balancer 和 私有域名的微服务,基本解决无状态应用上线;
    3. Jobs 功能,定时处理任务;

    上面问题解决后,可以腾出很多时间玩点高级的:

    4. Stateful Set + 存储 + dns 提供有状态的服务,可配置集群 redis, etcd, cassandra, mongodb等;
    5. Ingress nginx 提供四层 七层入口;
    6. 环境变量植入 容器内部访问 apiserver,基于 apiserver 做逻辑功能;
    7. namespace 隔防,网络隔离;
    8. 资源配额,精心规划 requests limits 设置,提高资源利用率;
    9. Helm 管理这些 k8s 应用配置,基础设施即代码。

  • docker 网桥

    Docker 创建出来的每一个容器,都会创建一个虚拟的以太网设备(Veth 设备对),其中一端关联到网桥上,另一端使用 Linux 的网络命名空间技术,映射到容器内的 eth0 设备。

    以 CentOS 为例,安装工具

    yum install -y bridge-utils

    查看桥接

    brctl show
  • vim 获取当前目录及文件

    编辑文件时,需要经常知道当前目录及文件

    working directory

    pwd 
    

    打印当前文件

    :echo @%
    
  • vim 光标跳到首末字符

    跳到最后一个非空格字符

    g_          To the last non-blank character of the line and
                [count - 1] lines downward |inclusive|. {not in Vi}
    

    跳到第一个非空格字符

    ^
  • k8s 更新 docker image

    如果 docker tag 不一样

    kubectl set image deployment/myapp myapp=10.10.10.222:5000/myapp:v1.0.1 -n web
    

    如果 docker tag 一样,image digest 不一样,则更新 image 使用 digest

    查看 digest

    docker images --digests

    更新 image

    kubectl set image deployment/myapp myapp=10.10.10.222:5000/myapp@sha256:f9d3c70ca6eb35bf33077f308dc526472d21d80b0234121bc93ada58bce99ee9 -n web
  • govendor 使用

    install

    go get -u github.com/kardianos/govendor
    

    初始化

    govendor init
    govendor fetch +outside