Gitlab CE容器注册表超时-Rack :: Timeout :: RequestTimeoutException

时间:2020-09-10 12:21:49

标签: gitlab docker-registry gitlab-omnibus gitlab-ce

我想请您帮忙,我有gitlab-ce实例作为独立的GitLab在AWS EC2上运行,并且容器(docker)注册表不起作用。谢谢。

问题:在Gitlab CE版本(自托管)中,容器注册表不起作用。 症状:

  1. 通过任何项目上的UI访问GitLab注册表将导致500 HTTP错误“糟糕,我们这边出了问题。”

硬数据:

  1. gitlab-ce已经是最新版本(13.3.5-ce.0)-通过GitLab omnibus安装从官方上游安装。
  2. gitlab.rb相关部分-如您所见,所有内容均已注释掉
  3. 访问注册表的用户是实例的管理员
################################################################################
## Container Registry settings
##! Docs: https://docs.gitlab.com/ee/administration/container_registry.html
################################################################################

registry_external_url 'https://gitlab.mydomain.com:5005'

### Settings used by GitLab application
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "gitlab.mydomain.com"
gitlab_rails['registry_port'] = "5005"
# gitlab_rails['registry_path'] = "/mnt/gitlab/gitlab-rails/shared/registry"

# Notification secret, it's used to authenticate notification requests to GitLab application
# You only need to change this when you use external Registry service, otherwise
# it will be taken directly from notification settings of your Registry
# gitlab_rails['registry_notification_secret'] = nil

分析:

  1. 在日志和转储跟踪之后,该堆栈跟踪出现在日志的超时限制内:
Rack::Timeout::RequestTimeoutException (Request ran for longer than 60000ms):
  
lib/container_registry/client.rb:45:in `repository_tags'
app/models/container_repository.rb:63:in `manifest'
lib/gitlab/metrics/instrumentation.rb:161:in `block in manifest'
lib/gitlab/metrics/method_call.rb:27:in `measure'
lib/gitlab/metrics/instrumentation.rb:161:in `manifest'
app/models/container_repository.rb:67:in `tags'
lib/gitlab/metrics/instrumentation.rb:161:in `block in tags'
lib/gitlab/metrics/method_call.rb:27:in `measure'
lib/gitlab/metrics/instrumentation.rb:161:in `tags'
app/models/container_repository.rb:87:in `has_tags?'
lib/gitlab/metrics/instrumentation.rb:161:in `block in has_tags?'
lib/gitlab/metrics/method_call.rb:27:in `measure'
lib/gitlab/metrics/instrumentation.rb:161:in `has_tags?'
app/controllers/projects/registry/repositories_controller.rb:57:in `block (2 levels) in ensure_root_container_repository!'
app/controllers/projects/registry/repositories_controller.rb:56:in `tap'
app/controllers/projects/registry/repositories_controller.rb:56:in `block in ensure_root_container_repository!'
app/controllers/projects/registry/repositories_controller.rb:53:in `tap'
app/controllers/projects/registry/repositories_controller.rb:53:in `ensure_root_container_repository!'
app/controllers/application_controller.rb:491:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:482:in `set_session_storage'
lib/gitlab/i18n.rb:73:in `with_locale'
lib/gitlab/i18n.rb:79:in `with_user_locale'
app/controllers/application_controller.rb:476:in `set_locale'
lib/gitlab/error_tracking.rb:50:in `with_context'
app/controllers/application_controller.rb:541:in `sentry_context'
app/controllers/application_controller.rb:469:in `block in set_current_context'
lib/gitlab/application_context.rb:52:in `block in use'
lib/gitlab/application_context.rb:52:in `use'
lib/gitlab/application_context.rb:20:in `with_context'
app/controllers/application_controller.rb:462:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/transaction.rb:61:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/request_profiler/middleware.rb:17:in `call'
lib/gitlab/middleware/go.rb:20:in `call'
lib/gitlab/etag_caching/middleware.rb:13:in `call'
lib/gitlab/middleware/multipart.rb:140:in `call'
lib/gitlab/middleware/read_only/controller.rb:51:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:23:in `call'
config/initializers/fix_local_cache_middleware.rb:9:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:60:in `call'
lib/gitlab/middleware/release_env.rb:12:in `call'

有关更多详细信息,请参见此json

{
    "method": "GET",
    "path": "## REDACTED ##/container_registry",
    "format": "html",
    "controller": "Projects::Registry::RepositoriesController",
    "action": "index",
    "status": 500,
    "time": "2020-09-10T10:48:28.546Z",
    "params": [{
        "key": "namespace_id",
        "value": "## REDACTED ##"
    }, {
        "key": "project_id",
        "value": "## REDACTED ##"
    }],
    "remote_ip": "## REDACTED ##",
    "user_id": 1,
    "username": "## REDACTED ##",
    "ua": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
    "correlation_id": "9xxF4mcYPP6",
    "meta.user": "## REDACTED ##",
    "meta.project": "## REDACTED ##",
    "meta.root_namespace": "## REDACTED ##",
    "meta.caller_id": "Projects::Registry::RepositoriesController#index",
    "redis_calls": 11,
    "redis_duration_s": 0.0033759999999999997,
    "redis_read_bytes": 1568,
    "redis_write_bytes": 1664,
    "redis_cache_calls": 10,
    "redis_cache_duration_s": 0.002717,
    "redis_cache_read_bytes": 1387,
    "redis_cache_write_bytes": 548,
    "redis_shared_state_calls": 1,
    "redis_shared_state_duration_s": 0.000659,
    "redis_shared_state_read_bytes": 181,
    "redis_shared_state_write_bytes": 1116,
    "queue_duration_s": 0.026687,
    "cpu_s": 0.09,
    "exception.class": "Rack::Timeout::RequestTimeoutException",
    "exception.message": "Request ran for longer than 60000ms",
    "exception.backtrace": 
    [
        "lib/container_registry/client.rb:45:in `repository_tags'", 
        "app/models/container_repository.rb:63:in `manifest'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `block in manifest'", 
        "lib/gitlab/metrics/method_call.rb:27:in `measure'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `manifest'", 
        "app/models/container_repository.rb:67:in `tags'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `block in tags'", 
        "lib/gitlab/metrics/method_call.rb:27:in `measure'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `tags'", 
        "app/models/container_repository.rb:87:in `has_tags?'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `block in has_tags?'", 
        "lib/gitlab/metrics/method_call.rb:27:in `measure'", 
        "lib/gitlab/metrics/instrumentation.rb:161:in `has_tags?'", 
        "app/controllers/projects/registry/repositories_controller.rb:57:in `block (2 levels) in ensure_root_container_repository!'", 
        "app/controllers/projects/registry/repositories_controller.rb:56:in `tap'", 
        "app/controllers/projects/registry/repositories_controller.rb:56:in `block in ensure_root_container_repository!'", 
        "app/controllers/projects/registry/repositories_controller.rb:53:in `tap'", 
        "app/controllers/projects/registry/repositories_controller.rb:53:in `ensure_root_container_repository!'", 
        "app/controllers/application_controller.rb:491:in `set_current_admin'", 
        "lib/gitlab/session.rb:11:in `with_session'", 
        "app/controllers/application_controller.rb:482:in `set_session_storage'", 
        "lib/gitlab/i18n.rb:73:in `with_locale'", 
        "lib/gitlab/i18n.rb:79:in `with_user_locale'", 
        "app/controllers/application_controller.rb:476:in `set_locale'", 
        "lib/gitlab/error_tracking.rb:50:in `with_context'", 
        "app/controllers/application_controller.rb:541:in `sentry_context'", 
        "app/controllers/application_controller.rb:469:in `block in set_current_context'", 
        "lib/gitlab/application_context.rb:52:in `block in use'",
        "lib/gitlab/application_context.rb:52:in `use'", 
        "lib/gitlab/application_context.rb:20:in `with_context'", 
        "app/controllers/application_controller.rb:462:in `set_current_context'", 
        "lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'", 
        "lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'", 
        "lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'", 
        "lib/gitlab/metrics/transaction.rb:61:in `run'", 
        "lib/gitlab/metrics/rack_middleware.rb:16:in `call'", 
        "lib/gitlab/request_profiler/middleware.rb:17:in `call'", 
        "lib/gitlab/middleware/go.rb:20:in `call'", 
        "lib/gitlab/etag_caching/middleware.rb:13:in `call'", 
        "lib/gitlab/middleware/multipart.rb:140:in `call'", 
        "lib/gitlab/middleware/read_only/controller.rb:51:in `call'", 
        "lib/gitlab/middleware/read_only.rb:18:in `call'", 
        "lib/gitlab/middleware/same_site_cookies.rb:27:in `call'", 
        "lib/gitlab/middleware/basic_health_check.rb:25:in `call'", 
        "lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'", 
        "lib/gitlab/middleware/request_context.rb:23:in `call'",
        "config/initializers/fix_local_cache_middleware.rb:9:in `call'",
        "lib/gitlab/metrics/requests_rack_middleware.rb:60:in `call'",
        "lib/gitlab/middleware/release_env.rb:12:in `call'"],
    "db_duration_s": 0.00385,
    "view_duration_s": 0.0,
    "duration_s": 59.94318,
    "db_count": 10,
    "db_write_count": 0,
    "db_cached_count": 1
}
  1. 注册表应该为空,但是运行gitlab-ctl registry-garbage-collect仍然会导致错误
Running garbage-collect using configuration ["/opt/gitlab/embedded/bin/registry", "garbage-collect", "/var/opt/gitlab/registry/config.yml"], this might take a while...
INFO[0000] starting mark stage                           environment=production go.version=go1.14.7 instance.id=d714caeb-b88f-4bca-823e-9da27acb9999 service=registry
failed to garbage collect: failed to mark: : Path not found: /docker/registry/v2/repositories
Failed to run garbage-collect command, starting registry service.
  1. Gitlab Registry API响应localhost:5000 / v2 /地址(默认值)的卷曲
# curl localhost:5000/v2/      
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}

0 个答案:

没有答案