Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

Lỗi ErrImagePull là gì? Nguyên nhân và cách khắc phục lỗi chi tiết

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:24/04/2026
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]

ErrImagePull là một trạng thái lỗi thường gặp trong Kubernetes, xuất hiện khi kubelet không thể kéo (pull) container image được khai báo trong Pod từ container registry về node. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý nhiều sự cố image pull trên các cluster Kubernetes, giúp bạn nắm rõ nguyên nhân phổ biến của ErrImagePull và áp dụng quy trình xác định, khắc phục chi tiết để đảm bảo workload triển khai ổn định.

Những điểm chính

  • Quan điểm của mình: Với các hệ thống triển khai bằng Kubernetes, việc hiểu rõ cách vận hành cơ chế kéo image và đọc đúng các trạng thái ErrImagePull/ImagePullBackOff sẽ quyết định bạn xử lý sự cố nhanh hay bị “kẹt” hàng giờ chỉ vì thiếu thông tin.
  • Khái niệm: Hiểu rõ ErrImagePull là trạng thái lỗi ban đầu, giúp bạn nhanh chóng xác định sự cố xảy ra ở khâu kéo ảnh container từ registry.
  • Nguyên nhân gây lỗi: Nắm vững các nguyên nhân phổ biến từ sai tên image đến lỗi xác thực, giúp bạn có một danh sách kiểm tra hiệu quả để khoanh vùng và chẩn đoán sự cố.
  • Cách thức hoạt động: Hiểu rõ cách Kubernetes kéo image, giúp bạn nhận biết các bước tiềm ẩn có thể gây ra lỗi trong quá trình này.
  • Mối liên hệ: Phân biệt rõ ràng mối quan hệ giữa ErrImagePull (lỗi ban đầu) và ImagePullBackOff (trạng thái thử lại), giúp bạn đọc hiểu chính xác các thông báo sự kiện (events) trong Kubernetes.
  • Cách khắc phục: Nắm vững quy trình xử lý 4 bước, giúp bạn có một lộ trình rõ ràng để chẩn đoán và giải quyết triệt để sự cố.
  • Cách phòng tránh: Nắm được các phương pháp hay nhất trong việc quản lý image và cấu hình, giúp bạn chủ động phòng tránh sự cố và đảm bảo quy trình triển khai ổn định.
  • Giới thiệu Vietnix: Nhận biết Vietnix là nhà cung cấp Enterprise Cloud, giúp bạn có một nền tảng hạ tầng vững chắc để tối ưu hóa quy trình DevOps và giảm thiểu các lỗi như ErrImagePull.
  • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lỗi ErrImagePull.
những điểm chính

Lỗi ErrImagePull trong Kubernetes là gì?

ErrImagePull là trạng thái lỗi xuất hiện khi kubelet không thể kéo container image được khai báo trong Pod từ container registry về node. Khi bước image pull thất bại, Pod không thể khởi tạo container và không chuyển sang trạng thái Running. Trong nhiều trường hợp, ErrImagePull là lỗi ban đầu, sau đó Kubernetes có thể chuyển Pod sang trạng thái ImagePullBackOff khi tiếp tục retry theo cơ chế backoff.

ErrImagePull là trạng thái lỗi xuất hiện khi kubelet không thể kéo container image được khai báo trong Pod
ErrImagePull là trạng thái lỗi xuất hiện khi kubelet không thể kéo container image được khai báo trong Pod

Để hạn chế các lỗi liên quan đến image pull và đảm bảo hệ thống Kubernetes vận hành ổn định, việc lựa chọn hạ tầng phù hợp đóng vai trò rất quan trọng. Enterprise Cloud Vietnix cung cấp nền tảng cloud hiệu năng cao, kết nối mạng ổn định và khả năng mở rộng linh hoạt, giúp quá trình pull image từ registry nhanh chóng, giảm thiểu lỗi và tối ưu hiệu suất triển khai ứng dụng trong môi trường thực tế.

Sai tên image, repository hoặc tag

Một trong những nguyên nhân phổ biến nhất gây ErrImagePull là khai báo sai tên image, repository hoặc tag trong manifest Kubernetes hoặc cấu hình dịch vụ. Khi kubelet dùng thông tin này để truy vấn registry, registry không tìm thấy repository hoặc tag tương ứng và trả về lỗi như “repository does not exist” hoặc “manifest unknown”. Tình huống này cũng xuất hiện trên Tencent CloudBase Run nếu cấu hình image của service trỏ đến một image hoặc tag không tồn tại trong Tencent Container Registry hay registry bên ngoài.

Mẹo từ chuyên gia: Ở bước này, mình luôn yêu cầu team Dev xác nhận lại chính xác tên repo và tag ngay trên giao diện hoặc API của registry, sau đó thử docker pull với cùng chuỗi image trước khi sửa manifest.

Image không tồn tại hoặc không public trong registry

Trong nhiều trường hợp, đường dẫn image đúng cú pháp nhưng image thực tế đã bị xóa, chưa được push hoặc đang ở trạng thái private trong registry. Khi kubelet gửi yêu cầu kéo image, registry trả về lỗi không tìm thấy manifest hoặc từ chối truy cập, dẫn đến Pod nhận trạng thái ErrImagePull. Việc triển khai dịch vụ trên CloudBase Run cũng có thể gặp ErrImagePull nếu image chưa được publish đúng project/namespace registry hoặc người dùng không có quyền đọc image đó.

Lỗi xác thực hoặc thiếu thông tin đăng nhập registry

Nếu registry yêu cầu xác thực nhưng cluster không cung cấp thông tin đăng nhập hợp lệ, kubelet không thể lấy image và trả về ErrImagePull kèm thông báo như “unauthorized” hoặc “authentication required”. Nguyên nhân thường đến từ cấu hình sai imagePullSecret, secret hết hạn token hoặc không gán secret đúng cách cho Pod hay ServiceAccount. Trên Tencent CloudBase Run, việc cấu hình chưa đúng credential để truy cập Tencent Container Registry hoặc registry bên ngoài cũng dẫn đến lỗi ErrImagePull do không vượt qua bước xác thực.

Sự cố mạng, DNS hoặc firewall tới container registry

ErrImagePull cũng có thể xuất hiện khi node không thể kết nối được tới địa chỉ registry do sự cố mạng, phân giải DNS sai hoặc firewall chặn traffic ra ngoài. Trong trường hợp này, kubelet gửi yêu cầu nhưng không nhận được phản hồi thích hợp, gây ra các lỗi như timeout, TLS handshake failure hoặc connection refused và kết quả cuối cùng là ErrImagePull. Với các môi trường managed như CloudBase Run, cấu hình network, VPC, router hoặc security group không cho phép truy cập registry cũng là nguyên nhân khiến dịch vụ báo lỗi ErrImagePull ngay khi khởi động.

Nguyên nhân thường gặp dẫn đến ErrImagePull
Nguyên nhân thường gặp dẫn đến ErrImagePull

Cách Kubernetes kéo image và lý do sinh ra ErrImagePull

Khi một Pod được tạo, kubelet trên node sẽ đọc spec của Pod để lấy thông tin container image, sau đó phân giải tên image thành các thành phần như registry (nếu được chỉ định), repository và tag. Nếu không chỉ rõ registry, kubelet dùng registry mặc định (ví dụ Docker Hub) và sử dụng tag latest khi không có tag, rồi chuẩn bị kết nối tới endpoint tương ứng của registry.

Tiếp theo, kubelet gửi yêu cầu tới registry để lấy manifest và các layer của image, có thể kèm thông tin xác thực nếu registry yêu cầu login. Registry kiểm tra quyền truy cập, tìm manifest và trả về metadata, sau đó node lần lượt tải về các layer để lưu vào local image cache. Khi toàn bộ manifest và layer được tải thành công, image sẵn sàng cho container runtime sử dụng để khởi tạo container.

ErrImagePull phát sinh khi một trong các bước trên thất bại, ví dụ không phân giải được image (sai tên, sai tag), không truy cập được registry (lỗi mạng hoặc DNS) hoặc bị từ chối bởi registry (lỗi xác thực, thiếu quyền). Trong trường hợp này, kubelet ghi nhận lỗi ở sự kiện Pod và trạng thái container chuyển sang ErrImagePull thay vì Pulled/Running. Nếu lỗi tiếp tục lặp lại trong các lần retry, Kubernetes có thể chuyển sang trạng thái ImagePullBackOff, thể hiện cơ chế backoff tăng dần thời gian chờ giữa các lần kéo image.

Quy trình Kubernetes kéo container image
Quy trình Kubernetes kéo container image

Mẹo từ chuyên gia: Khi debug, mình luôn đọc Events của Pod theo thứ tự thời gian để tách bạch được lỗi “lần đầu” (ErrImagePull) và giai đoạn retry (ImagePullBackOff), từ đó tập trung xử lý đúng nguyên nhân gốc.

Quy trình chẩn đoán và xử lý lỗi ErrImagePull

Bước 1: Kiểm tra thông tin lỗi với kubectl describe pod và log nền tảng

Trước tiên, bạn cần lấy đầy đủ thông tin lỗi mà kubelet ghi lại cho Pod gặp ErrImagePull. Sử dụng kubectl describe pod để xem phần Events, nơi thường hiển thị các thông báo như “repository not found”, “manifest unknown”, “unauthorized”, “TLS handshake timeout” hoặc các lỗi kết nối khác liên quan tới việc kéo image. Nếu triển khai trên Tencent CloudBase Run, bạn cần đồng thời kiểm tra log và chi tiết lỗi trong giao diện console của dịch vụ để nắm được thông báo ErrImagePull và các mã lỗi đi kèm do nền tảng cung cấp.

kubectl describe pod <ten-pod> -n <namespace>

Bước 2: Sửa lỗi liên quan đến image, repository và tag

Sau khi nắm được lỗi, bước tiếp theo là kiểm tra lại phần image được khai báo trong YAML hoặc cấu hình dịch vụ. Bạn cần đối chiếu tên image, repository và tag trong manifest với thực tế trên registry đang sử dụng (Docker Hub, private registry, Tencent Container Registry,…) để xác nhận sự tồn tại và tính chính xác. Tiếp đó, bạn nên thực hiện docker pull, podman pull hoặc ctr images pull từ một môi trường tương đương node để kiểm chứng việc kéo image có thành công hay không, từ đó loại trừ trường hợp image chưa được push hoặc đã bị xóa.

docker pull <registry>/<repo>:<tag>
# hoặc
podman pull <registry>/<repo>:<tag>

Nếu phát hiện tên image hoặc tag sai, cần cập nhật lại manifest Kubernetes hoặc cấu hình CloudBase Run với đường dẫn image và tag chính xác, đồng thời nên hạn chế sử dụng tag latest để tránh nhầm lẫn giữa các phiên bản image.

Lỗi thường gặp: Sửa lại tag trong YAML nhưng quên apply resource (hoặc apply nhầm namespace), khiến cluster vẫn chạy cấu hình cũ.

Bước 3: Khắc phục vấn đề mạng và kết nối tới registry

Khi tên image đã đúng nhưng vẫn gặp ErrImagePull với thông điệp liên quan đến timeout, TLS hoặc không thể kết nối, bạn cần tập trung kiểm tra đường truyền tới registry. Từ node hoặc môi trường chạy workload, có thể dùng các công cụ như ping, curl, telnet hoặc tương đương để kiểm tra khả năng kết nối tới hostname của registry (bao gồm cả cổng sử dụng). Đồng thời, bạn rà soát cấu hình DNS, proxy, firewall, security group hoặc ACL trên mạng/VPC để xác định có thành phần nào đang chặn hoặc chuyển hướng traffic ra/vào registry.

ping <registry-hostname>
curl -v https://<registry-hostname>/v2/
telnet <registry-hostname> 443

Bên cạnh đó, bạn nên kiểm tra trạng thái hoạt động của registry (region, endpoint, health service) thông qua trang trạng thái dịch vụ hoặc tài liệu nhà cung cấp để loại trừ trường hợp registry đang gặp sự cố phía nhà cung cấp.

Bước 4: Xử lý sự cố xác thực và quyền truy cập registry

Nếu thông báo ErrImagePull cho thấy lỗi “unauthorized”, “authentication required” hoặc mã lỗi liên quan đến quyền, bạn cần kiểm tra lại thông tin đăng nhập sử dụng cho registry. Trong Kubernetes, thông tin này thường được lưu dưới dạng Secret dùng cho imagePullSecrets, bao gồm username/password, access token hoặc key được cung cấp bởi registry. Khi credential không còn hợp lệ hoặc cấu hình sai, bạn tạo mới hoặc cập nhật Secret, sau đó gán lại vào Pod spec hoặc ServiceAccount thông qua trường imagePullSecrets.

kubectl create secret docker-registry regcred \
  --docker-server=<registry> \
  --docker-username=<username> \
  --docker-password=<password> \
  --docker-email=<email> \
  -n <namespace>
apiVersion: v1
kind: Pod
metadata:
  name: example
  namespace: <namespace>
spec:
  imagePullSecrets:
    - name: regcred
  containers:
    - name: app
      image: <registry>/<repo>:<tag>

Đối với Tencent CloudBase Run, bạn cần cấu hình lại credential truy cập Tencent Container Registry hoặc registry bên ngoài theo hướng dẫn của nền tảng (ví dụ gán quyền cho tài khoản cloud, cấu hình thông tin repository trong giao diện CloudBase Run), để dịch vụ có đủ quyền kéo image mà không phát sinh ErrImagePull.

Mẹo từ chuyên gia: Mỗi khi xoay vòng token registry, mình đều cập nhật và test Secret trên một namespace thử nghiệm trước, rồi mới rollout sang namespace production để tránh gây lỗi kéo image hàng loạt.

Hạn chế ErrImagePull trong môi trường Kubernetes

Để giảm tần suất phát sinh ErrImagePull và đơn giản hóa quá trình vận hành, bạn cần thiết kế quy trình build, push và deploy image một cách chặt chẽ ngay từ đầu.

  • Chuẩn hóa tên và tag image: Sử dụng quy ước đặt tên rõ ràng cho repository và tag, tránh phụ thuộc vào latest để giảm rủi ro trỏ nhầm tới phiên bản image không mong muốn.
  • Kiểm tra image trước khi triển khai: Thực hiện docker/podman/ctr pull image từ môi trường tương đương node hoặc môi trường CI/CD để xác minh image tồn tại và có thể kéo được trước khi apply manifest lên cluster.
  • Quản lý credential registry bằng Secret: Lưu thông tin đăng nhập registry trong Kubernetes Secret (docker-registry) hoặc cơ chế credential an toàn của nền tảng, thay vì hard-code trong manifest hoặc biến môi trường.
  • Gán imagePullSecrets đúng phạm vi: Cấu hình imagePullSecrets cho Pod hoặc gắn ở cấp ServiceAccount dùng chung cho nhiều workload, bảo đảm mọi Pod cần kéo image private đều có credential hợp lệ.
  • Giám sát trạng thái registry và mạng: Thiết lập giám sát kết nối tới registry, bao gồm DNS, latency, lỗi TLS, cùng với việc theo dõi trang trạng thái dịch vụ registry hoặc cloud provider để phát hiện sớm sự cố ảnh hưởng đến quá trình kéo image.
  • Tối ưu quy trình deploy trên nền tảng managed: Với môi trường như Tencent CloudBase Run, định kỳ kiểm tra cấu hình image, registry, quyền truy cập và log triển khai để đảm bảo dịch vụ luôn tham chiếu đúng repository, tag và credential mới nhất.
Hạn chế ErrImagePull trong môi trường Kubernetes
Hạn chế ErrImagePull trong môi trường Kubernetes

Vietnix – Nhà cung cấp nền tảng đám mây tối ưu, hạn chế lỗi ImagePull

Để đảm bảo các cụm Kubernetes của bạn hoạt động ổn định và tránh các lỗi phiền phức như ErrImagePull, một hạ tầng đám mây với hiệu năng cao và kết nối mạng đáng tin cậy là yếu tố không thể thiếu. Vietnix cung cấp dịch vụ Enterprise Cloud hiệu suất vượt trội, được thiết kế để trở thành nền tảng vững chắc cho các cụm Kubernetes của bạn. Với kết nối mạng ổn định và băng thông mạnh mẽ, Vietnix giúp các node của bạn dễ dàng kéo image container từ mọi registry, giảm thiểu rủi ro lỗi kết nối và tối ưu hóa quy trình triển khai.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

Làm thế nào để kiểm tra thông tin chi tiết về lỗi ErrImagePull?

Để kiểm tra thông tin chi tiết, bạn nên sử dụng lệnh kubectl describe pod <pod-name>. Phần Events ở cuối kết quả sẽ cung cấp các thông báo lỗi cụ thể như “repository not found”, “manifest unknown”, “unauthorized” hoặc các lỗi kết nối, giúp xác định chính xác nguyên nhân.

Khi sử dụng một private registry, imagePullSecrets là gì?

imagePullSecrets là một trường trong manifest Pod, chỉ định các secret chứa thông tin xác thực (username/password, token) để truy cập vào một private registry. Nếu không có secret này, kubelet sẽ không thể xác thực và sẽ bị registry từ chối quyền kéo image, gây ra lỗi ErrImagePull.

Tại sao việc hạn chế sử dụng tag latest lại được khuyến nghị để tránh lỗi ErrImagePull?

Việc hạn chế sử dụng tag latest được khuyến nghị vì latest không đảm bảo tính nhất quán, có thể trỏ đến các phiên bản image khác nhau tại các thời điểm khác nhau, gây ra sự nhầm lẫn và khó khăn trong việc gỡ lỗi. Sử dụng các tag phiên bản cụ thể (ví dụ: v1.2.3) đảm bảo rằng bạn luôn kéo đúng phiên bản image mong muốn và tránh các lỗi ErrImagePull do phiên bản latest không tồn tại hoặc không mong đợi.

Lỗi ErrImagePull là một sự cố phổ biến nhưng quan trọng trong Kubernetes, báo hiệu rằng hệ thống không thể kéo ảnh container cần thiết để khởi chạy ứng dụng. Việc thiết lập các quy trình làm việc chặt chẽ và giám sát chủ động sẽ là chìa khóa để hạn chế ErrImagePull, đảm bảo các ứng dụng được triển khai một cách liền mạch và duy trì tính sẵn sàng cho toàn bộ cụm Kubernetes.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

kien-thuc-dich-vu

kien-thuc-kubernetes

text
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG