2020 年 1 月手记

Read more

2019 年 10 月手记

Kubernetes

etcd 运维文档

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/maintenance.md

etcd 压测

不断写入同一个 key,产生大量 revision。
可以通过 compact 和 defrag 解决。

1
2
3
4
while [ 1 ]; do
dd if=/dev/urandom bs=1024 count=1024 | ETCDCTL_API=3 ./etcdctl --endpoints=https://10.0.2.15:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key put /test || break
done

写入不同的 key。
通过删除 key 解决。

1
2
3
for j in {1..10}; do
dd if=/dev/urandom bs=1024 count=1024 | ETCDCTL_API=3 ./etcdctl --endpoints=https://10.0.2.15:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key put /test/key/${j} || break
done
Read more

2019 年 8 月手记

Kubernetes

object GroupVersionKind is empty

问题

从 client-go (无论是从 server 还是 cache)获取到的 object 的 TypeMeta 为空

1
2
3
pod := podLister.Pods(namespace).Get(name)
gvk := pod.GetObjectKind().GroupVersionKind()
fmt.Printf("%#v\n", gvk)
1
GroupVersionKind{Group:"", Version:"", Kind:""}

(kubernetes 1.14)

Read more

Kubelet PLEG 源码解析

PLEG (pod lifecycle event generator) 是 kubelet 中一个非常重要的模块,它主要完成以下几个目标:

  1. 从 runtime 中获取 pod 当前状态,产生 pod lifecycle events
  2. 从 runtime 中获取 pod 当前状态,更新 kubelet pod cache

本文我们通过分析 PLEG 模块的源码,来加深对 Kubernetes 的理解,也可以加速在使用过程对一些疑难问题的排查和处理,同时后期可以对一些问题源码进行优化,来解决一些 Kubernetes 本身的坑。

Read more

二叉树两个节点之间的最大距离

题目

给定一个二叉树,求它两个节点之间的最大距离。

比如二叉树:

1
2
3
4
5
    1
/ \
2 3
/ \
4 5

的最大距离为 3。

Read more

有序数组的不同绝对值个数

题目

给定一个有序数组,求它的元素不同的绝对值个数。

比如

1
[-3, -1, 0, 0, 1, 1, 2, 5]

返回

1
5
Read more

从零开始实现一个 terraform plugin

terraform 作为一个优秀的开源基础设施管理、构建工具,官方或第三方提供了很多 plugin 来对接各种云平台(IaaS)。然而在我们平时开发和测试过程中,需要使用内部的 IaaS 服务频繁创建和删除 VM,而目前人工操作的方式比较费时费力,且没有现成的 plugin 可以使用。为了更方便地利用 terraform 工具来对内部 IaaS 资源进行管理和操作,我们决定自己开发一个 terraform plugin。

Read more
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×