Unable to pull image from insecure registry, http: server gave HTTP response to HTTPS client

I’m using docker registry as a private image repository for a K8S cluster on my LAN, but the containerd on the K8S cluster can’t pull the image

version as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# containerd --version
containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542
root@cp01:~# kubelet version
E1223 16:22:54.637029 35982 run.go:72] "command failed" err="unknown command version"
root@cp01:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"}
root@cp01:~# kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
Server Version: v1.32.0
</code>
<code>root@cp01:~# containerd --version containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542 root@cp01:~# kubelet version E1223 16:22:54.637029 35982 run.go:72] "command failed" err="unknown command version" root@cp01:~# kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"} root@cp01:~# kubectl version Client Version: v1.32.0 Kustomize Version: v5.5.0 Server Version: v1.32.0 </code>
root@cp01:~# containerd --version
containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542
root@cp01:~# kubelet version
E1223 16:22:54.637029   35982 run.go:72] "command failed" err="unknown command version"
root@cp01:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"}
root@cp01:~# kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
Server Version: v1.32.0

I’ve also referenced the same problem that already exists on github, as well as the official K8S docs and other articles, but I still can’t solve it, so these are the links I’ve looked at

Unable to pull image from insecure registry, http: server gave HTTP response to HTTPS client

Pull an Image from a Private Registry

How to Configure Private Registry for Kubernetes cluster running with containerd

/etc/containerd/config.toml as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>version = 3
root = '/var/lib/containerd'
state = '/run/containerd'
temp = ''
plugin_dir = ''
disabled_plugins = []
required_plugins = []
oom_score = 0
imports = []
[grpc]
address = '/run/containerd/containerd.sock'
tcp_address = ''
tcp_tls_ca = ''
uid = 0
gid = 0
max_recv_message_size = 16777216
max_send_message_size = 16777216
[ttrpc]
address = ''
uid = 0
gid = 0
[debug]
address = ''
uid = 0
gid = 0
level = ''
format = ''
[metrics]
address = ''
grpc_histogram = false
[plugins]
[plugins.'io.containerd.cri.v1.images']
snapshotter = 'overlayfs'
disable_snapshot_annotations = true
discard_unpacked_layers = false
max_concurrent_downloads = 3
image_pull_progress_timeout = '5m0s'
image_pull_with_sync_fs = false
stats_collect_period = 10
[plugins.'io.containerd.cri.v1.images'.pinned_images]
sandbox = 'registry.k8s.io/pause:3.10'
[plugins.'io.containerd.cri.v1.images'.registry]
config_path = ''
[plugins."io.containerd.grpc.v1.cri".registry.auths]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth]
auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"]
endpoint = ["http://172.26.22.242:5000"]
[plugins.'io.containerd.cri.v1.images'.image_decryption]
key_model = 'node'
[plugins.'io.containerd.cri.v1.runtime']
enable_selinux = false
selinux_category_range = 1024
max_container_log_line_size = 16384
disable_apparmor = false
restrict_oom_score_adj = false
disable_proc_mount = false
unset_seccomp_profile = ''
tolerate_missing_hugetlb_controller = true
disable_hugetlb_controller = true
device_ownership_from_security_context = false
ignore_image_defined_volumes = false
netns_mounts_under_state_dir = false
enable_unprivileged_ports = true
enable_unprivileged_icmp = true
enable_cdi = true
cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi']
drain_exec_sync_io_timeout = '0s'
ignore_deprecation_warnings = []
[plugins.'io.containerd.cri.v1.runtime'.containerd]
default_runtime_name = 'runc'
ignore_blockio_not_enabled_errors = false
ignore_rdt_not_enabled_errors = false
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes]
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc]
runtime_type = 'io.containerd.runc.v2'
runtime_path = ''
pod_annotations = []
container_annotations = []
privileged_without_host_devices = false
privileged_without_host_devices_all_devices_allowed = false
base_runtime_spec = ''
cni_conf_dir = ''
cni_max_conf_num = 0
snapshotter = ''
sandboxer = 'podsandbox'
io_type = ''
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
BinaryName = ''
CriuImagePath = ''
CriuWorkPath = ''
IoGid = 0
IoUid = 0
NoNewKeyring = false
Root = ''
ShimCgroup = ''
SystemdCgroup = true
[plugins.'io.containerd.cri.v1.runtime'.cni]
bin_dir = '/opt/cni/bin'
conf_dir = '/etc/cni/net.d'
max_conf_num = 1
setup_serially = false
conf_template = ''
ip_pref = ''
use_internal_loopback = false
[plugins.'io.containerd.gc.v1.scheduler']
pause_threshold = 0.02
deletion_threshold = 0
mutation_threshold = 100
schedule_delay = '0s'
startup_delay = '100ms'
[plugins.'io.containerd.grpc.v1.cri']
disable_tcp_service = true
stream_server_address = '127.0.0.1'
stream_server_port = '0'
stream_idle_timeout = '4h0m0s'
enable_tls_streaming = false
[plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming]
tls_cert_file = ''
tls_key_file = ''
[plugins.'io.containerd.image-verifier.v1.bindir']
bin_dir = '/opt/containerd/image-verifier/bin'
max_verifiers = 10
per_verifier_timeout = '10s'
[plugins.'io.containerd.internal.v1.opt']
path = '/opt/containerd'
[plugins.'io.containerd.internal.v1.tracing']
[plugins.'io.containerd.metadata.v1.bolt']
content_sharing_policy = 'shared'
[plugins.'io.containerd.monitor.container.v1.restart']
interval = '10s'
[plugins.'io.containerd.monitor.task.v1.cgroups']
no_prometheus = false
[plugins.'io.containerd.nri.v1.nri']
disable = false
socket_path = '/var/run/nri/nri.sock'
plugin_path = '/opt/nri/plugins'
plugin_config_path = '/etc/nri/conf.d'
plugin_registration_timeout = '5s'
plugin_request_timeout = '2s'
disable_connections = false
[plugins.'io.containerd.runtime.v2.task']
platforms = ['linux/arm64/v8']
[plugins.'io.containerd.service.v1.diff-service']
default = ['walking']
sync_fs = false
[plugins.'io.containerd.service.v1.tasks-service']
blockio_config_file = ''
rdt_config_file = ''
[plugins.'io.containerd.shim.v1.manager']
env = []
[plugins.'io.containerd.snapshotter.v1.blockfile']
root_path = ''
scratch_file = ''
fs_type = ''
mount_options = []
recreate_scratch = false
[plugins.'io.containerd.snapshotter.v1.btrfs']
root_path = ''
[plugins.'io.containerd.snapshotter.v1.devmapper']
root_path = ''
pool_name = ''
base_image_size = ''
async_remove = false
discard_blocks = false
fs_type = ''
fs_options = ''
[plugins.'io.containerd.snapshotter.v1.native']
root_path = ''
[plugins.'io.containerd.snapshotter.v1.overlayfs']
root_path = ''
upperdir_label = false
sync_remove = false
slow_chown = false
mount_options = []
[plugins.'io.containerd.snapshotter.v1.zfs']
root_path = ''
[plugins.'io.containerd.tracing.processor.v1.otlp']
[plugins.'io.containerd.transfer.v1.local']
max_concurrent_downloads = 3
max_concurrent_uploaded_layers = 3
config_path = ''
[cgroup]
path = ''
[timeouts]
'io.containerd.timeout.bolt.open' = '0s'
'io.containerd.timeout.metrics.shimstats' = '2s'
'io.containerd.timeout.shim.cleanup' = '5s'
'io.containerd.timeout.shim.load' = '5s'
'io.containerd.timeout.shim.shutdown' = '3s'
'io.containerd.timeout.task.state' = '2s'
[stream_processors]
[stream_processors.'io.containerd.ocicrypt.decoder.v1.tar']
accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted']
returns = 'application/vnd.oci.image.layer.v1.tar'
path = 'ctd-decoder'
args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']
[stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip']
accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted']
returns = 'application/vnd.oci.image.layer.v1.tar+gzip'
path = 'ctd-decoder'
args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']
</code>
<code>version = 3 root = '/var/lib/containerd' state = '/run/containerd' temp = '' plugin_dir = '' disabled_plugins = [] required_plugins = [] oom_score = 0 imports = [] [grpc] address = '/run/containerd/containerd.sock' tcp_address = '' tcp_tls_ca = '' uid = 0 gid = 0 max_recv_message_size = 16777216 max_send_message_size = 16777216 [ttrpc] address = '' uid = 0 gid = 0 [debug] address = '' uid = 0 gid = 0 level = '' format = '' [metrics] address = '' grpc_histogram = false [plugins] [plugins.'io.containerd.cri.v1.images'] snapshotter = 'overlayfs' disable_snapshot_annotations = true discard_unpacked_layers = false max_concurrent_downloads = 3 image_pull_progress_timeout = '5m0s' image_pull_with_sync_fs = false stats_collect_period = 10 [plugins.'io.containerd.cri.v1.images'.pinned_images] sandbox = 'registry.k8s.io/pause:3.10' [plugins.'io.containerd.cri.v1.images'.registry] config_path = '' [plugins."io.containerd.grpc.v1.cri".registry.auths] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth] auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx" [plugins."io.containerd.grpc.v1.cri".registry.headers] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"] endpoint = ["http://172.26.22.242:5000"] [plugins.'io.containerd.cri.v1.images'.image_decryption] key_model = 'node' [plugins.'io.containerd.cri.v1.runtime'] enable_selinux = false selinux_category_range = 1024 max_container_log_line_size = 16384 disable_apparmor = false restrict_oom_score_adj = false disable_proc_mount = false unset_seccomp_profile = '' tolerate_missing_hugetlb_controller = true disable_hugetlb_controller = true device_ownership_from_security_context = false ignore_image_defined_volumes = false netns_mounts_under_state_dir = false enable_unprivileged_ports = true enable_unprivileged_icmp = true enable_cdi = true cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi'] drain_exec_sync_io_timeout = '0s' ignore_deprecation_warnings = [] [plugins.'io.containerd.cri.v1.runtime'.containerd] default_runtime_name = 'runc' ignore_blockio_not_enabled_errors = false ignore_rdt_not_enabled_errors = false [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes] [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc] runtime_type = 'io.containerd.runc.v2' runtime_path = '' pod_annotations = [] container_annotations = [] privileged_without_host_devices = false privileged_without_host_devices_all_devices_allowed = false base_runtime_spec = '' cni_conf_dir = '' cni_max_conf_num = 0 snapshotter = '' sandboxer = 'podsandbox' io_type = '' [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options] BinaryName = '' CriuImagePath = '' CriuWorkPath = '' IoGid = 0 IoUid = 0 NoNewKeyring = false Root = '' ShimCgroup = '' SystemdCgroup = true [plugins.'io.containerd.cri.v1.runtime'.cni] bin_dir = '/opt/cni/bin' conf_dir = '/etc/cni/net.d' max_conf_num = 1 setup_serially = false conf_template = '' ip_pref = '' use_internal_loopback = false [plugins.'io.containerd.gc.v1.scheduler'] pause_threshold = 0.02 deletion_threshold = 0 mutation_threshold = 100 schedule_delay = '0s' startup_delay = '100ms' [plugins.'io.containerd.grpc.v1.cri'] disable_tcp_service = true stream_server_address = '127.0.0.1' stream_server_port = '0' stream_idle_timeout = '4h0m0s' enable_tls_streaming = false [plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming] tls_cert_file = '' tls_key_file = '' [plugins.'io.containerd.image-verifier.v1.bindir'] bin_dir = '/opt/containerd/image-verifier/bin' max_verifiers = 10 per_verifier_timeout = '10s' [plugins.'io.containerd.internal.v1.opt'] path = '/opt/containerd' [plugins.'io.containerd.internal.v1.tracing'] [plugins.'io.containerd.metadata.v1.bolt'] content_sharing_policy = 'shared' [plugins.'io.containerd.monitor.container.v1.restart'] interval = '10s' [plugins.'io.containerd.monitor.task.v1.cgroups'] no_prometheus = false [plugins.'io.containerd.nri.v1.nri'] disable = false socket_path = '/var/run/nri/nri.sock' plugin_path = '/opt/nri/plugins' plugin_config_path = '/etc/nri/conf.d' plugin_registration_timeout = '5s' plugin_request_timeout = '2s' disable_connections = false [plugins.'io.containerd.runtime.v2.task'] platforms = ['linux/arm64/v8'] [plugins.'io.containerd.service.v1.diff-service'] default = ['walking'] sync_fs = false [plugins.'io.containerd.service.v1.tasks-service'] blockio_config_file = '' rdt_config_file = '' [plugins.'io.containerd.shim.v1.manager'] env = [] [plugins.'io.containerd.snapshotter.v1.blockfile'] root_path = '' scratch_file = '' fs_type = '' mount_options = [] recreate_scratch = false [plugins.'io.containerd.snapshotter.v1.btrfs'] root_path = '' [plugins.'io.containerd.snapshotter.v1.devmapper'] root_path = '' pool_name = '' base_image_size = '' async_remove = false discard_blocks = false fs_type = '' fs_options = '' [plugins.'io.containerd.snapshotter.v1.native'] root_path = '' [plugins.'io.containerd.snapshotter.v1.overlayfs'] root_path = '' upperdir_label = false sync_remove = false slow_chown = false mount_options = [] [plugins.'io.containerd.snapshotter.v1.zfs'] root_path = '' [plugins.'io.containerd.tracing.processor.v1.otlp'] [plugins.'io.containerd.transfer.v1.local'] max_concurrent_downloads = 3 max_concurrent_uploaded_layers = 3 config_path = '' [cgroup] path = '' [timeouts] 'io.containerd.timeout.bolt.open' = '0s' 'io.containerd.timeout.metrics.shimstats' = '2s' 'io.containerd.timeout.shim.cleanup' = '5s' 'io.containerd.timeout.shim.load' = '5s' 'io.containerd.timeout.shim.shutdown' = '3s' 'io.containerd.timeout.task.state' = '2s' [stream_processors] [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar'] accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted'] returns = 'application/vnd.oci.image.layer.v1.tar' path = 'ctd-decoder' args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys'] env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf'] [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip'] accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted'] returns = 'application/vnd.oci.image.layer.v1.tar+gzip' path = 'ctd-decoder' args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys'] env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf'] </code>
version = 3
root = '/var/lib/containerd'
state = '/run/containerd'
temp = ''
plugin_dir = ''
disabled_plugins = []
required_plugins = []
oom_score = 0
imports = []

[grpc]
  address = '/run/containerd/containerd.sock'
  tcp_address = ''
  tcp_tls_ca = ''

  uid = 0
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[ttrpc]
  address = ''
  uid = 0
  gid = 0

[debug]
  address = ''
  uid = 0
  gid = 0
  level = ''
  format = ''

[metrics]
  address = ''
  grpc_histogram = false

[plugins]
  [plugins.'io.containerd.cri.v1.images']
    snapshotter = 'overlayfs'
    disable_snapshot_annotations = true
    discard_unpacked_layers = false
    max_concurrent_downloads = 3
    image_pull_progress_timeout = '5m0s'
    image_pull_with_sync_fs = false
    stats_collect_period = 10

    [plugins.'io.containerd.cri.v1.images'.pinned_images]
      sandbox = 'registry.k8s.io/pause:3.10'

    [plugins.'io.containerd.cri.v1.images'.registry]
      config_path = ''
      [plugins."io.containerd.grpc.v1.cri".registry.auths]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]      

        [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth]
          auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
      [plugins."io.containerd.grpc.v1.cri".registry.headers]

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"]
          endpoint = ["http://172.26.22.242:5000"]

    [plugins.'io.containerd.cri.v1.images'.image_decryption]
      key_model = 'node'

  [plugins.'io.containerd.cri.v1.runtime']
    enable_selinux = false
    selinux_category_range = 1024
    max_container_log_line_size = 16384
    disable_apparmor = false
    restrict_oom_score_adj = false
    disable_proc_mount = false
    unset_seccomp_profile = ''
    tolerate_missing_hugetlb_controller = true
    disable_hugetlb_controller = true
    device_ownership_from_security_context = false
    ignore_image_defined_volumes = false
    netns_mounts_under_state_dir = false
    enable_unprivileged_ports = true
    enable_unprivileged_icmp = true
    enable_cdi = true
    cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi']
    drain_exec_sync_io_timeout = '0s'
    ignore_deprecation_warnings = []

    [plugins.'io.containerd.cri.v1.runtime'.containerd]
      default_runtime_name = 'runc'
      ignore_blockio_not_enabled_errors = false
      ignore_rdt_not_enabled_errors = false

      [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes]
        [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc]
          runtime_type = 'io.containerd.runc.v2'
          runtime_path = ''
          pod_annotations = []
          container_annotations = []
          privileged_without_host_devices = false
          privileged_without_host_devices_all_devices_allowed = false
          base_runtime_spec = ''
          cni_conf_dir = ''
          cni_max_conf_num = 0
          snapshotter = ''
          sandboxer = 'podsandbox'
          io_type = ''

          [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
            BinaryName = ''
            CriuImagePath = ''
            CriuWorkPath = ''
            IoGid = 0
            IoUid = 0
            NoNewKeyring = false
            Root = ''
            ShimCgroup = ''
        SystemdCgroup = true

    [plugins.'io.containerd.cri.v1.runtime'.cni]
      bin_dir = '/opt/cni/bin'
      conf_dir = '/etc/cni/net.d'
      max_conf_num = 1
      setup_serially = false
      conf_template = ''
      ip_pref = ''
      use_internal_loopback = false

  [plugins.'io.containerd.gc.v1.scheduler']
    pause_threshold = 0.02
    deletion_threshold = 0
    mutation_threshold = 100
    schedule_delay = '0s'
    startup_delay = '100ms'

  [plugins.'io.containerd.grpc.v1.cri']
    disable_tcp_service = true
    stream_server_address = '127.0.0.1'
    stream_server_port = '0'
    stream_idle_timeout = '4h0m0s'
    enable_tls_streaming = false

    [plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming]
      tls_cert_file = ''
      tls_key_file = ''

  [plugins.'io.containerd.image-verifier.v1.bindir']
    bin_dir = '/opt/containerd/image-verifier/bin'
    max_verifiers = 10
    per_verifier_timeout = '10s'

  [plugins.'io.containerd.internal.v1.opt']
    path = '/opt/containerd'

  [plugins.'io.containerd.internal.v1.tracing']

  [plugins.'io.containerd.metadata.v1.bolt']
    content_sharing_policy = 'shared'

  [plugins.'io.containerd.monitor.container.v1.restart']
    interval = '10s'

  [plugins.'io.containerd.monitor.task.v1.cgroups']
    no_prometheus = false

  [plugins.'io.containerd.nri.v1.nri']
    disable = false
    socket_path = '/var/run/nri/nri.sock'
    plugin_path = '/opt/nri/plugins'
    plugin_config_path = '/etc/nri/conf.d'
    plugin_registration_timeout = '5s'
    plugin_request_timeout = '2s'
    disable_connections = false

  [plugins.'io.containerd.runtime.v2.task']
    platforms = ['linux/arm64/v8']

  [plugins.'io.containerd.service.v1.diff-service']
    default = ['walking']
    sync_fs = false

  [plugins.'io.containerd.service.v1.tasks-service']
    blockio_config_file = ''
    rdt_config_file = ''

  [plugins.'io.containerd.shim.v1.manager']
    env = []

  [plugins.'io.containerd.snapshotter.v1.blockfile']
    root_path = ''
    scratch_file = ''
    fs_type = ''
    mount_options = []
    recreate_scratch = false

  [plugins.'io.containerd.snapshotter.v1.btrfs']
    root_path = ''

  [plugins.'io.containerd.snapshotter.v1.devmapper']
    root_path = ''
    pool_name = ''
    base_image_size = ''
    async_remove = false
    discard_blocks = false
    fs_type = ''
    fs_options = ''

  [plugins.'io.containerd.snapshotter.v1.native']
    root_path = ''

  [plugins.'io.containerd.snapshotter.v1.overlayfs']
    root_path = ''
    upperdir_label = false
    sync_remove = false
    slow_chown = false
    mount_options = []

  [plugins.'io.containerd.snapshotter.v1.zfs']
    root_path = ''

  [plugins.'io.containerd.tracing.processor.v1.otlp']

  [plugins.'io.containerd.transfer.v1.local']
    max_concurrent_downloads = 3
    max_concurrent_uploaded_layers = 3
    config_path = ''

[cgroup]
  path = ''

[timeouts]
  'io.containerd.timeout.bolt.open' = '0s'
  'io.containerd.timeout.metrics.shimstats' = '2s'
  'io.containerd.timeout.shim.cleanup' = '5s'
  'io.containerd.timeout.shim.load' = '5s'
  'io.containerd.timeout.shim.shutdown' = '3s'
  'io.containerd.timeout.task.state' = '2s'

[stream_processors]
  [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar']
    accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted']
    returns = 'application/vnd.oci.image.layer.v1.tar'
    path = 'ctd-decoder'
    args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
    env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']

  [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip']
    accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted']
    returns = 'application/vnd.oci.image.layer.v1.tar+gzip'
    path = 'ctd-decoder'
    args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
    env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']

Following the instructions in the github post on the same issue, I removed the following configuration items

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> tcp_tls_cert = ''
tcp_tls_key = ''
[plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls]
insecure_skip_verify = true
</code>
<code> tcp_tls_cert = '' tcp_tls_key = '' [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls] insecure_skip_verify = true </code>
  tcp_tls_cert = ''
  tcp_tls_key = ''

          [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls]
             insecure_skip_verify = true

pod yaml as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# cat private-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: private-nginx
spec:
containers:
- name: private-nginx-container
image: 172.26.22.242:5000/nginx:latest
imagePullSecrets:
- name: regcred
</code>
<code>root@cp01:~# cat private-nginx.yaml apiVersion: v1 kind: Pod metadata: name: private-nginx spec: containers: - name: private-nginx-container image: 172.26.22.242:5000/nginx:latest imagePullSecrets: - name: regcred </code>
root@cp01:~# cat private-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: private-nginx
spec:
  containers:
  - name: private-nginx-container
    image: 172.26.22.242:5000/nginx:latest
  imagePullSecrets:
  - name: regcred

pod configure and auth configure as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# kubectl get secret regcred
NAME TYPE DATA AGE
regcred kubernetes.io/dockerconfigjson 1 147m
root@cp01:~# kubectl get secret regcred --output=yaml
apiVersion: v1
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9
kind: Secret
metadata:
creationTimestamp: "2024-12-23T06:17:57Z"
name: regcred
namespace: default
resourceVersion: "294439"
uid: 7130e5fc-ec44-4123-8027-25becb05f137
type: kubernetes.io/dockerconfigjson
root@cp01:~#
root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
}
}
}
</code>
<code>root@cp01:~# kubectl get secret regcred NAME TYPE DATA AGE regcred kubernetes.io/dockerconfigjson 1 147m root@cp01:~# kubectl get secret regcred --output=yaml apiVersion: v1 data: .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9 kind: Secret metadata: creationTimestamp: "2024-12-23T06:17:57Z" name: regcred namespace: default resourceVersion: "294439" uid: 7130e5fc-ec44-4123-8027-25becb05f137 type: kubernetes.io/dockerconfigjson root@cp01:~# root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode { "auths": { "https://index.docker.io/v1/": { "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx" } } } </code>
root@cp01:~# kubectl get secret regcred
NAME      TYPE                             DATA   AGE
regcred   kubernetes.io/dockerconfigjson   1      147m
root@cp01:~# kubectl get secret regcred --output=yaml
apiVersion: v1
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9
kind: Secret
metadata:
  creationTimestamp: "2024-12-23T06:17:57Z"
  name: regcred
  namespace: default
  resourceVersion: "294439"
  uid: 7130e5fc-ec44-4123-8027-25becb05f137
type: kubernetes.io/dockerconfigjson
root@cp01:~#
root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode
{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
                }
        }
}

The value of auth for the secret resource regcred is also the same as the value of auth for the docker registry

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@privatehub:~# cat /root/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
}
}
</code>
<code>root@privatehub:~# cat /root/.docker/config.json { "auths": { "https://index.docker.io/v1/": { "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx" } } </code>
root@privatehub:~# cat /root/.docker/config.json
{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
                }
        }

After modifying the containerd configuration parameters, all nodes executed systemctl restart containerd

The domain name of the server where the private mirror is located is privatehub.ye, and its IP is 172.26.22.242.nignx is the image I’m pulling.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@privatehub:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bdf62fd3a32f 3 weeks ago 197MB
registry 2 1c6adc34955d 14 months ago 25MB
</code>
<code>root@privatehub:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest bdf62fd3a32f 3 weeks ago 197MB registry 2 1c6adc34955d 14 months ago 25MB </code>
root@privatehub:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    bdf62fd3a32f   3 weeks ago     197MB
registry     2         1c6adc34955d   14 months ago   25MB

But the container just fails to pull

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# kubectl events private-nginx
LAST SEEN TYPE REASON OBJECT MESSAGE
44m (x88 over 65m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest"
44m (x88 over 65m) Warning Failed Pod/private-nginx Error: ImagePullBackOff
44m Normal Scheduled Pod/private-nginx Successfully assigned default/private-nginx to wn05
41m (x5 over 44m) Normal Pulling Pod/private-nginx Pulling image "172.26.22.242:5000/nginx:latest"
41m (x5 over 44m) Warning Failed Pod/private-nginx Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
41m (x5 over 44m) Warning Failed Pod/private-nginx Error: ErrImagePull
4m25s (x176 over 44m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest"
4m25s (x176 over 44m) Warning Failed Pod/private-nginx Error: ImagePullBackOff
root@cp01:~# kubectl describe pod private-nginx
Name: private-nginx
Namespace: default
Priority: 0
Service Account: default
Node: wn05/172.26.11.64
Start Time: Mon, 23 Dec 2024 16:13:54 +0800
Labels: <none>
Annotations: cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f
cni.projectcalico.org/podIP: 10.224.228.7/32
cni.projectcalico.org/podIPs: 10.224.228.7/32
Status: Pending
IP: 10.224.228.7
IPs:
IP: 10.224.228.7
Containers:
private-nginx-container:
Container ID:
Image: 172.26.22.242:5000/nginx:latest
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-h9pkq:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 48m default-scheduler Successfully assigned default/private-nginx to wn05
Normal Pulling 45m (x5 over 48m) kubelet Pulling image "172.26.22.242:5000/nginx:latest"
Warning Failed 45m (x5 over 48m) kubelet Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
Warning Failed 45m (x5 over 48m) kubelet Error: ErrImagePull
Normal BackOff 3m35s (x199 over 48m) kubelet Back-off pulling image "172.26.22.242:5000/nginx:latest"
Warning Failed 3m35s (x199 over 48m) kubelet Error: ImagePullBackOff
</code>
<code>root@cp01:~# kubectl events private-nginx LAST SEEN TYPE REASON OBJECT MESSAGE 44m (x88 over 65m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest" 44m (x88 over 65m) Warning Failed Pod/private-nginx Error: ImagePullBackOff 44m Normal Scheduled Pod/private-nginx Successfully assigned default/private-nginx to wn05 41m (x5 over 44m) Normal Pulling Pod/private-nginx Pulling image "172.26.22.242:5000/nginx:latest" 41m (x5 over 44m) Warning Failed Pod/private-nginx Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client 41m (x5 over 44m) Warning Failed Pod/private-nginx Error: ErrImagePull 4m25s (x176 over 44m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest" 4m25s (x176 over 44m) Warning Failed Pod/private-nginx Error: ImagePullBackOff root@cp01:~# kubectl describe pod private-nginx Name: private-nginx Namespace: default Priority: 0 Service Account: default Node: wn05/172.26.11.64 Start Time: Mon, 23 Dec 2024 16:13:54 +0800 Labels: <none> Annotations: cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f cni.projectcalico.org/podIP: 10.224.228.7/32 cni.projectcalico.org/podIPs: 10.224.228.7/32 Status: Pending IP: 10.224.228.7 IPs: IP: 10.224.228.7 Containers: private-nginx-container: Container ID: Image: 172.26.22.242:5000/nginx:latest Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ImagePullBackOff Ready: False Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro) Conditions: Type Status PodReadyToStartContainers True Initialized True Ready False ContainersReady False PodScheduled True Volumes: kube-api-access-h9pkq: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 48m default-scheduler Successfully assigned default/private-nginx to wn05 Normal Pulling 45m (x5 over 48m) kubelet Pulling image "172.26.22.242:5000/nginx:latest" Warning Failed 45m (x5 over 48m) kubelet Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client Warning Failed 45m (x5 over 48m) kubelet Error: ErrImagePull Normal BackOff 3m35s (x199 over 48m) kubelet Back-off pulling image "172.26.22.242:5000/nginx:latest" Warning Failed 3m35s (x199 over 48m) kubelet Error: ImagePullBackOff </code>
root@cp01:~# kubectl events  private-nginx
LAST SEEN               TYPE      REASON      OBJECT              MESSAGE
44m (x88 over 65m)      Normal    BackOff     Pod/private-nginx   Back-off pulling image "172.26.22.242:5000/nginx:latest"
44m (x88 over 65m)      Warning   Failed      Pod/private-nginx   Error: ImagePullBackOff
44m                     Normal    Scheduled   Pod/private-nginx   Successfully assigned default/private-nginx to wn05
41m (x5 over 44m)       Normal    Pulling     Pod/private-nginx   Pulling image "172.26.22.242:5000/nginx:latest"
41m (x5 over 44m)       Warning   Failed      Pod/private-nginx   Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
41m (x5 over 44m)       Warning   Failed      Pod/private-nginx   Error: ErrImagePull
4m25s (x176 over 44m)   Normal    BackOff     Pod/private-nginx   Back-off pulling image "172.26.22.242:5000/nginx:latest"
4m25s (x176 over 44m)   Warning   Failed      Pod/private-nginx   Error: ImagePullBackOff

root@cp01:~# kubectl describe pod  private-nginx
Name:             private-nginx
Namespace:        default
Priority:         0
Service Account:  default
Node:             wn05/172.26.11.64
Start Time:       Mon, 23 Dec 2024 16:13:54 +0800
Labels:           <none>
Annotations:      cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f
                  cni.projectcalico.org/podIP: 10.224.228.7/32
                  cni.projectcalico.org/podIPs: 10.224.228.7/32
Status:           Pending
IP:               10.224.228.7
IPs:
  IP:  10.224.228.7
Containers:
  private-nginx-container:
    Container ID:
    Image:          172.26.22.242:5000/nginx:latest
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro)
Conditions:
  Type                        Status
  PodReadyToStartContainers   True
  Initialized                 True
  Ready                       False
  ContainersReady             False
  PodScheduled                True
Volumes:
  kube-api-access-h9pkq:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  48m                    default-scheduler  Successfully assigned default/private-nginx to wn05
  Normal   Pulling    45m (x5 over 48m)      kubelet            Pulling image "172.26.22.242:5000/nginx:latest"
  Warning  Failed     45m (x5 over 48m)      kubelet            Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
  Warning  Failed     45m (x5 over 48m)      kubelet            Error: ErrImagePull
  Normal   BackOff    3m35s (x199 over 48m)  kubelet            Back-off pulling image "172.26.22.242:5000/nginx:latest"
  Warning  Failed     3m35s (x199 over 48m)  kubelet            Error: ImagePullBackOff

Manual pull also fails

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest
ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found
</code>
<code>root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found </code>
root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest
ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found

I don’t know what the problem is and how to fix it. Please give me some guidance

1

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa

Unable to pull image from insecure registry, http: server gave HTTP response to HTTPS client

I’m using docker registry as a private image repository for a K8S cluster on my LAN, but the containerd on the K8S cluster can’t pull the image

version as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# containerd --version
containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542
root@cp01:~# kubelet version
E1223 16:22:54.637029 35982 run.go:72] "command failed" err="unknown command version"
root@cp01:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"}
root@cp01:~# kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
Server Version: v1.32.0
</code>
<code>root@cp01:~# containerd --version containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542 root@cp01:~# kubelet version E1223 16:22:54.637029 35982 run.go:72] "command failed" err="unknown command version" root@cp01:~# kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"} root@cp01:~# kubectl version Client Version: v1.32.0 Kustomize Version: v5.5.0 Server Version: v1.32.0 </code>
root@cp01:~# containerd --version
containerd github.com/containerd/containerd/v2 v2.0.0 207ad711eabd375a01713109a8a197d197ff6542
root@cp01:~# kubelet version
E1223 16:22:54.637029   35982 run.go:72] "command failed" err="unknown command version"
root@cp01:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.0", GitCommit:"70d3cc986aa8221cd1dfb1121852688902d3bf53", GitTreeState:"clean", BuildDate:"2024-12-11T18:04:20Z", GoVersion:"go1.23.3", Compiler:"gc", Platform:"linux/arm64"}
root@cp01:~# kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
Server Version: v1.32.0

I’ve also referenced the same problem that already exists on github, as well as the official K8S docs and other articles, but I still can’t solve it, so these are the links I’ve looked at

Unable to pull image from insecure registry, http: server gave HTTP response to HTTPS client

Pull an Image from a Private Registry

How to Configure Private Registry for Kubernetes cluster running with containerd

/etc/containerd/config.toml as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>version = 3
root = '/var/lib/containerd'
state = '/run/containerd'
temp = ''
plugin_dir = ''
disabled_plugins = []
required_plugins = []
oom_score = 0
imports = []
[grpc]
address = '/run/containerd/containerd.sock'
tcp_address = ''
tcp_tls_ca = ''
uid = 0
gid = 0
max_recv_message_size = 16777216
max_send_message_size = 16777216
[ttrpc]
address = ''
uid = 0
gid = 0
[debug]
address = ''
uid = 0
gid = 0
level = ''
format = ''
[metrics]
address = ''
grpc_histogram = false
[plugins]
[plugins.'io.containerd.cri.v1.images']
snapshotter = 'overlayfs'
disable_snapshot_annotations = true
discard_unpacked_layers = false
max_concurrent_downloads = 3
image_pull_progress_timeout = '5m0s'
image_pull_with_sync_fs = false
stats_collect_period = 10
[plugins.'io.containerd.cri.v1.images'.pinned_images]
sandbox = 'registry.k8s.io/pause:3.10'
[plugins.'io.containerd.cri.v1.images'.registry]
config_path = ''
[plugins."io.containerd.grpc.v1.cri".registry.auths]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth]
auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"]
endpoint = ["http://172.26.22.242:5000"]
[plugins.'io.containerd.cri.v1.images'.image_decryption]
key_model = 'node'
[plugins.'io.containerd.cri.v1.runtime']
enable_selinux = false
selinux_category_range = 1024
max_container_log_line_size = 16384
disable_apparmor = false
restrict_oom_score_adj = false
disable_proc_mount = false
unset_seccomp_profile = ''
tolerate_missing_hugetlb_controller = true
disable_hugetlb_controller = true
device_ownership_from_security_context = false
ignore_image_defined_volumes = false
netns_mounts_under_state_dir = false
enable_unprivileged_ports = true
enable_unprivileged_icmp = true
enable_cdi = true
cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi']
drain_exec_sync_io_timeout = '0s'
ignore_deprecation_warnings = []
[plugins.'io.containerd.cri.v1.runtime'.containerd]
default_runtime_name = 'runc'
ignore_blockio_not_enabled_errors = false
ignore_rdt_not_enabled_errors = false
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes]
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc]
runtime_type = 'io.containerd.runc.v2'
runtime_path = ''
pod_annotations = []
container_annotations = []
privileged_without_host_devices = false
privileged_without_host_devices_all_devices_allowed = false
base_runtime_spec = ''
cni_conf_dir = ''
cni_max_conf_num = 0
snapshotter = ''
sandboxer = 'podsandbox'
io_type = ''
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
BinaryName = ''
CriuImagePath = ''
CriuWorkPath = ''
IoGid = 0
IoUid = 0
NoNewKeyring = false
Root = ''
ShimCgroup = ''
SystemdCgroup = true
[plugins.'io.containerd.cri.v1.runtime'.cni]
bin_dir = '/opt/cni/bin'
conf_dir = '/etc/cni/net.d'
max_conf_num = 1
setup_serially = false
conf_template = ''
ip_pref = ''
use_internal_loopback = false
[plugins.'io.containerd.gc.v1.scheduler']
pause_threshold = 0.02
deletion_threshold = 0
mutation_threshold = 100
schedule_delay = '0s'
startup_delay = '100ms'
[plugins.'io.containerd.grpc.v1.cri']
disable_tcp_service = true
stream_server_address = '127.0.0.1'
stream_server_port = '0'
stream_idle_timeout = '4h0m0s'
enable_tls_streaming = false
[plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming]
tls_cert_file = ''
tls_key_file = ''
[plugins.'io.containerd.image-verifier.v1.bindir']
bin_dir = '/opt/containerd/image-verifier/bin'
max_verifiers = 10
per_verifier_timeout = '10s'
[plugins.'io.containerd.internal.v1.opt']
path = '/opt/containerd'
[plugins.'io.containerd.internal.v1.tracing']
[plugins.'io.containerd.metadata.v1.bolt']
content_sharing_policy = 'shared'
[plugins.'io.containerd.monitor.container.v1.restart']
interval = '10s'
[plugins.'io.containerd.monitor.task.v1.cgroups']
no_prometheus = false
[plugins.'io.containerd.nri.v1.nri']
disable = false
socket_path = '/var/run/nri/nri.sock'
plugin_path = '/opt/nri/plugins'
plugin_config_path = '/etc/nri/conf.d'
plugin_registration_timeout = '5s'
plugin_request_timeout = '2s'
disable_connections = false
[plugins.'io.containerd.runtime.v2.task']
platforms = ['linux/arm64/v8']
[plugins.'io.containerd.service.v1.diff-service']
default = ['walking']
sync_fs = false
[plugins.'io.containerd.service.v1.tasks-service']
blockio_config_file = ''
rdt_config_file = ''
[plugins.'io.containerd.shim.v1.manager']
env = []
[plugins.'io.containerd.snapshotter.v1.blockfile']
root_path = ''
scratch_file = ''
fs_type = ''
mount_options = []
recreate_scratch = false
[plugins.'io.containerd.snapshotter.v1.btrfs']
root_path = ''
[plugins.'io.containerd.snapshotter.v1.devmapper']
root_path = ''
pool_name = ''
base_image_size = ''
async_remove = false
discard_blocks = false
fs_type = ''
fs_options = ''
[plugins.'io.containerd.snapshotter.v1.native']
root_path = ''
[plugins.'io.containerd.snapshotter.v1.overlayfs']
root_path = ''
upperdir_label = false
sync_remove = false
slow_chown = false
mount_options = []
[plugins.'io.containerd.snapshotter.v1.zfs']
root_path = ''
[plugins.'io.containerd.tracing.processor.v1.otlp']
[plugins.'io.containerd.transfer.v1.local']
max_concurrent_downloads = 3
max_concurrent_uploaded_layers = 3
config_path = ''
[cgroup]
path = ''
[timeouts]
'io.containerd.timeout.bolt.open' = '0s'
'io.containerd.timeout.metrics.shimstats' = '2s'
'io.containerd.timeout.shim.cleanup' = '5s'
'io.containerd.timeout.shim.load' = '5s'
'io.containerd.timeout.shim.shutdown' = '3s'
'io.containerd.timeout.task.state' = '2s'
[stream_processors]
[stream_processors.'io.containerd.ocicrypt.decoder.v1.tar']
accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted']
returns = 'application/vnd.oci.image.layer.v1.tar'
path = 'ctd-decoder'
args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']
[stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip']
accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted']
returns = 'application/vnd.oci.image.layer.v1.tar+gzip'
path = 'ctd-decoder'
args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']
</code>
<code>version = 3 root = '/var/lib/containerd' state = '/run/containerd' temp = '' plugin_dir = '' disabled_plugins = [] required_plugins = [] oom_score = 0 imports = [] [grpc] address = '/run/containerd/containerd.sock' tcp_address = '' tcp_tls_ca = '' uid = 0 gid = 0 max_recv_message_size = 16777216 max_send_message_size = 16777216 [ttrpc] address = '' uid = 0 gid = 0 [debug] address = '' uid = 0 gid = 0 level = '' format = '' [metrics] address = '' grpc_histogram = false [plugins] [plugins.'io.containerd.cri.v1.images'] snapshotter = 'overlayfs' disable_snapshot_annotations = true discard_unpacked_layers = false max_concurrent_downloads = 3 image_pull_progress_timeout = '5m0s' image_pull_with_sync_fs = false stats_collect_period = 10 [plugins.'io.containerd.cri.v1.images'.pinned_images] sandbox = 'registry.k8s.io/pause:3.10' [plugins.'io.containerd.cri.v1.images'.registry] config_path = '' [plugins."io.containerd.grpc.v1.cri".registry.auths] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth] auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx" [plugins."io.containerd.grpc.v1.cri".registry.headers] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"] endpoint = ["http://172.26.22.242:5000"] [plugins.'io.containerd.cri.v1.images'.image_decryption] key_model = 'node' [plugins.'io.containerd.cri.v1.runtime'] enable_selinux = false selinux_category_range = 1024 max_container_log_line_size = 16384 disable_apparmor = false restrict_oom_score_adj = false disable_proc_mount = false unset_seccomp_profile = '' tolerate_missing_hugetlb_controller = true disable_hugetlb_controller = true device_ownership_from_security_context = false ignore_image_defined_volumes = false netns_mounts_under_state_dir = false enable_unprivileged_ports = true enable_unprivileged_icmp = true enable_cdi = true cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi'] drain_exec_sync_io_timeout = '0s' ignore_deprecation_warnings = [] [plugins.'io.containerd.cri.v1.runtime'.containerd] default_runtime_name = 'runc' ignore_blockio_not_enabled_errors = false ignore_rdt_not_enabled_errors = false [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes] [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc] runtime_type = 'io.containerd.runc.v2' runtime_path = '' pod_annotations = [] container_annotations = [] privileged_without_host_devices = false privileged_without_host_devices_all_devices_allowed = false base_runtime_spec = '' cni_conf_dir = '' cni_max_conf_num = 0 snapshotter = '' sandboxer = 'podsandbox' io_type = '' [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options] BinaryName = '' CriuImagePath = '' CriuWorkPath = '' IoGid = 0 IoUid = 0 NoNewKeyring = false Root = '' ShimCgroup = '' SystemdCgroup = true [plugins.'io.containerd.cri.v1.runtime'.cni] bin_dir = '/opt/cni/bin' conf_dir = '/etc/cni/net.d' max_conf_num = 1 setup_serially = false conf_template = '' ip_pref = '' use_internal_loopback = false [plugins.'io.containerd.gc.v1.scheduler'] pause_threshold = 0.02 deletion_threshold = 0 mutation_threshold = 100 schedule_delay = '0s' startup_delay = '100ms' [plugins.'io.containerd.grpc.v1.cri'] disable_tcp_service = true stream_server_address = '127.0.0.1' stream_server_port = '0' stream_idle_timeout = '4h0m0s' enable_tls_streaming = false [plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming] tls_cert_file = '' tls_key_file = '' [plugins.'io.containerd.image-verifier.v1.bindir'] bin_dir = '/opt/containerd/image-verifier/bin' max_verifiers = 10 per_verifier_timeout = '10s' [plugins.'io.containerd.internal.v1.opt'] path = '/opt/containerd' [plugins.'io.containerd.internal.v1.tracing'] [plugins.'io.containerd.metadata.v1.bolt'] content_sharing_policy = 'shared' [plugins.'io.containerd.monitor.container.v1.restart'] interval = '10s' [plugins.'io.containerd.monitor.task.v1.cgroups'] no_prometheus = false [plugins.'io.containerd.nri.v1.nri'] disable = false socket_path = '/var/run/nri/nri.sock' plugin_path = '/opt/nri/plugins' plugin_config_path = '/etc/nri/conf.d' plugin_registration_timeout = '5s' plugin_request_timeout = '2s' disable_connections = false [plugins.'io.containerd.runtime.v2.task'] platforms = ['linux/arm64/v8'] [plugins.'io.containerd.service.v1.diff-service'] default = ['walking'] sync_fs = false [plugins.'io.containerd.service.v1.tasks-service'] blockio_config_file = '' rdt_config_file = '' [plugins.'io.containerd.shim.v1.manager'] env = [] [plugins.'io.containerd.snapshotter.v1.blockfile'] root_path = '' scratch_file = '' fs_type = '' mount_options = [] recreate_scratch = false [plugins.'io.containerd.snapshotter.v1.btrfs'] root_path = '' [plugins.'io.containerd.snapshotter.v1.devmapper'] root_path = '' pool_name = '' base_image_size = '' async_remove = false discard_blocks = false fs_type = '' fs_options = '' [plugins.'io.containerd.snapshotter.v1.native'] root_path = '' [plugins.'io.containerd.snapshotter.v1.overlayfs'] root_path = '' upperdir_label = false sync_remove = false slow_chown = false mount_options = [] [plugins.'io.containerd.snapshotter.v1.zfs'] root_path = '' [plugins.'io.containerd.tracing.processor.v1.otlp'] [plugins.'io.containerd.transfer.v1.local'] max_concurrent_downloads = 3 max_concurrent_uploaded_layers = 3 config_path = '' [cgroup] path = '' [timeouts] 'io.containerd.timeout.bolt.open' = '0s' 'io.containerd.timeout.metrics.shimstats' = '2s' 'io.containerd.timeout.shim.cleanup' = '5s' 'io.containerd.timeout.shim.load' = '5s' 'io.containerd.timeout.shim.shutdown' = '3s' 'io.containerd.timeout.task.state' = '2s' [stream_processors] [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar'] accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted'] returns = 'application/vnd.oci.image.layer.v1.tar' path = 'ctd-decoder' args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys'] env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf'] [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip'] accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted'] returns = 'application/vnd.oci.image.layer.v1.tar+gzip' path = 'ctd-decoder' args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys'] env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf'] </code>
version = 3
root = '/var/lib/containerd'
state = '/run/containerd'
temp = ''
plugin_dir = ''
disabled_plugins = []
required_plugins = []
oom_score = 0
imports = []

[grpc]
  address = '/run/containerd/containerd.sock'
  tcp_address = ''
  tcp_tls_ca = ''

  uid = 0
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[ttrpc]
  address = ''
  uid = 0
  gid = 0

[debug]
  address = ''
  uid = 0
  gid = 0
  level = ''
  format = ''

[metrics]
  address = ''
  grpc_histogram = false

[plugins]
  [plugins.'io.containerd.cri.v1.images']
    snapshotter = 'overlayfs'
    disable_snapshot_annotations = true
    discard_unpacked_layers = false
    max_concurrent_downloads = 3
    image_pull_progress_timeout = '5m0s'
    image_pull_with_sync_fs = false
    stats_collect_period = 10

    [plugins.'io.containerd.cri.v1.images'.pinned_images]
      sandbox = 'registry.k8s.io/pause:3.10'

    [plugins.'io.containerd.cri.v1.images'.registry]
      config_path = ''
      [plugins."io.containerd.grpc.v1.cri".registry.auths]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]      

        [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".auth]
          auth = "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
      [plugins."io.containerd.grpc.v1.cri".registry.headers]

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.26.22.242:5000"]
          endpoint = ["http://172.26.22.242:5000"]

    [plugins.'io.containerd.cri.v1.images'.image_decryption]
      key_model = 'node'

  [plugins.'io.containerd.cri.v1.runtime']
    enable_selinux = false
    selinux_category_range = 1024
    max_container_log_line_size = 16384
    disable_apparmor = false
    restrict_oom_score_adj = false
    disable_proc_mount = false
    unset_seccomp_profile = ''
    tolerate_missing_hugetlb_controller = true
    disable_hugetlb_controller = true
    device_ownership_from_security_context = false
    ignore_image_defined_volumes = false
    netns_mounts_under_state_dir = false
    enable_unprivileged_ports = true
    enable_unprivileged_icmp = true
    enable_cdi = true
    cdi_spec_dirs = ['/etc/cdi', '/var/run/cdi']
    drain_exec_sync_io_timeout = '0s'
    ignore_deprecation_warnings = []

    [plugins.'io.containerd.cri.v1.runtime'.containerd]
      default_runtime_name = 'runc'
      ignore_blockio_not_enabled_errors = false
      ignore_rdt_not_enabled_errors = false

      [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes]
        [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc]
          runtime_type = 'io.containerd.runc.v2'
          runtime_path = ''
          pod_annotations = []
          container_annotations = []
          privileged_without_host_devices = false
          privileged_without_host_devices_all_devices_allowed = false
          base_runtime_spec = ''
          cni_conf_dir = ''
          cni_max_conf_num = 0
          snapshotter = ''
          sandboxer = 'podsandbox'
          io_type = ''

          [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]
            BinaryName = ''
            CriuImagePath = ''
            CriuWorkPath = ''
            IoGid = 0
            IoUid = 0
            NoNewKeyring = false
            Root = ''
            ShimCgroup = ''
        SystemdCgroup = true

    [plugins.'io.containerd.cri.v1.runtime'.cni]
      bin_dir = '/opt/cni/bin'
      conf_dir = '/etc/cni/net.d'
      max_conf_num = 1
      setup_serially = false
      conf_template = ''
      ip_pref = ''
      use_internal_loopback = false

  [plugins.'io.containerd.gc.v1.scheduler']
    pause_threshold = 0.02
    deletion_threshold = 0
    mutation_threshold = 100
    schedule_delay = '0s'
    startup_delay = '100ms'

  [plugins.'io.containerd.grpc.v1.cri']
    disable_tcp_service = true
    stream_server_address = '127.0.0.1'
    stream_server_port = '0'
    stream_idle_timeout = '4h0m0s'
    enable_tls_streaming = false

    [plugins.'io.containerd.grpc.v1.cri'.x509_key_pair_streaming]
      tls_cert_file = ''
      tls_key_file = ''

  [plugins.'io.containerd.image-verifier.v1.bindir']
    bin_dir = '/opt/containerd/image-verifier/bin'
    max_verifiers = 10
    per_verifier_timeout = '10s'

  [plugins.'io.containerd.internal.v1.opt']
    path = '/opt/containerd'

  [plugins.'io.containerd.internal.v1.tracing']

  [plugins.'io.containerd.metadata.v1.bolt']
    content_sharing_policy = 'shared'

  [plugins.'io.containerd.monitor.container.v1.restart']
    interval = '10s'

  [plugins.'io.containerd.monitor.task.v1.cgroups']
    no_prometheus = false

  [plugins.'io.containerd.nri.v1.nri']
    disable = false
    socket_path = '/var/run/nri/nri.sock'
    plugin_path = '/opt/nri/plugins'
    plugin_config_path = '/etc/nri/conf.d'
    plugin_registration_timeout = '5s'
    plugin_request_timeout = '2s'
    disable_connections = false

  [plugins.'io.containerd.runtime.v2.task']
    platforms = ['linux/arm64/v8']

  [plugins.'io.containerd.service.v1.diff-service']
    default = ['walking']
    sync_fs = false

  [plugins.'io.containerd.service.v1.tasks-service']
    blockio_config_file = ''
    rdt_config_file = ''

  [plugins.'io.containerd.shim.v1.manager']
    env = []

  [plugins.'io.containerd.snapshotter.v1.blockfile']
    root_path = ''
    scratch_file = ''
    fs_type = ''
    mount_options = []
    recreate_scratch = false

  [plugins.'io.containerd.snapshotter.v1.btrfs']
    root_path = ''

  [plugins.'io.containerd.snapshotter.v1.devmapper']
    root_path = ''
    pool_name = ''
    base_image_size = ''
    async_remove = false
    discard_blocks = false
    fs_type = ''
    fs_options = ''

  [plugins.'io.containerd.snapshotter.v1.native']
    root_path = ''

  [plugins.'io.containerd.snapshotter.v1.overlayfs']
    root_path = ''
    upperdir_label = false
    sync_remove = false
    slow_chown = false
    mount_options = []

  [plugins.'io.containerd.snapshotter.v1.zfs']
    root_path = ''

  [plugins.'io.containerd.tracing.processor.v1.otlp']

  [plugins.'io.containerd.transfer.v1.local']
    max_concurrent_downloads = 3
    max_concurrent_uploaded_layers = 3
    config_path = ''

[cgroup]
  path = ''

[timeouts]
  'io.containerd.timeout.bolt.open' = '0s'
  'io.containerd.timeout.metrics.shimstats' = '2s'
  'io.containerd.timeout.shim.cleanup' = '5s'
  'io.containerd.timeout.shim.load' = '5s'
  'io.containerd.timeout.shim.shutdown' = '3s'
  'io.containerd.timeout.task.state' = '2s'

[stream_processors]
  [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar']
    accepts = ['application/vnd.oci.image.layer.v1.tar+encrypted']
    returns = 'application/vnd.oci.image.layer.v1.tar'
    path = 'ctd-decoder'
    args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
    env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']

  [stream_processors.'io.containerd.ocicrypt.decoder.v1.tar.gzip']
    accepts = ['application/vnd.oci.image.layer.v1.tar+gzip+encrypted']
    returns = 'application/vnd.oci.image.layer.v1.tar+gzip'
    path = 'ctd-decoder'
    args = ['--decryption-keys-path', '/etc/containerd/ocicrypt/keys']
    env = ['OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf']

Following the instructions in the github post on the same issue, I removed the following configuration items

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> tcp_tls_cert = ''
tcp_tls_key = ''
[plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls]
insecure_skip_verify = true
</code>
<code> tcp_tls_cert = '' tcp_tls_key = '' [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls] insecure_skip_verify = true </code>
  tcp_tls_cert = ''
  tcp_tls_key = ''

          [plugins."io.containerd.grpc.v1.cri".registry.configs."172.26.22.242:5000".tls]
             insecure_skip_verify = true

pod yaml as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# cat private-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: private-nginx
spec:
containers:
- name: private-nginx-container
image: 172.26.22.242:5000/nginx:latest
imagePullSecrets:
- name: regcred
</code>
<code>root@cp01:~# cat private-nginx.yaml apiVersion: v1 kind: Pod metadata: name: private-nginx spec: containers: - name: private-nginx-container image: 172.26.22.242:5000/nginx:latest imagePullSecrets: - name: regcred </code>
root@cp01:~# cat private-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: private-nginx
spec:
  containers:
  - name: private-nginx-container
    image: 172.26.22.242:5000/nginx:latest
  imagePullSecrets:
  - name: regcred

pod configure and auth configure as follow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# kubectl get secret regcred
NAME TYPE DATA AGE
regcred kubernetes.io/dockerconfigjson 1 147m
root@cp01:~# kubectl get secret regcred --output=yaml
apiVersion: v1
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9
kind: Secret
metadata:
creationTimestamp: "2024-12-23T06:17:57Z"
name: regcred
namespace: default
resourceVersion: "294439"
uid: 7130e5fc-ec44-4123-8027-25becb05f137
type: kubernetes.io/dockerconfigjson
root@cp01:~#
root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
}
}
}
</code>
<code>root@cp01:~# kubectl get secret regcred NAME TYPE DATA AGE regcred kubernetes.io/dockerconfigjson 1 147m root@cp01:~# kubectl get secret regcred --output=yaml apiVersion: v1 data: .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9 kind: Secret metadata: creationTimestamp: "2024-12-23T06:17:57Z" name: regcred namespace: default resourceVersion: "294439" uid: 7130e5fc-ec44-4123-8027-25becb05f137 type: kubernetes.io/dockerconfigjson root@cp01:~# root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode { "auths": { "https://index.docker.io/v1/": { "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx" } } } </code>
root@cp01:~# kubectl get secret regcred
NAME      TYPE                             DATA   AGE
regcred   kubernetes.io/dockerconfigjson   1      147m
root@cp01:~# kubectl get secret regcred --output=yaml
apiVersion: v1
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CgkJCSJhdXRoIjogImEzVnljMnN5TURJeE9rUnZZMnRsY2tBeU1ESXgiCgkJfQoJfQp9
kind: Secret
metadata:
  creationTimestamp: "2024-12-23T06:17:57Z"
  name: regcred
  namespace: default
  resourceVersion: "294439"
  uid: 7130e5fc-ec44-4123-8027-25becb05f137
type: kubernetes.io/dockerconfigjson
root@cp01:~#
root@cp01:~# kubectl get secret regcred --output="jsonpath={.data..dockerconfigjson}" | base64 --decode
{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
                }
        }
}

The value of auth for the secret resource regcred is also the same as the value of auth for the docker registry

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@privatehub:~# cat /root/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
}
}
</code>
<code>root@privatehub:~# cat /root/.docker/config.json { "auths": { "https://index.docker.io/v1/": { "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx" } } </code>
root@privatehub:~# cat /root/.docker/config.json
{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "a3Vyc2syMDIxOkRvY2tlckAyMDIx"
                }
        }

After modifying the containerd configuration parameters, all nodes executed systemctl restart containerd

The domain name of the server where the private mirror is located is privatehub.ye, and its IP is 172.26.22.242.nignx is the image I’m pulling.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@privatehub:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bdf62fd3a32f 3 weeks ago 197MB
registry 2 1c6adc34955d 14 months ago 25MB
</code>
<code>root@privatehub:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest bdf62fd3a32f 3 weeks ago 197MB registry 2 1c6adc34955d 14 months ago 25MB </code>
root@privatehub:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    bdf62fd3a32f   3 weeks ago     197MB
registry     2         1c6adc34955d   14 months ago   25MB

But the container just fails to pull

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# kubectl events private-nginx
LAST SEEN TYPE REASON OBJECT MESSAGE
44m (x88 over 65m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest"
44m (x88 over 65m) Warning Failed Pod/private-nginx Error: ImagePullBackOff
44m Normal Scheduled Pod/private-nginx Successfully assigned default/private-nginx to wn05
41m (x5 over 44m) Normal Pulling Pod/private-nginx Pulling image "172.26.22.242:5000/nginx:latest"
41m (x5 over 44m) Warning Failed Pod/private-nginx Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
41m (x5 over 44m) Warning Failed Pod/private-nginx Error: ErrImagePull
4m25s (x176 over 44m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest"
4m25s (x176 over 44m) Warning Failed Pod/private-nginx Error: ImagePullBackOff
root@cp01:~# kubectl describe pod private-nginx
Name: private-nginx
Namespace: default
Priority: 0
Service Account: default
Node: wn05/172.26.11.64
Start Time: Mon, 23 Dec 2024 16:13:54 +0800
Labels: <none>
Annotations: cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f
cni.projectcalico.org/podIP: 10.224.228.7/32
cni.projectcalico.org/podIPs: 10.224.228.7/32
Status: Pending
IP: 10.224.228.7
IPs:
IP: 10.224.228.7
Containers:
private-nginx-container:
Container ID:
Image: 172.26.22.242:5000/nginx:latest
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-h9pkq:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 48m default-scheduler Successfully assigned default/private-nginx to wn05
Normal Pulling 45m (x5 over 48m) kubelet Pulling image "172.26.22.242:5000/nginx:latest"
Warning Failed 45m (x5 over 48m) kubelet Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
Warning Failed 45m (x5 over 48m) kubelet Error: ErrImagePull
Normal BackOff 3m35s (x199 over 48m) kubelet Back-off pulling image "172.26.22.242:5000/nginx:latest"
Warning Failed 3m35s (x199 over 48m) kubelet Error: ImagePullBackOff
</code>
<code>root@cp01:~# kubectl events private-nginx LAST SEEN TYPE REASON OBJECT MESSAGE 44m (x88 over 65m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest" 44m (x88 over 65m) Warning Failed Pod/private-nginx Error: ImagePullBackOff 44m Normal Scheduled Pod/private-nginx Successfully assigned default/private-nginx to wn05 41m (x5 over 44m) Normal Pulling Pod/private-nginx Pulling image "172.26.22.242:5000/nginx:latest" 41m (x5 over 44m) Warning Failed Pod/private-nginx Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client 41m (x5 over 44m) Warning Failed Pod/private-nginx Error: ErrImagePull 4m25s (x176 over 44m) Normal BackOff Pod/private-nginx Back-off pulling image "172.26.22.242:5000/nginx:latest" 4m25s (x176 over 44m) Warning Failed Pod/private-nginx Error: ImagePullBackOff root@cp01:~# kubectl describe pod private-nginx Name: private-nginx Namespace: default Priority: 0 Service Account: default Node: wn05/172.26.11.64 Start Time: Mon, 23 Dec 2024 16:13:54 +0800 Labels: <none> Annotations: cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f cni.projectcalico.org/podIP: 10.224.228.7/32 cni.projectcalico.org/podIPs: 10.224.228.7/32 Status: Pending IP: 10.224.228.7 IPs: IP: 10.224.228.7 Containers: private-nginx-container: Container ID: Image: 172.26.22.242:5000/nginx:latest Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ImagePullBackOff Ready: False Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro) Conditions: Type Status PodReadyToStartContainers True Initialized True Ready False ContainersReady False PodScheduled True Volumes: kube-api-access-h9pkq: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 48m default-scheduler Successfully assigned default/private-nginx to wn05 Normal Pulling 45m (x5 over 48m) kubelet Pulling image "172.26.22.242:5000/nginx:latest" Warning Failed 45m (x5 over 48m) kubelet Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client Warning Failed 45m (x5 over 48m) kubelet Error: ErrImagePull Normal BackOff 3m35s (x199 over 48m) kubelet Back-off pulling image "172.26.22.242:5000/nginx:latest" Warning Failed 3m35s (x199 over 48m) kubelet Error: ImagePullBackOff </code>
root@cp01:~# kubectl events  private-nginx
LAST SEEN               TYPE      REASON      OBJECT              MESSAGE
44m (x88 over 65m)      Normal    BackOff     Pod/private-nginx   Back-off pulling image "172.26.22.242:5000/nginx:latest"
44m (x88 over 65m)      Warning   Failed      Pod/private-nginx   Error: ImagePullBackOff
44m                     Normal    Scheduled   Pod/private-nginx   Successfully assigned default/private-nginx to wn05
41m (x5 over 44m)       Normal    Pulling     Pod/private-nginx   Pulling image "172.26.22.242:5000/nginx:latest"
41m (x5 over 44m)       Warning   Failed      Pod/private-nginx   Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
41m (x5 over 44m)       Warning   Failed      Pod/private-nginx   Error: ErrImagePull
4m25s (x176 over 44m)   Normal    BackOff     Pod/private-nginx   Back-off pulling image "172.26.22.242:5000/nginx:latest"
4m25s (x176 over 44m)   Warning   Failed      Pod/private-nginx   Error: ImagePullBackOff

root@cp01:~# kubectl describe pod  private-nginx
Name:             private-nginx
Namespace:        default
Priority:         0
Service Account:  default
Node:             wn05/172.26.11.64
Start Time:       Mon, 23 Dec 2024 16:13:54 +0800
Labels:           <none>
Annotations:      cni.projectcalico.org/containerID: 1cc07487c491164f36823d66d8a93287ff5bd41332e0051f8c4c9e77518e8b3f
                  cni.projectcalico.org/podIP: 10.224.228.7/32
                  cni.projectcalico.org/podIPs: 10.224.228.7/32
Status:           Pending
IP:               10.224.228.7
IPs:
  IP:  10.224.228.7
Containers:
  private-nginx-container:
    Container ID:
    Image:          172.26.22.242:5000/nginx:latest
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-h9pkq (ro)
Conditions:
  Type                        Status
  PodReadyToStartContainers   True
  Initialized                 True
  Ready                       False
  ContainersReady             False
  PodScheduled                True
Volumes:
  kube-api-access-h9pkq:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  48m                    default-scheduler  Successfully assigned default/private-nginx to wn05
  Normal   Pulling    45m (x5 over 48m)      kubelet            Pulling image "172.26.22.242:5000/nginx:latest"
  Warning  Failed     45m (x5 over 48m)      kubelet            Failed to pull image "172.26.22.242:5000/nginx:latest": failed to pull and unpack image "172.26.22.242:5000/nginx:latest": failed to resolve reference "172.26.22.242:5000/nginx:latest": failed to do request: Head "https://172.26.22.242:5000/v2/nginx/manifests/latest": http: server gave HTTP response to HTTPS client
  Warning  Failed     45m (x5 over 48m)      kubelet            Error: ErrImagePull
  Normal   BackOff    3m35s (x199 over 48m)  kubelet            Back-off pulling image "172.26.22.242:5000/nginx:latest"
  Warning  Failed     3m35s (x199 over 48m)  kubelet            Error: ImagePullBackOff

Manual pull also fails

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest
ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found
</code>
<code>root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found </code>
root@cp01:~# ctr -n k8s.io image pull --plain-http=true 172.26.22.242:5000/nginx:latest
ctr: rpc error: code = NotFound desc = failed to resolve image: 172.26.22.242:5000/nginx:latest: not found

I don’t know what the problem is and how to fix it. Please give me some guidance

1

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật