2.7. 일반적인 3scale 설치 문제 해결


이 섹션에는 일반적인 설치 문제 목록이 포함되어 있으며 문제 해결에 대한 지침을 제공합니다.

2.7.1. 더티 영구 볼륨 클레임을 남기는 이전 배포

문제

이전 배포 시도에서는 더티 PVC(영구 볼륨 클레임)로 인해 MySQL 컨테이너가 시작되지 않습니다.

원인

OpenShift에서 프로젝트를 삭제해도 연결된 PVC는 정리되지 않습니다.

해결책

절차

  1. oc get pvc 명령을 사용하여 오류가 있는 MySQL 데이터가 포함된 PVC를 찾습니다.

    # oc get pvc
    NAME                    STATUS    VOLUME    CAPACITY   ACCESSMODES   AGE
    backend-redis-storage   Bound     vol003    100Gi      RWO,RWX       4d
    mysql-storage           Bound     vol006    100Gi      RWO,RWX       4d
    system-redis-storage    Bound     vol008    100Gi      RWO,RWX       4d
    system-storage          Bound     vol004    100Gi      RWO,RWX       4d
  2. OpenShift UI에서 cancel deployment를 클릭하여 system-mysql pod의 배포를 중지합니다.
  3. MySQL 경로 아래의 모든 항목을 삭제하여 볼륨을 정리합니다.
  4. system-mysql 배포를 시작합니다.

2.7.2. 인증된 이미지 레지스트리의 인증 정보가 잘못되었거나 누락됨

문제

Pod가 시작되지 않습니다. 이미지 스트림에 다음 오류가 표시됩니다.

! error: Import failed (InternalError): ...unauthorized: Please login to the Red Hat Registry

원인

OpenShift 4.x에 3scale을 설치하는 동안 OpenShift는 이미지 스트림이 참조하는 이미지를 가져올 수 없기 때문에 포드를 시작하지 못합니다. 이는 Pod가 가리키는 레지스트리에 대해 인증할 수 없기 때문에 발생합니다.

해결책

절차

  1. 다음 명령을 입력하여 컨테이너 레지스트리 인증 구성을 확인합니다.

    $ oc get secret
    • 시크릿이 있는 경우 터미널에 다음 출력이 표시됩니다.

      threescale-registry-auth          kubernetes.io/dockerconfigjson        1         4m9s
    • 그러나 출력이 표시되지 않는 경우 다음을 수행해야 합니다.
  2. 이전에 레지스트리 서비스 계정을 생성하는 동안 설정한 인증 정보를 사용하여 보안을 생성합니다.
  3. 제공된 oc create secret 명령에서 < your- registry-service-account-username> 및 < your- registry-service-account-password >를 교체하여 OpenShift에서 레지스트리 인증 구성 단계를 사용합니다.
  4. APIManager 리소스와 동일한 네임스페이스에 threescale-registry-auth 시크릿을 생성합니다. < project-name> 내에서 다음을 실행해야 합니다.

    $ oc project <project-name>
    $ oc create secret docker-registry threescale-registry-auth \
      --docker-server=registry.redhat.io \
      --docker-username="<your-registry-service-account-username>" \
      --docker-password="<your-registry-service-account-password>"
      --docker-email="<email-address>"
  5. APIManager 리소스를 삭제하고 다시 생성합니다.

    $ oc delete -f apimanager.yaml
    apimanager.apps.3scale.net "example-apimanager" deleted
    
    $ oc create -f apimanager.yaml
    apimanager.apps.3scale.net/example-apimanager created

검증

  1. 다음 명령을 입력하여 배포 상태가 Starting 또는 Ready 상태인지 확인합니다. 그런 다음 Pod가 생성되기 시작합니다.

    $ oc describe apimanager
    (...)
    Status:
      Deployments:
        Ready:
          apicast-staging
          system-memcache
          system-mysql
          system-redis
          zync
          zync-database
          zync-que
        Starting:
          apicast-production
          backend-cron
          backend-worker
          system-sidekiq
          system-sphinx
        Stopped:
          backend-listener
          backend-redis
          system-app
  2. 다음 명령을 입력하여 각 Pod의 상태를 확인합니다.

    $ oc get pods
    NAME                               READY   STATUS             RESTARTS   AGE
    3scale-operator-66cc6d857b-sxhgm   1/1     Running            0          17h
    apicast-production-1-deploy        1/1     Running            0          17m
    apicast-production-1-pxkqm         0/1     Pending            0          17m
    apicast-staging-1-dbwcw            1/1     Running            0          17m
    apicast-staging-1-deploy           0/1     Completed          0          17m
    backend-cron-1-deploy              1/1     Running            0          17m

2.7.3. Docker 레지스트리에서 잘못 가져 오기

문제

설치 중에 다음 오류가 발생합니다.

svc/system-redis - 1EX.AMP.LE.IP:6379
  dc/system-redis deploys docker.io/rhscl/redis-32-rhel7:3.2-5.3
    deployment #1 failed 13 minutes ago: config change

원인

OpenShift는 docker 명령을 실행하여 컨테이너 이미지를 검색하고 가져옵니다. 이 명령은 registry.redhat.io Red Hat Ecosystem Catalog 대신 docker.io Docker 레지스트리를 참조합니다.

이는 시스템에 예기치 않은 버전의 Docker 컨테이너 환경이 포함된 경우 발생합니다.

해결책

절차

적절한 Docker 컨테이너 버전 을 사용합니다.

2.7.4. 영구 볼륨이 로컬에 마운트될 때 MySQL의 권한 문제

문제

system-msql Pod가 충돌하며 배포되지 않아 이에 종속된 다른 시스템이 배포에 실패합니다. Pod 로그에 다음 오류가 표시됩니다.

[ERROR] Cannot start server : on unix socket: Permission denied
[ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
[ERROR] Aborting

원인

MySQL 프로세스는 부적절한 사용자 권한으로 시작됩니다.

해결책

절차

  1. 영구 볼륨에 사용되는 디렉터리에는 root 그룹에 대한 쓰기 권한이 있어야 합니다. MySQL 서비스가 root 그룹에서 다른 사용자로 실행되므로 root 사용자에 대한 읽기-쓰기 권한이 있는 것만으로는 충분하지 않습니다. root 사용자로 다음 명령을 실행합니다.

    chmod -R g+w /path/for/pvs
  2. SElinux가 액세스를 차단하지 못하도록 다음 명령을 실행합니다.

    chcon -Rt svirt_sandbox_file_t /path/for/pvs

2.7.5. 로고 또는 이미지를 업로드할 수 없음

문제

로고를 업로드할 수 없음 - system-app 로그에 다음과 같은 오류가 표시됩니다.

Errno::EACCES (Permission denied @ dir_s_mkdir - /opt/system/public//system/provider-name/2

원인

영구 볼륨은 OpenShift에서 쓸 수 없습니다.

해결책

절차

OpenShift에서 영구 볼륨에 쓸 수 있는지 확인합니다. root 그룹이 소유해야 하며 쓰기 가능한 그룹이어야 합니다.

2.7.6. OpenShift에서 작동하지 않는 테스트 호출

문제

테스트 호출은 OpenShift에서 새 서비스 및 경로를 생성한 후 작동하지 않습니다. curl을 통한 직접 호출도 실패합니다. 즉, service not available.

원인

3scale에서는 기본적으로 HTTPS 경로가 필요하며 OpenShift 경로는 보안되지 않습니다.

해결책

절차

OpenShift 라우터 설정에서 보안 경로 확인란이 클릭되었는지 확인합니다.

2.7.7. 3scale과 다른 프로젝트의 APIcast 배포 실패

문제

APIcast 배포가 실패합니다(pod가 파란색으로 바뀌지 않음). 로그에 다음 오류가 표시됩니다.

update acceptor rejected apicast-3: pods for deployment "apicast-3" took longer than 600 seconds to become ready

Pod에 다음 오류가 표시됩니다.

Error synching pod, skipping: failed to "StartContainer" for "apicast" with RunContainerError: "GenerateRunContainerOptions: secrets \"apicast-configuration-url-secret\" not found"

원인

시크릿이 제대로 설정되어 있지 않았습니다.

해결책

절차

APIcast v3을 사용하여 보안을 생성할 때 apicast-configuration-url-secret을 지정합니다.

oc create secret generic apicast-configuration-url-secret --from-literal=password=https://<ACCESS_TOKEN>@<TENANT_NAME>-admin.<WILDCARD_DOMAIN>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.