2020 年 2 月手记
Kubernetes
deletion timestamp
如果 Pod 的 DeletionGracePeriodSeconds
与 TerminationGracePeriodSeconds
同时存在时,哪个生效?
kubelet 代码里 DeletionGracePeriodSeconds
的优先级高。
如果 Pod 的 DeletionGracePeriodSeconds
与 TerminationGracePeriodSeconds
同时存在时,哪个生效?
kubelet 代码里 DeletionGracePeriodSeconds
的优先级高。
typed client 接收固定类型的对象,只能对固定类型对象进行操作。dynamic client 我们只要告诉它 group,version,kind 信息,传入 unstructured object,便可操作“任意类型”的对象。
https://soggy.space/namespaced-crds-dynamic-client/
https://www.oreilly.com/library/view/programming-kubernetes/9781492047094/ch04.html
node topology manager 在绑核时可以感知设备拓扑(例如 NUMA Node):
https://github.com/kubernetes/kubernetes/issues/49964
https://docs.google.com/document/d/1lSwVh2ZfJ2FeLXIeyyiNqN_hKPYpahJiwN5X5cszjOk/edit#
https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/maintenance.md
不断写入同一个 key,产生大量 revision。
可以通过 compact 和 defrag 解决。
1 | while [ 1 ]; do |
写入不同的 key。
通过删除 key 解决。
1 | for j in {1..10}; do |
https://caicloud.io/blog/57392eca8241681100000003
https://ggaaooppeenngg.github.io/zh-CN/2017/09/26/kubernetes-%E6%8C%87%E5%8C%97/
https://caicloud.io/blog/57392eca8241681100000003
https://coreos.com/blog/improving-kubernetes-scheduler-performance.html
从 client-go (无论是从 server 还是 cache)获取到的 object 的 TypeMeta 为空
1 | pod := podLister.Pods(namespace).Get(name) |
1 | GroupVersionKind{Group:"", Version:"", Kind:""} |
(kubernetes 1.14)
kube node lease 用来改善 kubelet 定时更新节点状态对 etcd 造成的压力。
https://containers.goffinet.org/k8s/kubectlget.html#what-about-kube-node-lease
https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/0009-node-heartbeat.md
https://kubernetes.io/docs/concepts/architecture/nodes/#node-controller
https://github.com/kubernetes-sigs/kubespray/blob/master/docs/kubernetes-reliability.md
PLEG (pod lifecycle event generator) 是 kubelet 中一个非常重要的模块,它主要完成以下几个目标:
本文我们通过分析 PLEG 模块的源码,来加深对 Kubernetes 的理解,也可以加速在使用过程对一些疑难问题的排查和处理,同时后期可以对一些问题源码进行优化,来解决一些 Kubernetes 本身的坑。
terraform 作为一个优秀的开源基础设施管理、构建工具,官方或第三方提供了很多 plugin 来对接各种云平台(IaaS)。然而在我们平时开发和测试过程中,需要使用内部的 IaaS 服务频繁创建和删除 VM,而目前人工操作的方式比较费时费力,且没有现成的 plugin 可以使用。为了更方便地利用 terraform 工具来对内部 IaaS 资源进行管理和操作,我们决定自己开发一个 terraform plugin。
Update your browser to view this website correctly.&npsb;Update my browser now