【博客】博客升级 Hexo 版本记录
Hexo 升级教程文章分析📋 文章概述本文记录了将 Hexo 博客从 6.3.0 版本升级到 7.0.0 的完整过程,同时配合升级 hexo-theme-butterfly 主题至 4.11.0 版本。 本文转载自:https://note.weizwz.com/hexo/basic/hexo-update 🔧 完整升级步骤(含命令)步骤 1:查看当前版本1hexo -v 作用: 确认当前 Hexo 版本(示例中为 6.3.0) 步骤 2:全局安装/更新 hexo-cli1npm i hexo-cli -g 作用: 全局更新 Hexo 命令行工具 步骤 3:安装 npm-check 工具(可选)1npm install -g npm-check 作用: 用于检查哪些依赖包需要更新 步骤 4:检查可更新的依赖项1npm-check 作用: 列出所有过时的依赖及其最新版本 步骤 5:安装 npm-upgrade 工具(可选)1npm install -g npm-upgrade 作用: 用于交互式更新 package.json 中的版本号 步骤 6:更新 packag...
【Cloudflare】反代docker镜像加速
背景由于国内各大镜像加速站关闭了对Docker-Hub的访问,导致Docker镜像拉取的时候超时,因此我们需要使用Cloudflare Workers来反代Docker镜像,加速拉取。 步骤访问Cloudflare面板,登录你的Cloudflare账号,点击Workers 和 Pages,点击创建,点击创建 Worker,点击部署。 随后访问这个Worker,点击右上角的编辑代码,其中 worker.js的内容如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131...
【Traefik】4 - Let's Encrypt证书 + DNSPOD + 自动续签
背景我的Deployment绑定了很多子域名,但每次在腾讯云中申请证书只有90天,还需要手动更换大量证书,所以我想使用Traefik自动续签证书,而且使用腾讯云的DNS验证方式,这样就不用每次都手动更换证书了。 环境traefik: v2.9.10kubernetes: v1.24.6+k3s1 准备工作域名绑定在腾讯云中,我们需要将泛域名(*.yourdomain.com)解析到我们的服务器IP上,这样Traefik才能通过DNS验证方式自动续签证书,其中: 主机记录:* 记录类型:A 记录值:你的服务器IP 泛域名绑定成功后,后面我们任何子域名都可以通过这个泛域名来验证并访问,例如:(test1.yourdomain.com、test2.yourdomain.com)。 申请DNSPOD API密钥因为我的域名在腾讯的DNSPOD中,因此我们需要申请API密钥,用于Traefik自动续签证书,申请地址如下: 1https://console.dnspod.cn/account/token/token Traefik配置创建pv接下来我们需要将/data/acme.js...
【Traefik】3 - Sablier
背景我的测试环境有两个Deployment,我想在开发的时候启动,30分钟没请求后自动关闭,不占用资源。 Sablier就解决了这个问题,它支持Kubernetes,并且支持Traefik。 环境traefik: v2.9.10kubernetes: v1.24.6+k3s1Sablier: v1.7.0 安装在K3S中,我们已经内置了Traefik,所以如果想安装插件,我们需要对内置的Traefik进行改造,添加插件。 由于K3S会周期性的执行 /var/lib/rancher/k3s/server/manifests 目录下的所有yaml,而如果我们修改了默认的traefik.yaml,K3S会自动恢复默认文件,所以我们这里需要新建一个yaml文件,用HelmChartConfig的方式修改traefik安装的配置即可。 创建配置文件 nano /var/lib/rancher/k3s/server/manifests/traefik-config.yaml 1234567891011121314151617181920212223apiVersion: helm.catt...
【Traefik】2 - Fail2Ban
背景在Traefik中,Fail2Ban是一个非常强大的插件,可以轻松实现IP黑名单,IP白名单,IP封禁等操作。我们可以根据不同的需求,选择封禁的时长。 比如:我想针对1分钟内请求100次以上的IP封禁1小时。对于比DDOS小很多的某些攻击,可以有效防止。(如果处于DDOS,大部分都是在服务商那就已经将云服务拉入小黑屋了,此时服务流量基本进不来了,所以这里只是针对小攻击的处理方法,或者某些暴力爬虫等) 对于Fail2Ban的原理,你可以参考Github,基本原理是时间窗口,go语言写这类工具再对接Kubernetes有天生的优势,所以这里就不再赘述了。 环境traefik: v2.9.10kubernetes: v1.24.6+k3s1Fail2Ban: v0.7.1 安装在K3S中,我们已经内置了Traefik,所以如果想安装插件,我们需要对内置的Traefik进行改造,添加插件。 由于K3S会周期性的执行 /var/lib/rancher/k3s/server/manifests 目录下的所有yaml,而如果我们修改了默认的traefik.yaml,K3S会自动恢复默认文...
【Traefik】1 - 入门
简介Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。 除了众多的功能之外,Traefik 的与众不同之处还在于它会自动发现适合你服务的配置。当 Traefik 在检查你的服务时,会找到服务的相关信息并找到合适的服务来满足对应的请求。 Traefik 兼容所有主流的集群技术,比如 Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,等等;并且可以同时处理多种方式。(甚至可以用于在裸机上运行的比较旧的软件。) 使用 Traefik,不需要维护或者同步一个独立的配置文件:因为一切都会自动配置,实时操作的(无需重新启动,不会中断连接)。使用 Traefik,你可以花更多的时间在系统的开发和新功能上面,而不是在配置和维护工作状态上面花费大量时间。 核心概念Traefik 是一个边缘路由器,是你整个平台的大门,拦截并路由每个传入的请求:它知道所有的逻辑和规则,这些规则确定哪些服务处理哪些请求;传统的反向代理需要一个配置文件,其中包含路由到你服务的所有可能路由...
【K3S】15 - 其他三方组件简介
存储LonghornLonghorn是一个轻量级、可靠且功能强大的分布式块存储系统,适用于 Kubernetes。使用容器和微服务实现分布式块存储。Longhorn 为每个块储存设备卷创建一个专用的存储控制器,并在存储在多个节点上的多个副本之间同步复制该卷。存储控制器和副本本身是使用 Kubernetes 编排的。Longhorn 是免费的开源软件。它最初由Rancher Labs开发,现在作为云原生计算基金会的孵化项目进行开发。 优点 : 企业级分布式块存储,无单点故障; 支持增量快照和远程备份恢复(NFS/S3兼容对象存储); 定期快照和备份; 提供UI页面,管理方便; 教程: k8s持久化存储longhorn(安装篇) - 简书 (jianshu.com) https://zhangzhuo.ltd/articles/2022/05/19/1652929973831.html 现在我已经把mongodb和mysql的存储使用longhorn的classpath,只需要更改各个配置的存储部分即可,例如: mongo.yaml: 123456789volu...
【K3S】14 - 自动备份k3s
前言k3s的备份我们采用 kube-backup,它能帮我们把每个命名空间里一些基础的yaml备份,比如deployment、svc、pvc等,并通过git账号配置,自动上传至git仓库 开始 下载源码 1git clone https://github.com/pieterlange/kube-backup.git 创建命名空间 1kubectl create ns kube-backup 将源码的配置文件里面,所有的kube-system改为kube-backup 1sed -i 's#namespace: kube-system#namespace: kube-backup#g' *.yaml 在源码目录下创建密钥对 1ssh-keygen -t rsa -f ./id_rsa -N '' 将git仓库域名或ip添加授信列表里 1ssh-keyscan gitee.com > known_hosts 将密钥和授信列表存入kube-backup中 1kubectl create secret ge...
【K3S】13 - Rancher部署EFK
前言由于微服务日志分散在各个容器内,又不好做到统一时序查看,因此需要一个组件来观测日志,这里采用ELK,目前我们先创建单节点的elasticsearch和kibana。如果你想尝试使用二进制部署,可以看下这篇文章:【大数据】Elastic + canal + kibana 安装文档 | Leopold’s Blog ElasticSearch这里的存储类我使用了rancher的local-path,自动帮我生成pv。节点默认在m2,请根据自身情况调整 elasticsearch.yaml 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711...
【K3S】12 - 微服务拆分之Etcd分布式锁
前言在上文中,我成功从将SpringBoot转为go。接下来,我将尝试把redis锁改为etcd锁。 Redis锁和Etcd锁是两种常见的分布式锁实现方式,它们在设计和特性上存在一些区别。 存储系统:Redis是一个基于内存的键值数据库,而Etcd是一个高可用的分布式键值存储系统。 一致性模型:Redis使用主从复制或哨兵模式来提供高可用性,并且在某些情况下可能会存在数据不一致的风险。Etcd则采用了Raft一致性算法,确保了强一致性。 锁的实现方式:在Redis中,可以使用单个Redis实例或Redis集群作为锁服务。通常使用SETNX(SET if Not eXists)指令尝试在特定键上设置值,以获取锁,并使用DEL指令来释放锁。在Etcd中,可以通过创建一个有序的临时键(ephemeral key)来实现分布式锁。多个客户端尝试创建相同的键,只有最小的键持有者获得锁。 锁的可重入性:Redis锁不支持可重入性,即同一个线程/进程不能重复获取同一个锁。而Etcd可以通过维护客户端的标识符和计数器来实现可重入性。 锁的自动过期:Redis支持设置锁的过期...










