k8s
文章平均质量分 96
kubernetes
CoreDump丶
一枚学生党
展开
-
Kubernetes(K8S)学习笔记
Kubernetes是一个可移植的、可扩展的、开源的平台,用于管理容器化的工作负载和服务,它促进了声明式配置和自动化。它有一个庞大的、快速增长的生态系统。Kubernetes的服务、支持和工具可以广泛使用。Kubernetes这个名字源于希腊语,意思是舵手或飞行员。K8s作为一个缩写词,是计算“K”和“s”之间的八个字母的结果。谷歌于2014年开放Kubernetes项目。Kubernetes结合了谷歌超过15年的大规模运行生产负载的经验,以及来自社区的最佳品种的想法和实践。 传统部署时代(Traditio原创 2022-11-01 20:20:02 · 1433 阅读 · 1 评论 -
k8s调度器扩展(Scheduler Framework)、源码编译及部署
因为研究的需要,需要对K8S的调度器进行扩展,本文主要讲解了k8s调度器扩展的一个流程,其中包含源码修改、源码编译、调度器配置以及部署和本人所踩的一些坑,使用的k8s的版本为1.23.1原创 2023-04-13 20:10:27 · 1970 阅读 · 3 评论 -
k8s编程operator实战之云编码平台——⑤项目完成、部署
截至目前,云编码平台的基本功能已经实现了。使用该平台,我们可以根据空间模板来创建出一个云开发环境。对于每个用户来说,允许存在的工作空间最大数量为20个,允许同时启动的工作空间数量为1个。用户的代码数据以及安装的插件都是可以保存下来的。原创 2023-03-03 15:42:07 · 2286 阅读 · 4 评论 -
k8s编程operator——(4) kubebuilder & controller-runtime源码分析
在本章中将会介绍k8s operator开发的脚手架kubebuilder和其生成的代码依赖的controller-runtime原创 2022-12-12 14:57:50 · 1495 阅读 · 0 评论 -
k8s编程operator实战之云编码平台——④web后端实现
在前两章中分别实现了k8s controller和后端pod的访问。通过controller可以实现code-server容器的创建、删除以及状态维护等,通过openresty可以实现后端pod的动态反向代理。接下来将会实现web后端,使用的`web框架为Gin`;`mysql驱动为sqlx`;`redis驱动为go-redis`;`以及grpc`。原创 2022-12-15 21:09:45 · 1171 阅读 · 0 评论 -
k8s编程operator实战之云编码平台——③Code-Server Pod访问实现
在上一节中实现了controller的逻辑,可以通过grpc来创建、删除工作空间以及查询信息。接下来要实现的就是如何访问到工作空间,我们就采用反向代理的方式,反向代理服务器就使用nginx。 openresty是一个基于nginx和luajit的web平台,我们可以通过它来实现动态的反向代理。接下来将会逐步实现。原创 2022-12-14 17:58:05 · 1075 阅读 · 0 评论 -
k8s编程operator实战之云编码平台——②controller初步实现
在上一章中介绍了整个云编码平台的架构设计,本章中将实现架构中的controller。需要使用的技术:k8s二次开发kubebuilder、grpc原创 2022-12-12 19:27:10 · 1874 阅读 · 0 评论 -
k8s编程operator实战之云编码平台——①架构设计
之前偶然接触到了腾讯的Cloud Studio平台,使用这个平台我们可以创建一个云上的IDE,我们在本地使用浏览器即可打开vscode来写代码。之后我就一直在想,这样一个平台是怎么样实现的?原创 2022-12-12 19:19:30 · 1710 阅读 · 0 评论 -
k8s编程operator——(3) 自定义资源CRD.md
在K8S系统扩展中,开发者可以通过CRD(CustomResourceDefinition)来扩展K8S API,其功能主要由APIExtensionServer负责。使用CRD扩展资源分为三步:注册自定义资源、 使用自定义资源、删除自定义资源原创 2022-11-26 20:38:07 · 2630 阅读 · 0 评论 -
k8s编程operator——(2) client-go中的informer
使用client-set可以很容易地对ApiServer中的数据进行增删改查。但是,如果每次都从ApiServer获取数据,特别是执行List操作时,ApiServer会查询并传输大量的数据,将会对其产生很大的压力。如果能将数据缓存到本地,并在数据变化时进行更新,获取数据时从本地获取,那么将会大大减轻ApiServer的压力。因此,本章将会对client-go中的informer进行一个探究,通过Infomer,我们可以实现将数据缓存到本地,并且当资源对象发生变化时,我们能获取到相应的变化,并进行处理。原创 2022-11-23 16:45:41 · 2086 阅读 · 3 评论 -
k8s权限控制RBAC
kubernetes集群所有的交互都是通过apiServer来进行的,因此k8s对权限的控制就尤其重要。从1.6版本起,kubernetes默认启用RBAC访问控制策略。RBAC(Role-Based Access Control):基于角色的访问控制RBAC中4种顶级资源:Role、ClusterRole、RoleBinding、ClusterRoleBinding角色,包含一组权限的规则。没有拒绝规则,只是附加运行。Namespace隔离,只作用于命名空间。原创 2022-11-14 12:07:42 · 1251 阅读 · 0 评论 -
k8s编程operator——(1) client-go基础部分
client-go是一个golang的client,我们可以通过client-go与K8S apiServer进行交互,对k8s集群中资源对象,包括内置资源(例如:Pod、Deployment、Service等)和CRD进行增删改查等操作。client-go地址目录结构:该包包含了可以访问kubernetes集群的api,通过这些API可以与apiServer进行通信,对集群的资源对象进行增删改查。原创 2022-11-11 22:15:49 · 3943 阅读 · 0 评论