728x90
안녕하세요?
Knative를 사용하다가 pvc를 Knative의 ksvc에서 사용을 해야 해서 알아봤습니다. Knative에서 pvc를 mount를 하기 위해서는 설정을 변경해야만 합니다. pvc 이외의 configmap 등의 volume 유형에 대해서는 바로 사용이 가능합니다.
Knative operator를 사용하는 경우에, 아래 처럼 features에 pvc 설정을 추가하면 됩니다.
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
...
config:
features:
# 아래 두 설정을 추가하면 됩니다.
kubernetes.podspec-persistent-volume-claim: enabled
kubernetes.podspec-persistent-volume-write: enabled
...
출처: https://knative.dev/docs/serving/configuration/feature-flags/#kubernetes-emptydir-volume
이후, ksvc 생성 시 아래 처럼 volumes와 volumeMounts를 추가하면 ksvc의 pod에 pvc가 연결되는 것을 확인할 수 있습니다.
apiVersion: serving.knative.dev/v1
kind: Service
...
spec:
template:
spec:
containers:
...
volumeMounts:
- mountPath: /data
name: mydata
readOnly: true
volumes:
- name: mydata
persistentVolumeClaim:
claimName: minio-pv-claim
readOnly: true
다만, pvc가 ReadWriteOnce 이더라도 multi revision에 의해서 동시에 여러 pod이 하나의 pvc를 마운트하게 되면, pvc의 데이터에 대해서 보장이 안되기 때문에, 이부분은 고려를 하셔야 합니다.
저 같은 경우에는 ksvc를 patch하여 새로운 revision을 추가 시 앞선, 모든 revision에 대해서는 replicas를 강제로 0으로 지정하여 pvc가 항상 하나의 revision에 대해서만 바인딩이 되도록 설정 했습니다.
'개발 > AWS EKS' 카테고리의 다른 글
[EKS] Gatekeeper (1) | 2024.04.15 |
---|---|
[K8S] Ephemeral Container (0) | 2024.03.07 |
DockerHub 이미지를 Private Registry에 업로드 (0) | 2024.02.19 |
[Kubernetes] initContainer 와 containers의 volume 공유 (2) | 2024.02.07 |
Containerd와 AWS ECR login 방법 (1) | 2024.01.31 |