Jusene's Blog

Jusene's Blog

There are more ways than difficulties

慢慢理解 kubernetes list watch

List Watch

List-Watch是k8s统一的异步消息处理机制,在k8s内部的消息通信中,如何保障消息的实时性,客户端(kubelet,kube-scheduler…)轮询apiserver,或者apiserver主动通知客户端。如果轮询,大量的worker节点轮询apiserver,压力太大,而且实时性差;如果apiserver主动发送http请求,apiserver如何保障消息准确送达,而且这种短时连接势必造成socket通信接口频繁创建销毁,服务器压力骤升。

kustomize kubernetes动态配置管理

kustomize

在kustomize出现之前,一直使用helm来管理kubernetes应用管理,这需要学会helm的特定配置语言(go template),而kustomize的出现就是为了改进这一现象。在kubernetes v1.14之后,kustomize成为kubectl内置子命令。

记一次压测服务器丢包故障排错 nf_conntrack

背景

测试部门压测,线上服务都是采用kubernetes服务部署,汇报压测数据上不去,开始尝试调整pod数量来解决,而结果并没有改变,开始排查服务器,服务器压力都不大,开始排查日志,dmesg,其中一条error引起了注意。

Kubernetes flannel网络解析

Flannel网络

Flannel是CoreOS团队针对kubernetes设计的覆盖网络(Overlay Network)工具,Flannel通过给每台宿主机分配一个子网为容器提供虚拟网络,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。

flannel网络backend解决方案:

  • hostgw 直接路由,适合局域网,性能好,仅适合二层可达的局域网
  • vxlan 是flannel推荐的方式,需要通信的网络设备支持vxlan,具备很好的跨局域网通信,但使用了隧道封装,性能较差
  • udp 改方式于vxlan很类似,对ip层网络进行封装,通常用于调试环境或者不支持vxlan协议的网络环境
云原生 Scaffold 简化Kubernetes应用开发
SkaffoldSkaffold是一个命令行工具,可促进kubernetes本地应用程序的持续开发。Skaffold处理构建,推送和部署应用程序的工作流。 下载skaffold: https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 https://jusene.gitee.io/tools/skaffold/skaffold-linux-amd64 快速开始 创建一个Dockerfile 1FROM alpine23CMD ["sleep", "30...
Go微服务开发 Go-kit

Go-kit

Go-kit是一套强大的微服务开发工具集,解决分布式开发过程中所遇到的问题,使用transport、endpoint和service三层结构组织项目:

  • transport层,指定项目提供服务的方式,比如http或者grpc等
  • endpoint层,负责接受请求并返回响应,对于每一个服务接口,endpoint层都使用一个抽象的endpoint来表示
  • service层,提供具体的业务实现接口,endpoint层中的endpoint通过调用service层的接口方法处理请求
服务网格

服务网格

服务网格是指专注处理服务间通信的基础设施,它负责在现代云原生组成的复杂拓扑中可靠地传递请求

治理模式:除了处理业务逻辑的相关功能外,每个微服务还必须实现此前单体应用模型中用于服务间通信的基础设施,甚至还包括分布式应用程序之间的通信环境中应该实现的其他网络功能,例如熔断、限流、应用跟踪、指标采集、服务发现和负载均衡等

JVM GC and GC tuning(公开课笔记)

什么是垃圾

  1. 没有任何引用指向的一个对象或多个对象(循环引用)
  2. 申请、释放内存
  • C语言: malloc,free
  • C++: new, delete
  • Java: new, 自动释放
  1. 自动回收与手动回收缺点
  • 自动回收: 编程简单,系统不容易出错
  • 手动回收: 可能出现忘记回收(内存泄漏),多次回收(回收有用的的数据)
avatar
Jusene
纸上得来终觉浅 绝知此事要躬行