ZWEI

Time flies.

BCC开发框架部署

安装部署

操作系统版本:ubuntu18.04 64位;
内核版本:Linux vm192-168-0-90 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux;

阅读全文 »

前言

calico团队在3.13版本引入了eBPF,这个新的dataplane与传统的linux dataplane有哪些区别呢?

  • 它可以扩展到更高的吞吐量。
  • 每个GBit使用更少的CPU。
  • 它具有对Kubernetes服务的本机支持(无需kube-proxy),该支持:
    • 减少服务数据包的第一个数据包延迟。
    • 一直保留到外部主机的外部客户端源IP地址。
    • 支持DSR(直接服务器返回),以实现更高效的服务路由。
    • 与kube-proxy相比,使用更少的CPU来保持数据平面同步。
阅读全文 »

前言

最近在开发的ingress-controller组件,副本是有状态服务。每个副本将收到的ingress事件进行解析,然后与slb同步。如果同时多个副本运行,势必会造成对slb访问的混乱。因此,同一时刻,只能有一个副本真正在工作。但是,还需要多副本部署方式来保证高可用。
为了解决这个问题,本组件参考kube-scheduler、kube-controller-manager等组件的实现方式,也利用到client-go/tools/leaderelection的选主机制,保证只有leader处于工作状态,并定时进行leader的重新选举或续租。当leader挂掉之后,从其他节点选举新的leader以保证组件正常工作。

阅读全文 »

前言

当我们在制作docker镜像时,难免会担心镜像的大小,因为,很容易引入一些冗余的信息、文件等。
本文要介绍的就是一种开源的镜像瘦身工具—docker-slim

阅读全文 »

Kubernetes集群中添加新的调度规则

本文介绍第三种方法。这种方法主要用于需要对非标准Kubernetes调度程序直接管理的资源进行调度决策的场景。扩展程序帮助对这类资源进行调度决策。(注意这三种方式不是互斥的)

有三种办法可以再Kubernetes集群中添加新的调度规则(预选和优选规则):

  1. 添加规则到kube-scheduler源码并重新编译部署, 参考此文档
  2. 实现自定义的调度程序,它可以代替或与标准的kubernetes调度程序同时运行在集群中
  3. 实现一个调度扩展程序,kubernetes 标准调度程序会在进行最后的调度决策前调用它
阅读全文 »

eBPF是什么?

BPF(Berkeley Packet Filter) 提供了强大的网络包过滤规则,可以确定应该检查哪些流量、忽略哪些流量等,而内核近几年发展的 Extended BPF, eBPF 实际上将应用范围,处理效率进行了更新。通过一个内核内置的字节码虚拟机,完成数据包过滤、调用栈跟踪、耗时统计、热点分析等等高级功能。

阅读全文 »

获取现有etcd集群状态

1
ETCDCTL_API=3 etcdctl --endpoints=33.41.0.187:3379 -w table endpoint status --cluster #查看集群leader 节点
阅读全文 »

Etcd 维护

Etcd 集群少不了日常维护来保持其可用性。这些运维操作一般都是自动化且期间 Etcd 不会停止对外服务,或者严重影响 Etcd 集群的性能。

所有的运维管理都在操作 Etcd 的存储空间。存储空间的配额用于控制 Etcd 数据空间的大小,如果 Etcd 节点磁盘空间不足了,配额会触发告警,然后 Etcd 系统将进入操作受限的维护模式。为了避免存储空间消耗完导致写不进去,应该定期清理 key 的历史版本。在清理 Etcd 节点存储碎片之后,存储空间会重新进行调整。最后,定期对 Etcd 节点状态做快照备份,以便在错误的运维操作引起数据丢失或数据不一致时进行数据恢复。

阅读全文 »

nginx 日志打印响应时间 request_time 和 upstream_response_time

设置log_format,添加request_time,$upstream_response_time,位置随意
1
2
3
4
5
log_format  main  '"$request_time" "$upstream_response_time" $remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';
阅读全文 »
0%