3.6. 더 빠른 작업 공간 시작을 위해 이미지 캐싱
OpenShift Dev Spaces 작업 공간의 시작 시간 성능을 개선하려면 OpenShift 클러스터의 이미지를 사전 가져오는 데 사용할 수 있는 OpenShift Dev Spaces 관련 구성 요소인 Image Puller를 사용합니다.
Image Puller는 각 노드에서 관련 OpenShift Dev Spaces 작업 공간을 사전 가져오도록 구성할 수 있는 DaemonSet 을 생성하는 추가 OpenShift 배포입니다. 이러한 이미지는 OpenShift Dev Spaces 작업 공간이 시작될 때 이미 사용 가능하므로 작업 공간 시작 시간이 단축됩니다.
- https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.16/html-single/user_guide/index#installing-image-puller-on-kubernetes-by-using-cli
- 3.6.2절. “웹 콘솔을 사용하여 OpenShift에 이미지 Puller 설치”
- 3.6.1절. “CLI를 사용하여 OpenShift에 이미지 가져오기 설치”
- 3.6.3절. “기본 Dev Spaces 이미지를 사전 가져오도록 이미지 Puller 구성”
- 3.6.4절. “사용자 정의 이미지를 사전 가져오도록 이미지 가져오기 구성”
- 3.6.5절. “추가 이미지를 사전 가져오도록 이미지 가져오기 구성”
3.6.1. CLI를 사용하여 OpenShift에 이미지 가져오기 설치
OpenShift oc
관리 툴을 사용하여 OpenShift에 Kubernetes 이미지 가져오기를 설치할 수 있습니다.
사전 요구 사항
-
OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. OpenShift CLI 시작하기를 참조하십시오.
프로세스
링크로 이동하여 가져올 관련 컨테이너 이미지 목록을 수집합니다.
-
https://<openshift_dev_spaces_fqdn>/plugin-registry/v3/external_images.txt
-
https://<openshift_dev_spaces_fqdn>/devfile-registry/devfiles/external_images.txt
-
메모리 요청 및 제한 매개 변수를 정의하여 가져온 컨테이너와 플랫폼에 충분한 메모리가 있는지 확인합니다.
CACHING_MEMORY_REQUEST
또는CACHING_MEMORY_LIMIT
에 대한 최소 값을 정의할 때 가져올 각 컨테이너 이미지를 실행하는 데 필요한 메모리 양을 고려하십시오.CACHING_MEMORY_REQUEST
또는CACHING_MEMORY_LIMIT
의 최대 값을 정의할 때 클러스터의 DaemonSet Pod에 할당된 총 메모리를 고려하십시오.(memory limit) * (number of images) * (number of nodes in the cluster)
컨테이너 메모리 제한
20Mi
를 사용하여 20개의 노드에서 5개의 이미지를 가져오려면2000Mi
의 메모리가 필요합니다.이미지 Puller 리포지토리를 복제하고 OpenShift 템플릿이 포함된 디렉터리에 가져옵니다.
$ git clone https://github.com/che-incubator/kubernetes-image-puller $ cd kubernetes-image-puller/deploy/openshift
다음 매개변수를 사용하여
app.yaml
,configmap.yaml
및serviceaccount.yaml
OpenShift 템플릿을 구성합니다.표 3.37. app.yaml의 이미지 Puller OpenShift 템플릿 매개변수 현재의 사용법 기본 DEPLOYMENT_NAME
ConfigMap의
DEPLOYMENT_NAME
값kubernetes-image-puller
IMAGE
kubernetes-image-puller
배포에 사용되는 이미지registry.redhat.io/devspaces/imagepuller-rhel8
IMAGE_TAG
가져올 이미지 태그
latest
SERVICEACCOUNT_NAME
배포에서 생성하고 사용하는 ServiceAccount의 이름
kubernetes-image-puller
표 3.38. configmap.yaml의 이미지 Puller OpenShift 템플릿 매개변수 현재의 사용법 기본 CACHING_CPU_LIMIT
ConfigMap의
CACHING_CPU_LIMIT
값.2
CACHING_CPU_REQUEST
ConfigMap의
CACHING_CPU_REQUEST
값.05
CACHING_INTERVAL_HOURS
ConfigMap의
CACHING_INTERVAL_HOURS
의 값"1"
CACHING_MEMORY_LIMIT
ConfigMap의
CACHING_MEMORY_LIMIT
값"20Mi"
CACHING_MEMORY_REQUEST
ConfigMap의
CACHING_MEMORY_REQUEST
값"10Mi"
DAEMONSET_NAME
ConfigMap의
DAEMONSET_NAME
값kubernetes-image-puller
DEPLOYMENT_NAME
ConfigMap의
DEPLOYMENT_NAME
값kubernetes-image-puller
IMAGES
ConfigMap의
IMAGES
값{}
NAMESPACE
ConfigMap의
NAMESPACE
값k8s-image-puller
NODE_SELECTOR
ConfigMap의
NODE_SELECTOR
값"{}"
표 3.39. serviceaccount.yaml의 이미지 Puller OpenShift 템플릿 매개변수 현재의 사용법 기본 SERVICEACCOUNT_NAME
배포에서 생성하고 사용하는 ServiceAccount의 이름
kubernetes-image-puller
KIP_IMAGE
절전 바이너리를 복사하는 이미지 풀러 이미지
registry.redhat.io/devspaces/imagepuller-rhel8:latest
이미지 가져오기를 호스팅할 OpenShift 프로젝트를 생성합니다.
$ oc new-project <k8s-image-puller>
템플릿을 처리하고 적용하여 가져오기를 설치합니다.
$ oc process -f serviceaccount.yaml | oc apply -f - $ oc process -f configmap.yaml | oc apply -f - $ oc process -f app.yaml | oc apply -f -
검증 단계
< kubernetes-image-puller > 배포 및 < kubernetes-image-puller > DaemonSet이 있는지 확인합니다. DaemonSet에는 클러스터의 각 노드에 대한 Pod가 있어야 합니다.
$ oc get deployment,daemonset,pod --namespace <k8s-image-puller>
< kubernetes-image-puller >
ConfigMap
의 값을 확인합니다.$ oc get configmap <kubernetes-image-puller> --output yaml
3.6.2. 웹 콘솔을 사용하여 OpenShift에 이미지 Puller 설치
OpenShift 웹 콘솔을 사용하여 OpenShift에 커뮤니티 지원 Kubernetes Image Puller Operator를 설치할 수 있습니다.
사전 요구 사항
- 클러스터 관리자의 OpenShift 웹 콘솔 세션입니다. 웹 콘솔 액세스를 참조하십시오.
프로세스
- 커뮤니티 지원 Kubernetes Image Puller Operator를 설치합니다. 웹 콘솔을 사용하여 OperatorHub에서 설치를 참조하십시오.
-
커뮤니티 지원 Kubernetes Image Puller Operator에서 kubernetes-image-puller
KubernetesImagePuller
피연산자를 생성합니다. 설치된 Operator에서 애플리케이션 생성 을 참조하십시오.
3.6.3. 기본 Dev Spaces 이미지를 사전 가져오도록 이미지 Puller 구성
기본 OpenShift Dev Spaces 이미지를 사전 가져오도록 Kubernetes 이미지 가져오기를 구성할 수 있습니다. Red Hat OpenShift Dev Spaces Operator는 사전 가져올 이미지 목록을 제어하고 OpenShift Dev Spaces 업그레이드에서 자동으로 업데이트합니다.
사전 요구 사항
- 조직의 OpenShift Dev Spaces 인스턴스가 Kubernetes 클러스터에 설치되어 실행 중입니다.
- 이미지 Puller는 Kubernetes 클러스터에 설치됩니다.
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오.
프로세스
OpenShift Dev Spaces 이미지를 사전 가져오도록 이미지 Puller를 구성합니다.
oc patch checluster/devspaces \ --namespace openshift-devspaces \ --type='merge' \ --patch '{ "spec": { "components": { "imagePuller": { "enable": true } } } }'
3.6.4. 사용자 정의 이미지를 사전 가져오도록 이미지 가져오기 구성
사용자 정의 이미지를 사전 가져오도록 Kubernetes 이미지 가져오기를 구성할 수 있습니다.
사전 요구 사항
- 조직의 OpenShift Dev Spaces 인스턴스가 Kubernetes 클러스터에 설치되어 실행 중입니다.
- 이미지 Puller는 Kubernetes 클러스터에 설치됩니다.
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오.
프로세스
사용자 지정 이미지를 사전 가져오도록 이미지 가져오기를 구성합니다.
oc patch checluster/devspaces \ --namespace openshift-devspaces \ --type='merge' \ --patch '{ "spec": { "components": { "imagePuller": { "enable": true, "spec": { "images": "NAME-1=IMAGE-1;NAME-2=IMAGE-2" 1 } } } } }'
- 1
- 이미지--------------------
3.6.5. 추가 이미지를 사전 가져오도록 이미지 가져오기 구성
추가 OpenShift Dev Spaces 이미지를 미리 가져오도록 Kubernetes 이미지 가져오기를 구성할 수 있습니다.
사전 요구 사항
- 조직의 OpenShift Dev Spaces 인스턴스가 Kubernetes 클러스터에 설치되어 실행 중입니다.
- 이미지 Puller는 Kubernetes 클러스터에 설치됩니다.
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오.
프로세스
k8s-image-puller
네임스페이스를 생성합니다.oc create namespace k8s-image-puller
KubernetesImagePuller
사용자 정의 리소스를 생성합니다.oc apply -f - <<EOF apiVersion: che.eclipse.org/v1alpha1 kind: KubernetesImagePuller metadata: name: k8s-image-puller-images namespace: k8s-image-puller spec: images: "__NAME-1__=__IMAGE-1__;__NAME-2__=__IMAGE-2__" 1 EOF
- 1
- 이미지--------------------