SSL 证书验证文件部署到 K8s

申请免费证书时需要验证域名,一般有两种验证方式:

  1. DNS 验证
  2. 文件验证

一般使用 DNS 验证的方式,配置起来比较方便而且时效快。不过由于新网修改 DNS 解析时需要手机验证码,而手机号又不在我这,每次要验证码都比较麻烦,所以今天尝试了下使用文件的方式验证。

由于域名所在的服务是部署在 K8s 上的,所以需要部署一个专门用于访问校验文件的 Nginx 服务。

记一次 Pod 挂载存储卷失败的调查

今天在调整一个挂载了字体文件存储卷(对象存储)的 Deployment 的 Pod 数量时报了如下错误导致服务无法启动。

MountVolume.SetUp failed for volume "pv-jiajia-font" : rpc
error : code = Internal desc = mount
failed : failed to send mount command to launcher : the response of launcher(action: cosfs) is :
{
    "errmsg":"exec command(
        cosfs bucket-jiajia-1234567890:/fonts
            /var/lib/kubelet/pods/4142efc8-8923-47d1-aba1-5b3d26b1ff10/volumes/kubernetes.io~csi/pv-jiajia-font/mount
            -ourl=http://cos.ap-guangzhou.myqcloud.com
            -odbglevel=err
            -opasswd_file=/tmp/bucket-jiajia-1234567890_121a6f50fe6f8d3434002a73407ae729f53682fdec4fb0aa442af31a3ee17abe
            -oensure_diskfree=20480
            -oallow_other
        ) failed.
        command cosfs bucket-jiajia-1234567890:/fonts
            /var/lib/kubelet/pods/4142efc8-8923-47d1-aba1-5b3d26b1ff10/volumes/kubernetes.io~csi/pv-jiajia-font/mount
            -ourl=http://cos.ap-guangzhou.myqcloud.com
            -odbglevel=err
            -opasswd_file=/tmp/bucket-jiajia-1234567890_121a6f50fe6f8d3434002a73407ae729f53682fdec4fb0aa442af31a3ee17abe
            -oensure_diskfree=20480
            -oallow_other
        failed: output
        cosfs: There is no enough disk space for used as cache(or temporary) directory by s3fs.\n,
        error: exit status 1",
    "result":"failure"
}
K8s Exited With 137 When Rolling Update

k8s 滚动升级时报了 exited with 137 错误:

Exec lifecycle hook ([sleep 40s]) for Container "xxx" in Pod "xxx_xxx(xxx)" failed - error: command 'sleep 40s' exited with 137: , message: ""

修复使用 K8S 部署 PostgreSQL 时每次重启后数据丢失的问题

本来挂载的卷是配置到 data 目录的:

volumeMounts:
  - mountPath: /var/lib/postgresql/data
    name: data
记一次 K8S 节点磁盘占用空间警报的调查

这两天连续发生了几次磁盘占用空间过多的预警,今天调查了一天,发现有两个原因导致了这个问题。

docker overlay2 存储文件过多

其中一个节点上 /var/lib/docker/overlay2 目录占用了绝大多数的磁盘空间。 overlay2 是 docker 的存储系统。

参考 这篇文章 上的命令,清理了磁盘。