아래와 같이 해야 하는데,
dsl.ContainerOp(...).add_volume(vol).add_volume_mount(mnt)
그래서 원래는 volume claim을 아래와 같이 해야 하는데 이렇게 하면 안된다. 개별 pod은 되지만 argo workflow에서 기동되는 container에서는 할당이 안된다. claim이 안되서 계속 pending 상태로 나온다.
vol = k8s_client.V1Volume(
name='my-volume',
persistent_volume_claim=
k8s_client.V1PersistentVolumeClaimVolumeSource(
claim_name='default/task-pv-claim'
)
)
결국은 아래와 같이 hostpath를 직접 붙이는 방법으로 해야 붙일 수 있다.
vol = k8s_client.V1Volume(
name='my-volume',
host_path=k8s_client.V1HostPathVolumeSource(path='/home/vagrant/shared'),
)
ls.py를 실행하면 logs에 아래와 같이 나온다.
total 48
drwxrwxr-x 2 1000 1000 4096 Apr 24 20:17 .
drwxr-xr-x 1 root root 4096 Apr 24 20:35 ..
-rw-rw-r-- 1 1000 1000 15986 Apr 24 17:52 flowlist.txt
-rw-rw-r-- 1 1000 1000 3000 Apr 24 20:04 greetings.yaml
-rw-rw-r-- 1 1000 1000 443 Apr 24 20:03 ls-volume-test.yaml
-rw-rw-r-- 1 1000 1000 1766 Apr 24 19:48 out
-rw-rw-r-- 1 1000 1000 189 Apr 24 17:28 pv-claim.yaml
-rw-rw-r-- 1 1000 1000 405 Apr 24 18:09 pv-pod.yaml
-rw-rw-r-- 1 1000 1000 240 Apr 24 17:24 pv.yaml
개별 pod에 volume 붙이는 방법
위에서 argo는 실패하였지만 pv-pod.yaml을 보면 개발 pod은 정상적으로 붙일 수 있다. 즉 다음과 같은 순서로 가능하다.
- PV를 선언하고: pv.yaml
- claim을 한다.: pv-claim.yaml
- pod에 붙인다.: pv-pod.yaml
댓글 없음:
댓글 쓰기