摘要: 一、channel使用存在的不方便地方 1、在不改变channel自身状态的情况下,无法获知一个channnel是否关闭。 2、关闭一个已经关闭的channel,会导致panic。因此,如果关闭channel的一方在不知道channel是否关闭状态时就去贸然关闭channel是件很危险的事。 3、向 阅读全文
posted @ 2022-12-02 14:37 李大鹅 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 介绍 假设一个Nginx的QPS(服务器一秒内处理的请求数)上限为500,如果外部访问的QPS达到了600,为了保证服务质量,必须扩容一个Nginx来分摊请求。 在Kubernetes环境中,如果外部请求超过了单个Pod的处理极限,我们则可以增加Pod数量来达到横向扩容的目的。 假设我们的服务是无状 阅读全文
posted @ 2022-05-19 16:06 李大鹅 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 介绍 在controller-runtime中使用一个 Manager 的接口来管理 Controller,除了控制器其实还可以管理A dmission Webhook,也包括访问资源对象的client、cache、scheme等,如下图所示: Manager 如何使用 首先我们来看看control 阅读全文
posted @ 2022-05-17 19:10 李大鹅 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 介绍 controller-runtime框架实际上是社区帮我们封装的一个控制器处理的框架,底层核心实现原理和我们自定义一个controller控制器逻辑是一样的,只是在这个基础上新增了一些概念,开发者直接使用这个框架去开发控制器会更加简单方便。 包括kubebuilder、operator-sdk 阅读全文
posted @ 2022-05-16 18:29 李大鹅 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 介绍 我们可以使用code-generator 以及controller-tools来进行代码自动生成,通过代码自动生成可以帮我们自动生成 CRD 资源对象,以及客户端访问的 ClientSet、Informer、Lister 等工具包,接下来我们就来了解下如何编写一个自定义的控制器。 CRD定义 阅读全文
posted @ 2022-05-12 17:02 李大鹅 阅读(417) 评论(0) 推荐(1) 编辑
摘要: 介绍 在上一篇code-generator简单介绍中重点介绍了如何使用code-generator来自动生成代码,通过自动生成的代码可以帮助我们像访问k8s内置资源那样来操作我们的CRD,其实就是帮助我们生成ClientSet、Informer、Lister等工具包。 但是我们需要自己定义types 阅读全文
posted @ 2022-05-12 11:11 李大鹅 阅读(968) 评论(0) 推荐(1) 编辑
摘要: 代码生成器 介绍 client-go为每种k8s内置资源提供了对应的clientset和informer。那么我们要监听和操作自定义资源对象,应该如何做呢? 方式一:使用client-go提供的dynamicClient来操作自定义资源对象,当然由于dynamicClient是基于RESTClien 阅读全文
posted @ 2022-05-11 22:28 李大鹅 阅读(1903) 评论(0) 推荐(2) 编辑
摘要: 介绍 Custom Resource Define 简称 CRD,是 Kubernetes(v1.7+)为提高可扩展性,让开发者去自定义资源的一种方式。 CRD 资源可以动态注册到集群中,注册完毕后,用户可以通过 kubectl 来创建访问这个自定义的资源对象,类似于操作 Pod 一样。不过需要注意 阅读全文
posted @ 2022-05-11 14:12 李大鹅 阅读(470) 评论(0) 推荐(1) 编辑
摘要: 使用client-go实现自定义控制器 介绍 我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort和LoadBalancer,但是这两种方式,都有一定的缺点: NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就愈发明显。 LoadB 阅读全文
posted @ 2022-05-11 10:21 李大鹅 阅读(528) 评论(0) 推荐(1) 编辑
摘要: 介绍 Kubernetes控制器是一个主动调谐的过程,它会watch一些对象的期望状态,也会watch实际的状态,然后控制器会发送一些指令尝试让对象的当前状态往期望状态迁移。 控制器最简单的实现就是一个循环: for{ desired := getDesiredState() current := 阅读全文
posted @ 2022-05-10 22:32 李大鹅 阅读(242) 评论(0) 推荐(1) 编辑