构建集群kubernetes v1.28并使用kine和mysql替换etcd

在本文中,将探讨使用 k3s 的 kine 项目来替换掉 etcd,并通过实验使用 kubeadm 去 run 一个 k8s 集群,并用 k3s 的 kine 项目来替换掉 etcd。 为什么使用 kine etcd 在 Kubernetes 之外基本上没有应用的场景,并且 etcd 迭代也比较慢,由于没有人愿意维护因此一直在衰退 [1],并且,Kubernetes 集群中,etcd 也是一个影响集群规模的重大因素。并且 K3S 存在一个项目 Kine 可以使用关系型数据库运行,这样对集群维护者来说可以不需要维护复杂的 etcd 集群,由于关系型数据库有很多高可用方案,这将使得 k8s 集群规模变成了无限可能。 Kine 介绍 前文提到,kubernetes (kube-apiserver) 与 etcd 是耦合的,如果我们要使用 RDBMS 去替换 etcd 就需要实现 etcd 的接口,那么这个项目就是 Kine [2]。 Kine 是一个 etcdshim,处于 kube-apiserver 和 RDBMS 的中间层,它实现了 etcdAPI的子集(不是etcd的全部功能),Kine 在 RDBMS 数据库之上实现了简单的多版本并发控制;将所有信息存储在一个表中;每行存储此 key 的修订, key, 当前值, 先前值, 先前修订,以及表示该 Key 是已创建还是已删除的标记,通过这种机制可以作为 shim 层来替换 etcd。...

 ·  · 

安装Debian12 (Bookworm) Step-by-Step

Preparation debian12 几乎可以使用任何旧的计算机硬件,因为最小安装的要求非常低。以下是最低要求和推荐要求: 最低要求 推荐要求 存储:10 Gigabytes 内存:512 Megabytes CPU: 1 GigaHertz 存储:10 Gigabytes内存:2 GigabytesCPU: 1 GigaHertz or more 如何选择下载安装包 offical mirror aliyun mirror 官网提供了安装包的下载,其中CD是网络安装,DVD是离线安装 debian官方下载页面 Notes:CD安装包很小,下载下来是 debian-11.4.0-amd64-netinst.iso 如名所示,这是一个网络安装包,所以推荐下载DVD部分,可以达到离线安装的效果 截至文章编写日期,debian-12.5.0-amd64-DVD-1.iso 大小是 3.7G Debian12 EOL:June 30th, 2028 安装步骤 在界面中选择“Install”,安装将开始。如果图形化安装可以选择“Graphical install”,这里选择“Install”。 欢迎页面 完成后,系统将提示选择安装时的“语言”。选择喜欢的语言,然后按“Enter”。这里选择英文 选择语言页面 这将是接下来安装步骤 安装步骤概述 选择位置与键盘布局 选择地区,这里选择美国 选择区域 下面部署时选择键盘布局:中国大陆使用的键盘布局是美国-英语,不要选择英国-英语之类,布局是不一样的,会存在按键输出的结果会不同 选择键盘布局 完成上述操作后,将开始加载镜像。等待扫描完成。。。。 等待扫描组件 设置主机名和域名 这步骤中将配置一个“主机名”。与一个“域”名称。 配置主机名 “域” 可以选择留空确定 配置域 完成上述操作后,安装程序将提示需要设置 root 密码。输入您的 root 密码,然后在重新输入以进行验证后继续。 Tips: 这里建议设置密码,不设置密码会导致安装完成后无法进入 root 用户**,**这样就需要根据先登录普通用户,然后通过 sudo切换过去。 设置Root密码 设置Root密码 - 二次确认 设置非ROOT用户名、账户和密码 下一步创建一个非ROOT用户,这个步骤是必须的,并为这个新创建的帐户分配一个密码。以下截图将描述将如何完成此操作。...

 ·  · 

Debian网络配置

设置一个网络接口 debian 中网络接口的配置文件是在 /etc/network/interfaces,可以设置 “静态地址” 或 “DHCP” conf cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo auto ens33 iface lo inet loopback # The primary network interface allow-hotplug ens33 iface ens33 inet static address 10.0.0.14 netmast 255.255.255.0 gateway 10.0.0.2 root@debian-template:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them....

 ·  · 

Go每日一库 - 使用 gin + goswagger 构建 REST API 文档

OpenAPI 什么是OpenAPI Swagger 是一套围绕 OpenAPI 规范构建的开源工具,可帮助我们设计,构建,记录和使用 REST API。 OpenAPI 规范(前名称为 Swagger 规范)是 REST API 的 API 描述格式。包括: 可用端点 ( 例如 /users) 以及每个 endpoint 上的操作 (例如 GET /users, POST /users) 操作参数,每个操作的输入和输出 认证方法 联系信息,许可证,使用条款等其他信息。 什么是 Swagger? Swagger 是一组围绕 OpenAPI 规范构建的开源工具,有助于用户设计,构建,记录和使用 REST API,支持整个 API 生命周期的开发,从设计和文档到测试和部署。 使用 Swagger 的目的 标准化文档格式:Swagger (OpenAPI) 采用了准化 API 文档格式。通过使用 Swaggo(将注释转换为 Swagger2.0文档的包) 生成 Swagger 文档,Swagger 的结构化格式的文档,使开发人员更容易理解产品的 API 交互。 交互式文档体验:Swagger UI 与 Swaggo 集成,提供交互式且用户友好的界面,用于测试 API。Swaggo提供了一个自动生成的界面,允许开发人员浏览 Endpoint,查看请求/响应示例,甚至可以直接从文档执行 API 请求。这种交互式体验可提高开发人员的工作效率并加速 API 的采用。 自动且最新的文档:Swaggo 可自动从用户的 Go 代码生成 API 文档。这种自动化无需手动维护单独的文档文件。Swaggo 直接从用户的代码库中提取信息,包括 endpoint 详细信息,请求/响应模型和注释。使用这种方法可确保用户的 API 文档随着代码的更新而保持最新。 Swagger 与 Gin 的集成 拉取 Swaggo 使用如下命令下载swag...

 ·  · 

使用docker管理谷歌物件仓库gcr上的镜像

创建服务账户 首先可以到「 IAM管理 -> 服务帐户」新增帐户。在新增完成后,会得到一把 key,将它下载后请妥善保管,因为所有相关的身份认证都会用到,这个 key 在下载后就无法继续下载了。 授权 接着到「IAM -> 新增」成员,并且选择角色,这里选择「Cloud Storage -> 储存空间物件检视者」,让此帐户具备有 read(读取) storage 的功能。 登录 bash 1 2 cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.pkg.dev GCP 的 KEY-TYPE 通为 json_key,但这里包含两种类型 _json_key 和 _json_key_base64 KEY-FILE 就是下载的 Service account key 的文件 bash 1 2 cat KEY-FILE | docker login -u _json_key --password-stdin \ https://LOCATION-docker.pkg.dev 通常 Service account key 文件内容如下 yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 { "type": "service_account", "project_id": "project2024-0101", "private_key_id": "bdfsd612779509406bb8452c3ek12d730ed547e722d", "private_key": "-----BEGIN PRIVATE KEY----....

 ·  ·