我们很高兴地宣布Kubernetes 1.11,我们2018年的第二次发布!
今天的发布不断推进Kubernetes的成熟性、可扩展性和灵活性,标志着团队在过去一年中努力工作的功能取得了重大进展。这个最新版本是网络关键特性的结晶,为SIG-API Machinery和SIG-Node提供了两个主要功能用于beta测试,并继续增强存储功能,这是过去两个版本的焦点。此版本中的功能使得可以将任何基础架构、云或内部部署插入到Kubernetes系统中。
这个版本中值得注意的是增加了两个备受期待的功能:基于IPVS的群集内负载平衡和CoreDNS作为群集DNS附加选项,这意味着增加了生产环境应用程序的可扩展性和灵活性。 官方博客:https://kubernetes.io/blog/2018/06/27/kubernetes-1.11-release-announcement/
转载自 https://mp.weixin.qq.com/s/lwxwlW0jaui5Njz4x27Tyg
今天给到大家介绍一下 Client-go 中的一个非常关键的工具包 Informer。 Informer 内部实现极其复杂,详细介绍的文章也很少,很多人反馈比较难用。但不得不承认它也是一个设计精良、安全可靠的组件,值得我们去一探究竟。
Informer 是 Client-go 中的一个核心工具包。在 Kubernetes 源码中,如果 Kubernetes 的某个组件,需要 List/Get Kubernetes 中的 Object,在绝大多 数情况下,会直接使用 Informer 实例中的 Lister()方法(该方法包含 了 Get 和 List 方法),而很少直接请求 Kubernetes API。Informer 最基本 的功能就是 List/Get Kubernetes 中的 Object。
如下图所示,仅需要十行左右的代码就能实现对 Pod 的 List 和 Get。
Client-go 的首要目标是满足 Kubernetes 的自身需求。Informer 作为其中的核心工具包,面对 Kubernetes 极为复杂业务逻辑,如果仅实现 List/Get 功能,根本无法满足 Kubernetes 自身需求。因此,Informer 被设计为一个灵活而复杂的工具包,除 List/Get Object 外,Informer 还可以监听事件并触发回调函数等,以实现更加复杂的业务逻辑。
为了让 Client-go 更快地返回 List/Get 请求的结果、减少对 Kubenetes API 的直接调用,Informer 被设计实现为一个依赖 Kubernetes List/Watch API 、可监听事件并触发回调函数的二级缓存工具包。
使用 Informer 实例的 Lister() 方法, List/Get Kubernetes 中的 Object 时,Informer 不会去请求 Kubernetes API,而是直接查找缓存在本地内存中的数据(这份数据由 Informer 自己维护)。通过这种方式,Informer 既可以更快地返回结果,又能减少对 Kube
kind: ConfigMap
apiVersion: v1
metadata:
name: example-config
namespace: default
data:
example.property.1: hello #key-value形式,key规则必须满足dns域名规则。value为字符串。
example.property.2: world
example.property.file: |- #配置文件使用方式,直接把文件内容放入value即可
property.1=value-1
property.2=value-2
property.3=value-3
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: example-config #需要使用的ConfigMap名称,必须已经存在
key: example.property.1 #对应ConfigMap data 的key
restartPolicy: Ne