본문 바로가기
개발 및 운영/Kubernetes

[rook-ceph] external cluster 사용 시 attempt to determine ceph version for the current cluster image timed out 오류

by Joseph.Lee 2022. 1. 11.

external cluster로 설정하고 CephCluster 에 대한 health 는 성공적인데, 이후 CephBlockPool 생성 시 아래와 같은 오류가 발생하였다.

 

E | ceph-block-pool-controller: failed to reconcile. failed to fetch ceph version from cephcluster "...": attempt to determine ceph version for the current cluster image timed out

 

ceph version 을 가져오지 못한 것으로 보이는데... monitoring을 활성화해야 이를 해결할 수 있었다. 그런데 단순히 활성화 만으로는 안되구... 버그인지 모르겠는데 rolebinding도 해 주어야 한다.

 

먼저 아래와 같이 Role 을 생성한다. rook-ceph namespace 에 있는 role 을 복사한 것인데, 한 가지 다른 것은 servicemonitors 를 추가하였다.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    operator: rook
    storage-backend: ceph
  name: rook-ceph-system
  namespace: (EXTERNAL_CLUSTER_NAMESPACE)
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - configmaps
  - services
  - servicemonitors
  verbs:
  - get
  - list
  - watch
  - patch
  - create
  - update
  - delete
- apiGroups:
  - apps
  - extensions
  resources:
  - daemonsets
  - statefulsets
  - deployments
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
- apiGroups:
  - batch
  resources:
  - cronjobs
  verbs:
  - delete

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    operator: rook
    storage-backend: ceph
  name: rook-ceph-system
  namespace: (EXTERNAL_CLUSTER_NAMESPACE)
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-system
subjects:
- kind: ServiceAccount
  name: rook-ceph-system
  namespace: rook-ceph

그리고 CephCluster 에서는 아래와 같이 모니터링을 활성화 하고 mgr 노드들의 IP를 입력한다.

spec:
  monitoring:
    enabled: true
    externalMgrEndpoints:
    - ip: MGR IP
    - ip: MGR IP

 

이후

I | ceph-block-pool-controller: creating pool "..." in namespace "..."
I | cephclient: creating replicated pool ... succeeded

이와 같이 성공하였다.

반응형

댓글