全部产品
Search
文档中心

Container Service for Kubernetes:Jalankan pod aplikasi yang menggunakan InClusterConfig di tepi tanpa melakukan perubahan pada pod

更新时间:Jun 26, 2025

Container Service for Kubernetes (ACK) Edge adalah layanan komputasi tepi berbasis cloud-native pertama yang mengoordinasikan beban kerja di cloud dan di tepi dengan metode non-intrusif. ACK Edge memungkinkan Anda menerapkan pod aplikasi di tepi dan mengatur pod tersebut untuk menggunakan InClusterConfig guna mengakses server API Kubernetes tanpa perubahan pada pod. Topik ini menjelaskan cara menjalankan pod aplikasi yang menggunakan InClusterConfig di tepi.

Informasi latar belakang

Berikut adalah masalah yang terjadi ketika Anda ingin menerapkan pod aplikasi dalam kluster Kubernetes open source ke tepi dan mengatur pod tersebut untuk menggunakan InClusterConfig guna mengakses server API Kubernetes:

  • Masalah 1: Pod aplikasi mengakses server API Kubernetes berdasarkan alamat dalam InClusterConfig. Namun, pod di tepi dan server API Kubernetes di cloud berada dalam jaringan yang berbeda. Akibatnya, pod di tepi tidak dapat mengakses alamat IP pod di cloud.

  • Masalah 2: Setelah Masalah 1 diperbaiki, jika pod aplikasi dimulai ulang karena gangguan jaringan di cloud, pod di tepi tidak dapat mengambil konfigurasi beban kerja dari server API Kubernetes, yang memengaruhi restart pod aplikasi.

Untuk informasi lebih lanjut tentang cara mengakses API dari pod, lihat Mengakses API dari Pod.

Solusi

Anda dapat mengaktifkan edge-hub dari ACK Edge pada node tepi untuk memperbaiki masalah di atas dengan metode non-intrusif. Kemudian, Anda dapat mengatur pod aplikasi di tepi untuk menggunakan InClusterConfig guna mengakses server API Kubernetes tanpa perubahan pada pod. Berikut adalah detailnya:

  • Titik akhir pod yang diterapkan di tepi secara otomatis berubah dari variabel lingkungan KUBERNETES_SERVICE_HOST dan KUBERNETES_SERVICE_PORT menjadi titik akhir HTTPS dan port edge-hub (KUBERNETES_SERVICE_HOST=169.254.2.1 dan KUBERNETES_SERVICE_PORT=10268) tanpa sepengetahuan pod aplikasi. Dengan cara ini, pod aplikasi dapat menggunakan InClusterConfig untuk mengakses server API Kubernetes melalui edge-hub, memperbaiki masalah pertama.

  • Aktifkan fitur caching edge-hub. Dengan cara ini, pod aplikasi dapat mengambil data dari cache lokal saat mereka dimulai ulang, memperbaiki masalah kedua.

    Untuk informasi lebih lanjut tentang cara mengaktifkan fitur caching edge-hub, lihat bagian Aktifkan Fitur Caching Edge-Hub dari topik ini.

Aktifkan fitur caching edge-hub

Catatan
  • Kami menyarankan Anda menonaktifkan fitur caching untuk pod yang menerima banyak permintaan list atau watch karena data disimpan di disk lokal.

  • Anda harus memulai ulang pod setelah fitur caching diaktifkan untuk pod tersebut.

  1. Dapatkan Header User-Agent.

    Header User-Agent dapat ditemukan dalam perintah startup pod aplikasi.

    apiVersion: v1
    kind: Pod
    metadata:
      name: edge-app-pod
    spec:
      containers:
        - name: "edge-app"
          image: "xxx/edge-app-amd64:1.18.8"
          command:
            - /bin/sh
            - -ec
            - |
              # Header User-Agent ditemukan dalam perintah startup: edge-app 
              /usr/local/bin/edge-app --v=2

    Anda juga dapat menemukan header User-Agent dalam log edge-hub, seperti {User-Agent} watch {resource). Contoh:

    I0820 07:50:18.899015       1 util.go:221] edge-app get services: /api/v1/services/xxx with status code 200, spent 21.035061152ms
  2. Aktifkan Fitur Caching Edge-Hub.

    Untuk mengaktifkan fitur caching edge-hub, tambahkan header User-Agent pod aplikasi ke bidang cache_agents dalam ConfigMap edge-hub-cfg.

    Template YAML berikut memberikan contoh:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: edge-hub-cfg
      namespace: kube-system
    data:
      # Ini menyimpan data ketika pod edge-app yang memiliki header User-Agent edge-app mengakses server API Kubernetes.
      # Mulai ulang pod aplikasi setelah fitur caching diaktifkan.
      cache_agents: "edge-app"   # Pisahkan beberapa komponen dengan koma (,).
  3. Periksa Apakah Data yang Dikembalikan oleh Pod Aplikasi Di-cache.

    Periksa apakah data cache ada di direktori /etc/kubernetes/cache/{User-Agent} pada node yang menampung pod aplikasi.