第 2 页 - HelloJXL - 个人blog

迁移docker为containerd

2023-02-18更新

最近在升级nerdctl时发现有些地方变更了,最新的文档可以参考containerd官方的文档了


起因

一直在用nezha探针,服务端的部署方式很简单,直接用docker部署就可以了,但是自从上次迁移到racknerd之后出现了严重的内存泄露问题,如果一直看着dashboard,初始状态下从还不足50%会一直占用到70-80%,尝试各种限制但是效果并不明显。后来发现轻量级的containerd,进一步发现docker本身也是间接的管理containerd,既然都是containerd,那为什么还要装docker呢?于是尝试从docker迁移到containerd。

安装containerd

官方的安装说明也很简单,直接下载官方包,解压就可以了,具体安装如下:

#目前最新版为1.6.8,具体可以参考官方说明
wget https://github.com/containerd/containerd/releases/download/v1.6.8/cri-containerd-1.6.8-linux-amd64.tar.gz
#解压进行安装
tar -C / -xzf cri-containerd-1.6.8-linux-amd64.tar.gz

默认可以systemctl进行管理,比如开机自启等,操作如下:

#开机自启
systemctl enable containerd
#启动containerd
systemctl start containerd

安装nerdctl

containerd本身的管理太过简单,可以通过nerdctl进行管理,使用方式跟docker非常类似,具体安装如下:

#目前安装的是0.22.2,最新版参考官方
wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
#解压并安装到/usr/local/bin,仅限debian系,如果是centos则要么改路径,要么加环境变量
tar Cxzvvf /usr/local/bin nerdctl-0.22.2-linux-amd64.tar.gz

本身还需要cni-plugins,因此也需要安装

#当前最新版为1.1.1
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

#先创建所需的目录并解压安装
mkdir /opt/cni
mkdir /opt/cni/bin
tar Cxzvvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

安装完之后如果没有其它问题就可以使用了。

遇到的问题

(1)runc无法启动,表现为启动镜像时报错:ctr: failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/xxxx/xxxxx/log.json: no such file or directory,刚开始时完全不知道怎么处理,后来通过爬文发现是runc的问题,最简单的可以直接执行runc命令,得到的错误是:runc: undefined symbol: seccomp_notify_respond,网上说是libseccomp版本问题,如果是centos则可以尝试更新依赖解决,由于我大部分都是debian,最简单的方式是替换runc,可以直接从这里下载,提供两种修复方式,一种是libseccomp-2.5.4.tar.gz源码,可以下载下来自己编译安装,另外一种是runc的可执行文件,我用的第二种,具体操作如下:

#下载runc
wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64
#重命名文件
mv runc.amd64 runc
#增加可执行权限
chmod +x runc
#查找当前runc所在目录
which runc
#替换当前runc,这是debian下的,centos下为/usr/bin/runc
mv runc /usr/local/sbin/runc

(2)缺少iptables组件,会提示:failed to locate iptables: exec: \"iptables\": executable file not found in $PATH",解决方法就是直接安装iptables就可以了

结束

最开始迁移的时候没有太在意,本身不太爱用docker的方式,感觉吃内存跟硬盘,但是最近看到可以用traffmonetizer挂机挣钱,手里小鸡也不算少,就打算部署一下,可官方并没有提供二进制的方式部署只有docker,没办法就用containerd进行部署了,也可以走我的aff,注册之后就可以得到5$,具体部署方式也很简单:

#拉取镜像
nerdctl pull traffmonetizer/cli:latest
# 启动
nerdctl run -d --name tm traffmonetizer/cli start accept --token  你的token

也不知道收益咋样,之前挂过peer2profit,但是感觉收益好少后面就放弃了,试试这个看看咋样😎。

N1盒子刷机及旁路由设置记录

起因

整个事件起因全部在之前那篇文章里,想了想目前手里的设备,貌似只有一台N1和一台之前赠送的小米3c,N1盒子目前是电视盒子,配了一个遥控给丈母娘之前看孩子用的,于是只能从小米3c入手了。

刷机小米3c

网上查了一下,都说配置太低,于是就抱着死马当活马医去试了试,先进行版本降级,刷入了开发版,接着刷入breed,又在网上找了一个openwrt固件,只不过固件里面什么都没带,好像是参考的这里,于是就想着自己安装xray,具体的安装包可以在这里找,如果是其它的机型按cpu类型找就好,可惜就当依赖都装完了,马上装xray的时候提示空间不足了,随重刷了一下openwrt弃之。

刷机N1

没办法只有把n1拿出来接着刷了,为了不影响以后可能会用到电视盒子,就花了77块大洋买了一台魔百和,说是带WIFI跟蓝牙,不过到写文章的时候已经两天了,还在通知中通取货,不知道实际是个什么样,直接说刷机吧,按网上的教程安装balenaEtcher官网,最开始参考的这里,说是老版的固件里面带后门之类,本来还高兴看到作者把只带ssr的固件发出来,结果刷到U盘后引导不起来,总是报错,于是又找了一个固件,在这里,刷完了感觉还不错。期间遇到了两个问题,问题一:无法从U盘引导,这个通过adb远程连接,再执行更新,步骤是.\adb.exe connect 192.168.xx.xx(盒子的ip),连上设备,然后通过.\adb.exe shell reboot update就可以了,我用的powershell,所以需要加./,注意要切换到adb所在目录,adb可以从官网下载。问题二:刷入emmc,执行/root/install-to-emmc.sh,第一步选择y确定刷入,第二步选择硬盘格式,我选的1,据说第二步是格式化U盘的,可以直接回车,不太确定,然后就可以了。

设置旁路由

由于不太想影响老婆孩子用网,所以采取的是原来的路由不动,n1作为旁路由接入并关闭DHCP,路由地址设置成跟主路由一个ip段,网关跟dns服务器都写上主路由地址,物理设置里,如果想要用WIFI,则选择桥接接口,选中lan跟无线,如果不用无线则直接选择lan口就可以,最好把防火墙里的启用 SYN-flood 防御关闭掉。如果想通过路由科学上网就需要手动设置一下ip地址,ip可以不变,把网关改为旁路由的地址就可以了,因为要手动改ip地址再加上N1的WIFI太拉垮,我就直接关掉WIFI了,也可以等那天想用路由科学的时候再开机也可以。

结束

好了,可以睡觉了😴😴😴

关于Oculus Quest 2的折腾笔记

前言

这事要从上上周说起,媳妇的好友+房东说想让帮忙把vr破解一下,具体没有细说,初步感觉应该是quest2,后来发了一下截图,果然是quest2。随后在网上查了一下大概激活流程,①科学上网②注册账号并开启开发者③手机下载Oculus应用绑定并开启开发者模式④下载并安装SideQuest,具体文章是参考的这里的色魔张大妈的文章,大概搂了一眼初步感觉很简单,就等设备到了就可以动工了。

麻烦开始

上周六也就是八月十五那一天,设备拿过来了,于是折腾就开始了。先在手机上下载culus的应用,因为一直用的美区的账号,所以没有什么难度,至于账号很早就注册了Facebook,后来感觉没意思就注销掉了,但是instagram还在用,而且在上一家工作的时候也接触过最早的Oculus设备,所以账号也没问题。不过接着麻烦就来了。

  1. 绑定手机

下载完app之后就准备绑定,提示让输入五位数字验证码,可是看了看设备并没有显示设备码,网上查了一下说要重置设备,问了一下说是没啥重要东西就重置了。果然,重置完之后就提示出了五位验证码了。

  1. UDP更新

出来验证码以为没事了,结果接着app就提示quest2需要更新,并且是不更新就不让进的意思,没办法就准备更新quest2,查了一下,quest2的http代理是只有在连接WIFI时才能输入,一旦连接上就无法输入了,不过还好,多试几次就可以了,连上代理之后quest2就进入了,然后就准备更新,结果就卡到了开始更新那里,一直是0%。又是网上查了一圈,说是更新走的UDP,这下绝了,之前科学都是在电脑上单独开的,路由当时脑子抽,买的华为的还刷不了机,所以路由这一块一直没折腾,台式机本想买无线网卡的,可惜M2接口用完了,也一直搁浅,家里其余的设备都是Mac设备,到此如果是我自己的设备基本上已经凉凉了,幸好房东他们买设备的时候还给了一个小米路由器,好像是小米4c千兆版,本身已刷好了潘多拉固件,赶紧断了家里的网,接上路由器。

  1. 忘记宽带密码

就在拨号的时候,发现拨号一直失败,突然预感不好,密码记不清了,其实密码一直都是原来的密码,中间改过一次,但是后来有次出问题,宽带师傅又给改回去了,但是由于时间有点长了,一直记不清自己改没改了,光在这里猜密码就耗了二、三个小时,后来才发现问题原因(猜的),由于之前改过光猫,改成路由桥接的了,如果是直接拔网线可能光猫那里还以为连着呢会一直报错,重启一下光猫以后在再连会比较好使,除非主动断开,但是华为的路由器里面宽带连接还没有主动断开的选项,只能拔网线,可给坑苦了。

  1. 固件无法科学上网

配置好宽带账号之后,开始在路由上配置好科学节点,不知为何一直翻不出去,明明什么配置都没错就是不行,甚至把买的机场都用上了也还是不行(后来在网上看到说要把允许不安全连接勾上才行,不过这都是后话了,当时没有试),没办法,就开始在网上找小米的固件,打算刷一个openwrt,找来找去,中间还试了几个别的,刷机刷了7、8次,才最终找到一个合适,具体的参考了这里,之前本来都已经刷好这个固件了,可是不知道密码,折腾好半天。这个配置完结点之后确实能出去了,这里已经看到希望了,quest2连上之后果然更新开始走了,接下来的事情就顺利多了。

结束

这里再多说一句,激活开发者的时候meta想让你认证一下,有两个选项,一个是绑定银行卡,一个是绑定手机,由于我一直用的gv,所以这里直接绑定的gv,貌似也没问题,就是开个二次验证而已,不知道后面会不会封掉。到装完Sidequest已经快2点了,由此深感到急需弄一台旁路由,以备不时之需。

记一次冲动的消费

前言

上个月看到OP的独服在搞活动,就入手了一个巴黎的5O作为网盘用,对于在用的移动网来说网速也够用,但是入手后感觉支出有点超预算了,就打算淘汰一下其它的VPS。

抉择

手里其实已经有好几个VPS作为扶墙用的了,本着同一个商家不持有太多VPS的原则,正好绿云的新加坡24刀到期了,基于本身是背刺款并且平时也不怎么看NF之类的,于是就申请了取消服务。取消之后就发现周边亚太的就缺新加坡的,心里又有点痒痒,想找一台便宜的吃灰机来挂探针,偶然发现gullo.me家有卖新加坡的,看到很便宜就入手了一台12刀的512,在开通的期间看到测试ip就ping了一下,好家伙,疯狂丢包。虽然说要挂探针,但是起码也能用一下吧,当时还有点心存侥幸。晚上就收到邮件提示已经开通了,当时看到IP就有点傻了,一个IP段的,在电脑上试了一下果然效果一样,着实有点后悔。

结束

后面有经过套CF等操作,依然不是很理想,然后越看越闹心,刚刚选择直接取消服务并且是立马结束,处理完心里就稍微舒坦点了,经过此事,提醒自己入手前一定要做好调查,不能图便宜(其实也不便宜),同时也提醒自己如果觉得一件事让自己不舒服,那就赶紧处理掉,虽然需要付出一点代价,但是至少不用每次看到都惹一肚子气。🥲🥲🥲

acme.sh80端口http2无法签发证书

起因

一直都在用acme.sh脚本进行证书签发,直到最近在给探针的域名进行签发的时候,不知为何总是一直load最后失败,加debug也看不出问题来,初步感觉可能是反代的问题就没管,最近进行了一次探针面板迁移,配置完之后发现所在服务器的其它域名也会一直load,签发不成功,甚是脑袋疼。

解决

直接说解决方案:尝试更换CA机构,最开始acme.sh默认的是Letsencrypt,后来改为了ZeroSSL,起初也没感觉有什么不同,这次始终不行,于是干脆就先切换了一下签发机构,切换完了立马就提示错误,具体错误想不起来了,大致就是因为在80端口开启了http2,签发机构认为不安全不进行签发。大致想了一下,因为之前嫌改端口麻烦,就把探针面板的监听端口通过80反代了,由于哪吒探针需要启用http2,所以就直接走的80端口,但是不知为何其它域名也受这个影响。知道原因就好解决了,先去掉http2再进行签发就可以了,顺便把端口又改为443再启用http2。

总结

目前看来还是Letsencrypt更好一点,起码出现问题时会先提示,不会想ZeroSSL傻傻的跑完了然后提示超时。所以等下一次签发不成功并且没有提示的时候可以试试切换为Letsencrypt。