프로젝트

일반

사용자 정보

실행

태스크 #12935

kasten 설치 테스트

이 헌제님이 13일 전에 추가함. 10일 전에 수정됨.

상태:
진행
우선 순위:
보통
담당자:
목표 버전:
시작 시간:
2026/02/01
완료 기한:
2026/02/02 (12일 지연)
진척도:

0%

추정 시간:
20:00 시간
발견 버전:
반영 버전:
난이도:
쉬움
중요도:
조력자:
회사:
연락처:
점수:
5.00

설명

개요

  • kasten 을 helm 으로 설치 시 여러 pv 를 동시 생성한다.
  • 그 여파로 csi-dirver-lvm 를 통한 pv 설치가 정상적으로 진행되지 않았다.
  • kasten 설치 파일는 kasten 에서 제공해서 이를 활용하여 설치 테스트를 진행한다.

목표

  • PV 가 정상적으로 생성되고, kasten 의 pod 가 올바르게 올라와야 한다.

csi-driver-lvm 개선

  • maintenance mode 가 엉키는 부분이 많아, maintenance 를 모든 볼륨을 확인하여 진행하도록 변경한다.
  • 이를 위해서 일괄적으로 처리하기 위해 crd 를 구축하여 데이터베이스를 활용한다.

난이도 및 추정시간

  • reconcile 작업이 아직 남아있는데, reconcile 진행 이후 개선점만 진행하면 될 것으로 보인다.
  • 그러므로 난이도 쉬움, 추정시간 20시간

파일


연결된 일감

다음 일감과 관련됨: csi-driver-lvm - 새 기능 #12829: csi-driver-lvm reconcile 기능 개발진행이 헌제2026/01/122026/02/01

실행
실행 #1

이 헌제님이 13일 전에 변경

csi-driver-lvm 개선 시나리오

  1. k8s PV - LVM LV 간 ID 불일치 문제
    • topolvm 과 동일하게 CRD)reconcile) 로 관리 (crd + etcd 로 k8s db 에 저장)
  2. 볼륨별 HA 요청으로 인한 과도한 maintenance 등의 문제
    • topolvm 과 동일하게 etcd 에 볼륨에 대한 진행상황(Status)을 기록하며, maintenance 가 계속 필요한 상황이면 unmaintenance 하지 않도록 하고, 모두 종료되면 unmaintenance. 일괄적으로 볼륨 생성 완료 기록
    • 볼륨 템플릿은 빼버리고 직접 순차적으로 리소스 생성 (불필요한 LVM 리소스에이전트 생성 시도 등 방지)

테스트

  • 설치
[root@localhost k10]# ./install_k10.sh 
+ /usr/local/bin/helm install k10 -n kasten -f values.yaml .
NAME: k10
LAST DEPLOYED: Mon Feb  2 11:22:13 2026
NAMESPACE: kasten
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
Thank you for installing Kasten’s K10 Data Management Platform 8.0.0!

Documentation can be found at https://docs.kasten.io/.

How to access the K10 Dashboard:

To establish a connection to it use the following `kubectl` command:

`kubectl --namespace kasten port-forward service/gateway 8080:80`

The Kasten dashboard will be available at: `http://127.0.0.1:8080/k10/#/`

  • persistent volume 상황 및 logical volume 상황

  • pacemaker resource 상황

  • kasten pod 상황

못올라오는 것이 있는데 왜?

실행 #2

이 헌제님이 13일 전에 변경

  • 다음 일감과 관련됨: 항목에 새 기능 #12829: csi-driver-lvm reconcile 기능 개발 값이 추가되었습니다.
실행 #3

이 헌제님이 12일 전에 변경

실행 #4

이 헌제님이 12일 전에 변경

kasten 이미지 못 올라오는 이슈 분석

  • root 로 설치해서 발생
  • root 로 고쳐도 NFS 에서 root_squash 로 열었기때문에 볼륨 접근이 되지 않음.
  • 일반 유저로 재 설치 테스트
[root@localhost k10]# grep -r runAsUser
values.schema.json:                "runAsUser": {
values.schema.json:                  "title": "runAsUser ID",
values.schema.json:                  "description": "Set securityContext runAsUser ID"
values.schema.json:            "runAsUser": {
values.schema.json:              "title": "runAsUser ID",
templates/_k10_container.tpl:            runAsUser: 1000
templates/_k10_metering.tpl:            runAsUser: 1000
templates/k10-scc.yaml:runAsUser:
templates/ocp-plugin-deployment.yaml:        runAsUser: 1000
templates/ocp-plugin-proxy-deployment.yaml:        runAsUser: 1000
templates/prometheus-scc.yaml:runAsUser:
README.md:`services.securityContext` | Custom [security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) for K10 service containers | `{"runAsUser" : 1000, "fsGroup": 1000}`
README.md:`services.securityContext.runAsUser` | User ID K10 service containers run as| `1000`
README.md:`prometheus.server.securityContext.runAsUser` | (optional) Set security context `runAsUser` ID for Prometheus server Pod | `65534`
charts/prometheus/values.yaml:    runAsUser: 65534
charts/prometheus/values.yaml:    runAsUser: 65534
charts/prometheus/values.schema.json:                        "runAsUser": {
charts/prometheus/values.schema.json:                        "runAsUser": {
charts/prometheus/templates/psp.yaml:  runAsUser:
charts/prometheus/charts/alertmanager/values.yaml:  runAsUser: 65534
charts/prometheus/charts/alertmanager/values.yaml:    # runAsUser: 65534
charts/prometheus/charts/alertmanager/values.schema.json:                "runAsUser": {
charts/prometheus/charts/alertmanager/values.schema.json:                "runAsUser": {
charts/prometheus/charts/kube-state-metrics/values.yaml:  runAsUser: 65534
charts/prometheus/charts/kube-state-metrics/templates/podsecuritypolicy.yaml:  runAsUser:
charts/prometheus/charts/prometheus-node-exporter/values.yaml:  runAsUser: 65534
charts/prometheus/charts/prometheus-node-exporter/templates/psp.yaml:  runAsUser:
charts/prometheus/charts/prometheus-pushgateway/values.yaml:  runAsUser: 65534
charts/prometheus/charts/prometheus-pushgateway/values.yaml:#  runAsUser: 65534
values.yaml:      runAsUser: 65534
values.yaml:    runAsUser: 1000 # Will override any USER instruction that a container image set for running the entrypoint and command.
실행 #5

이 헌제님이 12일 전에 변경

  • 일반 유저로 다시 생성 후 발생되는 에러
[testuser@localhost k10]$ kubectl get pods -n kasten
NAME                                     READY   STATUS                  RESTARTS        AGE
aggregatedapis-svc-58889fc44f-pxxx6      1/1     Running                 0               15m
auth-svc-fffdcd78b-69jwd                 1/1     Running                 0               15m
catalog-svc-57888cddc-87jgf              0/2     Init:CrashLoopBackOff   6 (5m5s ago)    15m
controllermanager-svc-5ff4cff8fd-spxrt   1/1     Running                 0               15m
crypto-svc-5944999479-wb6mq              4/4     Running                 0               15m
dashboardbff-svc-78d5558654-9zphk        2/2     Running                 0               15m
executor-svc-6666589f7-5c7d6             1/1     Running                 0               15m
executor-svc-6666589f7-5tpvn             1/1     Running                 0               15m
executor-svc-6666589f7-z5pw9             1/1     Running                 0               15m
frontend-svc-6854745c7b-gzphf            1/1     Running                 0               15m
gateway-66f59fd9cd-rgj85                 1/1     Running                 0               15m
jobs-svc-6db4bff688-cx9j5                0/1     Init:CrashLoopBackOff   6 (2m52s ago)   15m
kanister-svc-56596b6f67-bps5m            1/1     Running                 0               15m
logging-svc-5955f7664-djlgs              0/1     Init:CrashLoopBackOff   7 (105s ago)    15m
metering-svc-6ddb99889b-lz6b5            0/1     CrashLoopBackOff        6 (2m51s ago)   15m
prometheus-server-bd49899d6-vgwzc        1/2     CrashLoopBackOff        7 (3m23s ago)   15m
state-svc-f59cb7685-mxqcx                2/2     Running                 0               15m
  • prometheus-server 의 로그
[testuser@localhost k10]$ kubectl logs prometheus-server-bd49899d6-vgwzc \
  -n kasten \
  -c prometheus-server
time=2026-02-02T04:13:48.588Z level=INFO source=main.go:687 msg="Starting Prometheus Server" mode=server version="(version=3.3.0, branch=HEAD, revision=3c49e69330ceee9c587a1d994c78535695edff16)"
time=2026-02-02T04:13:48.588Z level=INFO source=main.go:692 msg="operational information" build_context="(go=go1.23.8 X:systemcrypto, platform=linux/amd64, user=root@buildkitsandbox, date=20250513-21:26:03, tags=netgo,builtinassets,stringlabels)" host_details="(Linux 5.14.0-570.17.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 23 22:47:01 UTC 2025 x86_64 prometheus-server-bd49899d6-vgwzc (none))" fd_limits="(soft=524288, hard=524288)" vm_limits="(soft=unlimited, hard=unlimited)"
time=2026-02-02T04:13:48.590Z level=INFO source=main.go:768 msg="Leaving GOMAXPROCS=4: CPU quota undefined" component=automaxprocs
time=2026-02-02T04:13:48.592Z level=ERROR source=query_logger.go:113 msg="Error opening query log file" component=activeQueryTracker file=/data/queries.active err="open /data/queries.active: permission denied"
panic: Unable to create mmap-ed active query log
  • nobody 로 접근
[testuser@localhost k10]$ kubectl get pod prometheus-server-bd49899d6-vgwzc -n kasten -o yaml | grep --text runAs
    runAsGroup: 65534
    runAsNonRoot: true
    runAsUser: 65534
  • nfs 를 no_root_squash 로 변경
실행 #6

이 헌제님이 11일 전에 변경

no_root_squash 만으로는 mmap 등의 operation 이 불가하여 777로 변경함 (kasten 은 anonid 65534 로 명령)

실행 #7

이 헌제님이 10일 전에 변경

kasten 스냅샷 요건

  • 원본 pvc 는 namespace 가 kasten 이여야 함.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-thin
  namespace: kasten
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: csi-driver-lvm-thin
  volumeMode: Filesystem
  resources:
    requests:
      storage: 30Gi
  • volumesnapshotclass 는 다음의 annotation 을 포함해야함.
metadata:
  name: {{ .Values.lvm.volumeSnapshotClassStub }}
  annotations:
    k10.kasten.io/is-snapshot-class: "true"

결과

[testuser@localhost k10]$ kubectl get volumesnapshot
NAME                            READYTOUSE   SOURCEPVC     SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS             SNAPSHOTCONTENT                                    CREATIONTIME   AGE
k10-csi-snap-7d9j85mghpjpq8m9   true         pvc-restore                           30Gi          csi-driver-lvm-snapshot   snapcontent-d2a55a1c-9a88-4d53-9da6-aeb61c3b7965   3m18s          3m23s
실행

내보내기 Atom PDF

클립보드 이미지 추가 (최대 크기: 50 MB)