Open4
Rook Ceph on Raspberry Pi Cluster (Kubernetes)
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
mon の LivenessProbe も失敗し始めたのでこっちもタイムアウトを伸ばしてやらないと駄目かも。
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
まだたまに Liveness probe が失敗する。