Open4

Rook Ceph on Raspberry Pi Cluster (Kubernetes)

Kazuki Suda (@superbrothers)Kazuki Suda (@superbrothers)

OSD の Liveness probe がタイムアウトする。

$ k describe po -n rook-ceph rook-ceph-osd-2-7594b474d8-w8j7d | grep -i Events -A 3
Events:
  Type     Reason     Age                  From     Message
  ----     ------     ----                 ----     -------
  Warning  Unhealthy  28s (x24 over 173m)  kubelet  Liveness probe failed: command "env -i sh -c ceph --admin-daemon /run/ceph/ceph-osd.2.asok status" timed out

実際に livenessProbe で使われているコマンドを実行してみると問題なく成功するので、単にたまにノードの負荷が高くなるなりしてタイムアウトしているだけだと思われる。現状リソース使用量を観測するためにリソース要求を設定していないのでその影響もあるかもしれない。

k exec -n rook-ceph rook-ceph-osd-2-7594b474d8-w8j7d -- env -i sh -c "time ceph --admin-daemon /run/ceph/ceph-osd.2.asok status"
Defaulted container "osd" out of: osd, activate (init), chown-container-data-dir (init)
{
    "cluster_fsid": "f9c7a869-cec5-4f18-b12b-1d5306cc95fb",
    "osd_fsid": "7daa48de-325d-4bd3-939c-94d9a8ba1dd1",
    "whoami": 2,
    "state": "active",
    "oldest_map": 1,
    "newest_map": 30,
    "num_pgs": 33
}

real    0m0.549s
user    0m0.436s
sys     0m0.112s

timeoutSeconds がデフォルトの1秒なのでここでは 3s に伸ばしてみて様子をみる。

$ k get deploy -n rook-ceph rook-ceph-osd-2 -o yaml | grep -i livenessProbe: -A 12
        livenessProbe:
          exec:
            command:
            - env
            - -i
            - sh
            - -c
            - ceph --admin-daemon /run/ceph/ceph-osd.2.asok status
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1

各コンポーネントの LivenessProbe の設定は次のような感じで変更できる。

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
spec:
  ...
  healthCheck:
    livenessProbe:
      osd:
        disabled: false
        probe:
          timeoutSeconds: 3
Kazuki Suda (@superbrothers)Kazuki Suda (@superbrothers)

mon と mgr の LivenessProbe もタイムアウトし始めたのでこちらも 3s に変更。

Liveness probe failed: command "env -i sh -c ceph --admin-daemon /run/ceph/ceph-mon.b.asok mon_status" timed out
Liveness probe failed: command "env -i sh -c ceph --admin-daemon /run/ceph/ceph-mgr.a.asok status" timed out