[Home-K8S] #22 FluxCD 계층과 분리 / 다중 클러스터 리소스 공유와 설정 분리
FluxCD - yaml 앞서 fluxcd 를 이용해서 helm chart 를 구성했습니다. 그 외에 일반적인 yaml
ssh 를 통한 원격 접속도 안되고, kubelet이 namespace로 분리되어 있기 때문에 폴더 하나 만드는 일에도 yaml 파일을 수정해서 apply 를 해줘야 합니다.
root 파일 시스템에 폴더를 만들고 kubelet namespace에서 해당 경로를 연결해 줘야 합니다.
저는 local-path-provisioner 를 사용하기 위해 경로를 하나 만들어 줄 겁니다. destination : containerd 에서 사용할 경로
source : root 경로
machine:
kubelet:
extraMounts:
- destination: /var/lib/local-path-provisioner
type: bind # Type specifies the mount kind.
source: /var/lib/local-path-provisioner
options:
- bind
- rshared
- rw경로에 폴더가 없으면 생성합니다.
disk를 마운트 할 때에는 UserVolumeConfig 를 사용합니다.
install > disk 처럼 경로를 직접 설정해 줘도 되지만, 경로는 바뀔 수 있으므로 diskSelector를 추천합니다.
아래 설정을 yaml 파일 제일 아래에 추가하면 됩니다.
---
apiVersion: v1alpha1
kind: UserVolumeConfig
name: data-disk
provisioning:
diskSelector:
match: disk.size > 900u * GiB && disk.size < 1200u * GiB
minSize: 900GiB
maxSize: 1200GiB
filesystem:
type: xfs이놈때문에 고생을 좀 했어요. "talosctl get disks -n <node ip>" 로 disk 정보를 보고 집어넣으려고 했더니 잘 안되더라구요.
와일드 카드(*) 도 되고 startswith 도 된다는데 저는 실패했습니다.

diskSelector:
match: disk.size > 900u * GiB"/var/mnt/data-disk" 경로로 마운트 됩니다. 바로 사용해도 되지만 extraMounts 로 설정해 주는 것이 정상 mount 확인하기도 편합니다.
extraMounts:
- destination: /var/lib/local-path-provisioner
type: bind
source: /var/mnt/data-disk/local-path
options:
- bind
- rshared
- rw마운트가 정상적으로 되지 않아 경로가 생성되지 않으면 "mount failed" 로그를 계속 발생시키다가 터져서 꺼져버립니다.
로그를 보면 "u-data-disk" 라고 "u-" 가 붙어서 나오게 되는데, 마운트 설정을 잘못해서 disk 를 못찾는 것입니다.
u-data-disk 는 라벨로, diskSelector를 잘 설정해서 정상적으로 마운트 되면 /var/mnt/data-disk 에 마운트 됩니다.
디스크를 마운트 할 때 maxSize 를 지정하면 나머지는 따로 마운트를 진행하면 됩니다. 하나의 디스크를 나누는 거죠.
---
apiVersion: v1alpha1
kind: UserVolumeConfig
name: data-disk
provisioning:
diskSelector:
match: disk.transport == 'nvme'
maxSize: 500GiB
filesystem:
type: xfs
---
apiVersion: v1alpha1
kind: UserVolumeConfig
name: data-disk
provisioning:
diskSelector:
match: disk.transport == 'nvme'
maxSize: 500GiB
filesystem:
type: xfs OS Disk 는 EPHEMERAL 파티션을 데이터 용으로 사용합니다.
해당 부분을 설정해서 OS 영역 크기를 설정할 수 있습니다.
---
apiVersion: v1alpha1
kind: VolumeConfig
name: EPHEMERAL
provisioning:
maxSize: 125GiB남은 부분은 UserVolumeConfig 로 설정하면 되겠죠.
---
apiVersion: v1alpha1
kind: UserVolumeConfig
name: data
provisioning:
diskSelector:
match: system_disk
minSize: 250GiB
filesystem:
type: xfs
Comments