全部产品
Search
文档中心

Elastic Container Instance:Menarik sebuah image dari repositori image yang dikelola sendiri

更新时间:Jul 02, 2025

Ketika menarik sebuah image dari repositori image yang dikelola sendiri, penarikan mungkin gagal karena perbedaan protokol atau kegagalan autentikasi sertifikat. Topik ini menjelaskan cara menarik image dari repositori tersebut untuk membuat pod atau ImageCache jika repositori menggunakan protokol HTTP dan sertifikat tanda tangan sendiri.

Deskripsi

Ketika menarik sebuah image dari repositori image yang dikelola sendiri, peristiwa peringatan bernama ErrImagePull dapat terjadi, sehingga image tidak dapat ditarik. Tabel berikut menjelaskan penyebab dan solusi masalah ini dengan asumsi jaringan antara Elastic Container Instance dan repositori image telah terhubung.

Skenario

Penyebab

Solusi

Repositori image yang dikelola sendiri menggunakan protokol HTTP.

Secara default, Elastic Container Instance menarik image melalui HTTPS. Penggunaan protokol yang berbeda menyebabkan kegagalan penarikan image.

Konfigurasikan Elastic Container Instance untuk menggunakan protokol HTTP saat berinteraksi dengan repositori image.

Repositori image yang dikelola sendiri menggunakan protokol HTTPS tetapi dengan sertifikat tanda tangan sendiri.

Penggunaan sertifikat tanda tangan sendiri pada repositori image menyebabkan kegagalan autentikasi sertifikat saat menarik image, sehingga image tidak dapat ditarik.

Konfigurasikan untuk melewati autentikasi sertifikat.

Konfigurasi

Jika repositori image yang dikelola sendiri menggunakan protokol HTTP atau sertifikat tanda tangan sendiri saat menarik image, Anda harus mengonfigurasi anotasi untuk mencegah kegagalan penarikan image. Tabel berikut menjelaskan anotasi tersebut.

Anotasi

Nilai contoh

Deskripsi

k8s.aliyun.com/plain-http-registry

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

Alamat repositori image yang dikelola sendiri.

Ketika Anda menarik image dari repositori image yang dikelola sendiri yang menggunakan protokol HTTP, Anda harus menentukan anotasi ini. Dengan cara ini, Elastic Container Instance menggunakan protokol HTTP untuk menarik image. Ini mencegah kegagalan penarikan image karena protokol yang berbeda.

k8s.aliyun.com/insecure-registry

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

Alamat repositori image yang dikelola sendiri.

Ketika Anda menarik image dari repositori image yang dikelola sendiri yang menggunakan sertifikat tanda tangan sendiri, Anda harus menentukan anotasi ini untuk melewati autentikasi sertifikat. Ini mencegah kegagalan penarikan image yang disebabkan oleh kegagalan autentikasi sertifikat.

Catatan
  • Untuk menarik beberapa kontainer dari repositori image yang berbeda, tentukan beberapa alamat repositori image dipisahkan dengan koma (,). Contoh: harbor***.pre.com,192.168.XX.XX.

  • Jika alamat repositori image mencakup nomor port, tentukan alamat beserta nomor port tersebut. Misalnya, jika alamat repositori image adalah 192.168.XX.XX:5000/nginx:latest, atur parameter menjadi 192.168.XX.XX:5000.

Contoh konfigurasi

Menarik sebuah image dari repositori image yang dikelola sendiri untuk membuat pod

Penting
  • Anotasi harus ditambahkan ke metadata dalam file konfigurasi pod. Sebagai contoh, ketika membuat Deployment, tambahkan anotasi di bagian spec.template.metadata.

  • Untuk menggunakan fitur Elastic Container Instance, tambahkan anotasi hanya saat membuat pod berbasis Elastic Container Instance. Jika anotasi ditambahkan atau dimodifikasi saat memperbarui pod, anotasi tersebut tidak akan berlaku.

  • Contoh 1: Repositori image yang dikelola sendiri menggunakan protokol HTTP.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          annotations:
            k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000" # Menentukan alamat repositori image yang dikelola sendiri untuk menarik image melalui protokol HTTP.
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - name: nginx
            image: 192.168.XX.XX:5000/test/nginx:latest
  • Contoh 2: Repositori image yang dikelola sendiri menggunakan sertifikat tanda tangan sendiri.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          annotations:
            k8s.aliyun.com/insecure-registry: "harbor***.pre.com" # Menentukan alamat repositori image yang dikelola sendiri untuk melewati autentikasi sertifikat ketika sistem menarik image dari repositori image yang dikelola sendiri.
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - name: nginx
            image: harbor***.pre.com/test/nginx:latest

Menarik sebuah image dari repositori image yang dikelola sendiri untuk membuat ImageCache

  • Contoh 1: Repositori image yang dikelola sendiri menggunakan protokol HTTP.

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"  # Menentukan alamat repositori image yang dikelola sendiri untuk menarik image melalui protokol HTTP.
    spec:
      images:
      - 192.168.XX.XX:5000/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7
  • Contoh 2: Repositori image yang dikelola sendiri menggunakan sertifikat tanda tangan sendiri.

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/insecure-registry: "harbor***.pre.com"  # Menentukan alamat repositori image yang dikelola sendiri untuk melewati autentikasi sertifikat ketika sistem menarik image dari repositori image yang dikelola sendiri.
    spec:
      images:
      - harbor***.pre.com/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7