脚本上传二进制
基础镜像 alpine
最近在 docker 镜像里都是使用 alpine 作基础镜像,后面因为 alpine 不支持 glibc 又尝试了 busybux。
两个都很轻量,也都能满足基本的需求,但是长远来看,alpine 可能更好用,主要是它可以安装其它软件,这使得扩展起来非常方便。
tcpdump 使用
我们可以把 tcpdump 的命令结构标准地划分为 三大部分:
sudo tcpdump [1. 控制参数] [2. 抓取范围] "[3. 过滤表达式]"
第一段:控制参数(控制“怎么显示/怎么处理”)
这一段緊跟在 tcpdump 后面,主要用来控制数据的输出格式、运行性能或者是否保存文件。它们通常是以 - 开头的单字母参数。
最常用的控制参数:
k3s 里的 etcd
安装 etcdctl
ETCD_VERSION="v3.5.5"
ETCD_URL="https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz"
curl -sL ${ETCD_URL} | sudo tar -zxv --strip-components=1 -C /usr/local/bin
etcdctl 命令
k3s 里面的 etcd 需要一些配置,我会将这个下面的内容放到一个文件里,然后使用这个文件操作 etcd
ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt \
--cert=/var/lib/rancher/k3s/server/tls/etcd/server-client.crt \
--key=/var/lib/rancher/k3s/server/tls/etcd/server-client.key \
$@
在 server 节点上添加上面的 shell,然后就可以使用 etcdctl 命令了。比如查看 etcd 节点 bash ./etcd.sh member list
moontv 使用
最近 moontv 作者开源了这个项目,而且也取消了授权码,不过他也归档了这个项目,后面不会继续开发了。
之前听说过这个项目,不过没怎么关注,刚部署体验了下,感觉还可以,如果想在 pt 之外补充一个视频播放的工具,可以试试这个。
部署
部署很简单,docker compose 一把梭。注意根据需要修改端口、用户名和密码。
CI 里使用 buildkit 构建镜像
CI 里用一个常见的场景是将代码提交后,打上 tag,CI 就可以检查代码并且自动构建镜像。
但是在 CI 里构建镜像比较复杂,因为 CI 的任务一般是运行在容器里,而需要在一个容器里运行 docker build,就需要在容器里再启一个 docker daemon 进程。这种形式叫 DinD(docker in docker)。
DinD 模式有一些问题
Vim 智能切换输入法
核心思路
在 vim 中输入中文时切换输入法会非常不方便。比如写了中文注释,然后 ESC 进入 normal 模式,还需要再将输入法切换成英文才能操作。如果操作完需要进入 insert 模式继续输入中文又要再切换一次输入法。
迁移 pvc(local path 到 longhorn)
最近在 K3s 集群里部署了 Longhorn,创建的每个 PVC 会有两个副本,这样某个 VPS 宕机,还有副本可以继续提供服务。但是之前已经有一些 Pod 使用的 local-path 的方式挂载的 PVC。所以准备迁移他们到 Longhorn 上。
longhorn 部署
安装 longhornctl
# For AMD64 platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.9.0/longhornctl-linux-amd64
# For ARM platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.9.0/longhornctl-linux-arm64
检查硬件环境
KUBECONFIG=/etc/rancher/k3s/k3s.yaml longhornctl check preflight
# 或者 longhornctl check preflight --kube-config=.kube/config
目前 v1.9.0 版本这两个命令都可以,但是 –help 里并没有提示 kube-config 这个 flag。可以看这个讨论