Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Bagian ini menjelaskan cara membuat, mengonfigurasi, dan menjalankan lingkungan Airflow lokal menggunakan alat CLI Pengembangan Lokal Composer.
Tentang alat CLI Pengembangan Lokal Composer
Alat CLI Pengembangan Lokal Composer menyederhanakan pengembangan DAG Apache Airflow untuk Managed Airflow dengan menjalankan lingkungan Airflow secara lokal. Lingkungan Airflow lokal ini menggunakan image Managed Airflow yang digunakan oleh versi Managed Airflow tertentu.
Anda dapat membuat lingkungan Airflow lokal berdasarkan lingkungan Managed Airflow yang ada. Dalam hal ini, lingkungan Airflow lokal mengambil daftar paket PyPI yang diinstal dan nama variabel lingkungan dari lingkungan Managed Airflow Anda.
Anda dapat menggunakan lingkungan Airflow lokal ini untuk tujuan pengujian dan pengembangan, seperti untuk menguji kode DAG baru, paket PyPI, atau opsi konfigurasi Airflow.
Sebelum memulai
Alat CLI Pengembangan Lokal Composer membuat lingkungan Airflow lokal di direktori tempat Anda menjalankan perintah
composer-dev create. Untuk mengakses lingkungan Airflow lokal Anda nanti, jalankan perintah alat di jalur tempat Anda membuat lingkungan lokal pada awalnya. Semua data untuk lingkungan lokal disimpan dalam subdirektori di jalur tempat Anda membuat lingkungan lokal:./composer/<local_environment_name>.Komputer Anda harus memiliki ruang disk yang cukup untuk menyimpan image Managed Airflow. Alat CLI Pengembangan Lokal Composer menyimpan satu file image untuk setiap versi Managed Airflow. Misalnya, jika Anda memiliki dua lingkungan Airflow lokal dengan versi Managed Airflow yang berbeda, alat CLI Composer Local Development akan menyimpan dua image Managed Airflow.
Alat CLI Pengembangan Lokal Composer menggunakan output berwarna. Anda dapat menonaktifkan output berwarna dengan variabel
NO_COLOR=1:NO_COLOR=1 composer-dev <other commands>.Jika hanya memiliki satu lingkungan lokal, Anda dapat menghilangkan nama lingkungan lokal dari semua perintah
composer-dev, kecualirun-airflow-cmd.Instal dependensi alat CLI Pengembangan Lokal Composer:
- Python versi 3.8 hingga 3.11 dengan
pip - Google Cloud CLI
- Python versi 3.8 hingga 3.11 dengan
Docker (Linux/macOS/Windows) atau Podman (Linux atau Windows) harus diinstal dan berjalan di komputer Anda.
Untuk memverifikasi bahwa Docker atau Podman sedang berjalan, jalankan perintah Docker CLI atau Podman CLI, seperti
docker psataupodman ps. Semua petunjuk berlaku untuk Docker dan Podman, kecuali jika ditentukan lain, dan semua perintah Docker dapat diganti dengan perintah Podman yang setara.
Mengonfigurasi kredensial
Jika belum dilakukan, dapatkan kredensial pengguna baru untuk digunakan bagi Kredensial Default Aplikasi:
gcloud auth application-default login
Login di gcloud CLI menggunakan Akun Google Anda:
gcloud auth login
Semua panggilan API yang dilakukan oleh alat CLI Pengembangan Lokal Composer dan DAG dieksekusi dari akun yang Anda gunakan di gcloud CLI. Misalnya, jika DAG di lingkungan Airflow lokal Anda membaca konten bucket Cloud Storage, akun ini harus memiliki izin untuk mengakses bucket tersebut. Hal ini berbeda dengan lingkungan Managed Airflow, tempat akun layanan lingkungan melakukan panggilan.
Menginstal alat Composer Local Development CLI
Buat clone repositori Composer Local Development CLI:
git clone https://github.com/GoogleCloudPlatform/composer-local-dev.git
Di direktori tingkat atas repositori yang di-clone, jalankan:
pip install .
Bergantung pada konfigurasi pip, jalur tempat alat diinstal mungkin tidak ada dalam variabel PATH. Jika demikian, pip akan menampilkan pesan
peringatan. Anda dapat menggunakan informasi dari pesan peringatan ini untuk menambahkan direktori ini ke variabel PATH di sistem operasi Anda.
(Podman) Mengonfigurasi Podman
Jika Anda menggunakan Podman, ikuti langkah-langkah berikut untuk mengonfigurasinya:
Linux
Aktifkan soket layanan pengguna Podman.
CLI
composer-devberkomunikasi melalui panggilan Docker API standar. Anda harus mengaktifkan wrapper soket layanan latar belakang Podman di tingkat pengguna untuk meniru daemon Docker.Pertama, verifikasi apakah soket tingkat pengguna sudah aktif:
systemctl --user is-active podman.socketJika perintah menampilkan
inactiveataufailed, aktifkan dan mulai soket:# Enable and start Podman's user-level systemd socket systemctl --user enable --now podman.socketKonfigurasi variabel lingkungan untuk Podman.
Tambahkan perintah berikut ke file konfigurasi shell Anda (seperti
.bashrcatau.zshrc):export DOCKER_HOST="unix:///run/user/$UID/podman/podman.sock"
Windows
Setel konfigurasi WSL 2 (
.wslconfig). Sebelum menginisialisasi mesin Podman, periksa apakah WSL 2 memiliki batas memori dan swap yang ditentukan. Tanpa itu, deployment multi-container dapat menyebabkan lonjakan memori selama ekstraksi image. Penting juga untuk menetapkan batasan jumlah download serentak.Ubah atau buat file
%USERPROFILE%\.wslconfig:[wsl2] memory=4GB swap=2GB [registry] max_concurrent_downloads = 2Di PowerShell, lakukan inisialisasi mesin Podman:
podman machine initMulai mesin:
podman machine start
Setelah melakukan langkah-langkah ini, Anda dapat menggunakan perintah CLI composer-dev. Alat ini akan otomatis mendeteksi lingkungan Podman Anda di Windows dan menyesuaikan pemetaan arsitektur.
Membuat lingkungan Airflow lokal dengan image Managed Airflow
Untuk mencantumkan image Managed Airflow yang tersedia, jalankan:
composer-dev list-available-versions --include-past-releases --limit 10
Untuk membuat lingkungan Airflow lokal dengan parameter default, jalankan:
composer-dev create \
--from-image-version IMAGE_VERSION \
LOCAL_ENVIRONMENT_NAME
Parameter lainnya:
composer-dev create LOCAL_ENVIRONMENT_NAME \
--from-image-version IMAGE_VERSION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH \
--plugins-path LOCAL_PLUGINS_PATH \
--database DATABASE_ENGINE \
--editable-dependencies EDITABLE_DEPENDENCY_PATH
Ganti:
LOCAL_ENVIRONMENT_NAMEdengan nama lingkungan Airflow lokal ini.IMAGE_VERSIONdengan nama image Managed Airflow.PROJECT_IDdengan Project ID.WEB_SERVER_PORTdengan port yang harus diproses oleh server web Airflow.LOCAL_DAGS_PATHdengan jalur ke direktori lokal tempat file DAG berada.LOCAL_PLUGINS_PATHdengan jalur ke direktori lokal tempat file plugin berada.DATABASE_ENGINEdengan mesin database yang akan digunakan. Nilai yang mungkin adalahpostgresql(default) dansqlite.(Khusus Linux/macOS)
EDITABLE_DEPENDENCY_PATHdengan jalur ke direktori lokal yang berisi paket Python untuk diinstal dalam mode yang dapat diedit. Argumen ini tidak didukung di Windows.Jalur dapat bersifat absolut atau relatif (jalur relatif diselesaikan terhadap direktori kerja saat ini). Direktori ini harus dapat diakses oleh mesin penampung.
Untuk menentukan beberapa paket yang dapat diedit, ulangi opsi. Contoh:
--editable-dependencies ./pkg1 --editable-dependencies ./pkg2.Menginstal paket dengan
pip install -eakan segera menerapkan perubahan pada paket ini di dalam project.
Contoh:
composer-dev create \
--from-image-version composer-2.17.12-airflow-2.11.1 \
example-local-environment
Membuat lingkungan Airflow lokal dari lingkungan Managed Airflow
Hanya informasi berikut yang diambil dari lingkungan Managed Airflow:
Versi Managed Airflow dan Airflow yang digunakan di lingkungan Anda.
Daftar paket PyPI kustom yang diinstal di lingkungan Anda.
Daftar nama variabel lingkungan yang ditetapkan di lingkungan Anda dengan komentar.
Parameter konfigurasi dan informasi lainnya dari lingkungan, seperti file DAG, histori eksekusi DAG, variabel Airflow, dan koneksi, tidak disalin dari lingkungan Managed Airflow Anda.
Untuk membuat lingkungan Airflow lokal dari lingkungan Managed Airflow yang ada:
composer-dev create LOCAL_ENVIRONMENT_NAME \
--from-source-environment ENVIRONMENT_NAME \
--location LOCATION \
--project PROJECT_ID \
--port WEB_SERVER_PORT \
--dags-path LOCAL_DAGS_PATH \
--plugins-path LOCAL_PLUGINS_PATH \
--database DATABASE_ENGINE \
--editable-dependencies EDITABLE_DEPENDENCY_PATH
Ganti:
LOCAL_ENVIRONMENT_NAMEdengan nama untuk lingkungan Airflow lokal.ENVIRONMENT_NAMEdengan nama lingkungan Managed Airflow.LOCATIONdengan region tempat lingkungan Managed Airflow berada.PROJECT_IDdengan Project ID.WEB_SERVER_PORTdengan port untuk server web Airflow lokal.LOCAL_DAGS_PATHdengan jalur ke direktori lokal tempat DAG berada.LOCAL_PLUGINS_PATHdengan jalur ke direktori lokal tempat file plugin berada.DATABASE_ENGINEdengan mesin database yang akan digunakan. Nilai yang mungkin adalahpostgresql(default) dansqlite.(Khusus Linux/macOS)
EDITABLE_DEPENDENCY_PATHdengan jalur ke direktori lokal yang berisi paket Python untuk diinstal dalam mode yang dapat diedit. Argumen ini tidak didukung di Windows.Jalur dapat bersifat absolut atau relatif (jalur relatif diselesaikan terhadap direktori kerja saat ini). Direktori ini harus dapat diakses oleh mesin penampung.
Untuk menentukan beberapa paket yang dapat diedit, ulangi opsi. Contoh:
--editable-dependencies ./pkg1 --editable-dependencies ./pkg2.Menginstal paket dengan
pip install -eakan segera menerapkan perubahan pada paket ini di dalam project.
Contoh:
composer-dev create example-local-environment \
--from-source-environment example-environment \
--location us-central1 \
--project example-project \
--port 8081 \
--dags-path ./example_directory/dags \
--plugins-path ./example_directory/plugins \
--database postgresql \
--editable-dependencies ./pkg1
Mulai lingkungan Airflow lokal
Untuk memulai lingkungan Airflow lokal, jalankan:
composer-dev start LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAMEdengan nama lingkungan Airflow lokal.
Menghentikan atau memulai ulang lingkungan Airflow lokal
Saat Anda memulai ulang lingkungan Airflow lokal, alat Composer Local Development CLI akan memulai ulang container Docker tempat lingkungan berjalan. Semua komponen Airflow dihentikan dan dimulai lagi. Akibatnya, semua proses DAG yang dieksekusi selama memulai ulang ditandai sebagai gagal .
Untuk memulai ulang atau memulai lingkungan Airflow lokal yang dihentikan, jalankan:
composer-dev restart LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAMEdengan nama lingkungan Airflow lokal.
Untuk menghentikan lingkungan Airflow lokal, jalankan:
composer-dev stop LOCAL_ENVIRONMENT_NAME
Menambahkan dan memperbarui DAG
DAG disimpan di direktori yang Anda tentukan dalam parameter --dags-path saat Anda membuat lingkungan Airflow lokal. Secara default, direktori ini adalah ./composer/<local_environment_name>/dags. Anda dapat memperoleh
direktori yang digunakan oleh lingkungan Anda dengan perintah describe.
Untuk menambahkan dan memperbarui DAG, ubah file di direktori ini. Anda tidak perlu memulai ulang lingkungan Airflow lokal.
Melihat log lingkungan Airflow lokal
Anda dapat melihat log terbaru dari container Docker yang menjalankan lingkungan Airflow lokal Anda. Dengan cara ini, Anda dapat memantau peristiwa terkait penampung dan memeriksa log Airflow untuk mengetahui error seperti konflik dependensi yang disebabkan oleh penginstalan paket PyPI.
Untuk melihat log dari container Docker yang menjalankan lingkungan Airflow lokal Anda, jalankan:
composer-dev logs LOCAL_ENVIRONMENT_NAME --max-lines 10
Untuk mengikuti aliran log, hapus argumen --max-lines:
composer-dev logs LOCAL_ENVIRONMENT_NAME
Menjalankan perintah Airflow CLI
Anda dapat menjalankan perintah CLI Airflow di lingkungan Airflow lokal.
Untuk menjalankan perintah Airflow CLI:
composer-dev run-airflow-cmd LOCAL_ENVIRONMENT_NAME \
SUBCOMMAND SUBCOMMAND_ARGUMENTS
Contoh:
composer-dev run-airflow-cmd example-local-environment dags list -o table
Mengonfigurasi lingkungan Airflow lokal
Alat CLI Pengembangan Lokal Composer menyimpan parameter konfigurasi untuk lingkungan Airflow lokal, seperti variabel lingkungan dan persyaratan paket PyPI di direktori lingkungan lokal (./composer/<local_environment_name>).
Konfigurasi diterapkan saat lingkungan Airflow lokal dimulai. Misalnya, jika Anda menambahkan persyaratan paket PyPI yang bertentangan, alat CLI Pengembangan Lokal Composer akan melaporkan error saat Anda memulai lingkungan lokal.
Koneksi Airflow disimpan dalam database lingkungan Airflow lokal. Anda dapat mengonfigurasinya dengan menjalankan perintah Airflow CLI atau dengan menyimpan parameter koneksi dalam variabel lingkungan. Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengonfigurasi koneksi, lihat Mengelola koneksi dalam dokumentasi Airflow.
Mendapatkan daftar dan status lingkungan Airflow lokal
Untuk mencantumkan semua lingkungan Airflow lokal yang tersedia dan menampilkan statusnya:
composer-dev list
Untuk mendeskripsikan lingkungan tertentu, dan mendapatkan detail seperti versi image, jalur DAG, dan URL server web lingkungan:
composer-dev describe LOCAL_ENVIRONMENT_NAME
Ganti:
LOCAL_ENVIRONMENT_NAMEdengan nama lingkungan Airflow lokal.
Mencantumkan gambar yang digunakan oleh lingkungan Airflow lokal
Untuk mencantumkan semua image yang digunakan oleh alat CLI Pengembangan Lokal Composer, jalankan:
docker images --filter=reference='*/cloud-airflow-releaser/*/*'
Menginstal plugin dan mengubah data
Plugin dan data untuk lingkungan Airflow lokal diambil dari direktori lingkungan lokal: ./composer/<local_environment_name>/data dan ./composer/<local_environment_name>/plugins).
Untuk mengubah konten direktori /data dan /plugins, tambahkan atau hapus file di direktori ini. Docker otomatis menyebarkan perubahan file ke
lingkungan Airflow lokal Anda.
Alat CLI Pengembangan Lokal Composer tidak mendukung penentuan direktori yang berbeda untuk data dan plugin.
Mengonfigurasi variabel lingkungan
Untuk mengonfigurasi variabel lingkungan, edit file variables.env
di direktori lingkungan:
./composer/<local_environment_name>/variables.env.
File variables.env harus berisi definisi key-value, satu baris untuk setiap
variabel lingkungan. Untuk mengubah opsi konfigurasi Airflow, gunakan format
AIRFLOW__SECTION__KEY. Untuk mengetahui informasi selengkapnya tentang variabel lingkungan yang tersedia, lihat Referensi konfigurasi Airflow.
EXAMPLE_VARIABLE=True
ANOTHER_VARIABLE=test
AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW=graph
Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Menginstal atau menghapus paket PyPI
Untuk menginstal atau menghapus paket PyPI, ubah file requirements.txt di direktori lingkungan: ./composer/<local_environment_name>/requirements.txt.
Persyaratan harus mengikuti format yang ditentukan dalam PEP-508 dengan setiap persyaratan ditentukan dalam huruf kecil dan terdiri dari nama paket dengan ekstra opsional dan penentu versi.
Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Beralih ke image Managed Airflow yang berbeda
Anda dapat menggunakan image Managed Airflow apa pun dengan alat CLI Pengembangan Lokal Composer dan beralih antar-image. Pendekatan ini berbeda dengan mengupgrade lingkungan Managed Airflow Anda, karena parameter konfigurasi lingkungan Airflow lokal Anda diterapkan saat dimulai.
Misalnya, setelah versi Managed Airflow baru dirilis, Anda dapat mengalihkan lingkungan untuk menggunakannya, dan mempertahankan konfigurasi lingkungan Airflow lokal yang ada. Sebagai contoh lain, Anda dapat beralih antara berbagai versi Airflow dalam versi Managed Airflow tertentu.
Untuk mengubah image lingkungan yang digunakan oleh lingkungan Airflow lokal Anda:
Edit file konfigurasi lingkungan lokal:
./composer/<local_environment_name>/config.json.Ubah nilai parameter
composer_image_version. Untuk melihat nilai yang tersedia, Anda dapat mencantumkan image yang tersedia.Untuk menerapkan perubahan, mulai ulang lingkungan Airflow lokal Anda.
Menghapus lingkungan Airflow lokal
Perhatian: Pastikan Anda menyimpan semua data yang diperlukan dari lingkungan, seperti log dan konfigurasi.
Untuk menghapus lingkungan Airflow lokal, jalankan perintah berikut:
composer-dev remove LOCAL_ENVIRONMENT_NAME
Jika lingkungan sedang berjalan, tambahkan tanda --force untuk menghapusnya secara paksa.
Menghapus image Docker
Untuk menghapus semua image yang didownload oleh alat Composer Local Development CLI, jalankan:
docker rmi $(docker images --filter=reference='*/cloud-airflow-releaser/*/*' -q)
Konfigurasi dan pemecahan masalah tambahan
Bagian ini memberikan solusi untuk masalah umum dan langkah-langkah konfigurasi tambahan untuk mengonfigurasi interaksi alat CLI Pengembangan Lokal Composer dengan alat dan layanan lainnya.
Pelengkapan tab shell
CLI composer-dev mendukung penyelesaian tab untuk shell Bash, Zsh, dan Fish.
Anda dapat menggunakan penyelesaian tab untuk menemukan subperintah dan opsi yang tersedia tanpa
melihat teks bantuan.
Zsh
Buat skrip penyelesaian dan sumbernya di ~/.zshrc Anda:
_COMPOSER_DEV_COMPLETE=zsh_source composer-dev > ~/.composer-dev-complete.zsh
Kemudian, tambahkan ke ~/.zshrc Anda:
echo 'source ~/.composer-dev-complete.zsh' >> ~/.zshrc
Bash
Buat skrip penyelesaian dan sumbernya di ~/.bashrc Anda:
_COMPOSER_DEV_COMPLETE=bash_source composer-dev > ~/.composer-dev-complete.bash
Kemudian, tambahkan ke ~/.bashrc Anda:
echo 'source ~/.composer-dev-complete.bash' >> ~/.bashrc
Ikan
Buat skrip penyelesaian dan simpan ke direktori penyelesaian Fish:
_COMPOSER_DEV_COMPLETE=fish_source composer-dev > ~/.config/fish/completions/composer-dev.fish
Berinteraksi dengan cluster Kubernetes
Secara default, file ~/.kube/config tidak di-mount. Anda dapat menentukan jalur
ke file konfigurasi Kubernetes dengan mengekspor variabel lingkungan KUBECONFIG
sebelum memulai lingkungan.
export KUBECONFIG=~/.kube/config
Berinteraksi dengan layanan lain di komputer host
localhost di lingkungan Managed Airflow mengarah ke container itu sendiri, bukan mesin host karena cara kerja jaringan di container Docker atau Podman. Untuk mempermudah, alat CLI composer-dev
mengonfigurasi jaringan penampung untuk mengakses mesin melalui alias domain
host.docker.internal. Contoh:
- Redis:
Gunakan
host.docker.internal:6379, bukanlocalhost:6379, jikaRedisberjalan di port6379. - PostgreSQL:
Gunakan
host.docker.internal:25432, bukanlocalhost:25432jikaPostgreSQLberjalan di port25432. - Layanan lainnya:
Ikuti pola ini:
host.docker.internal:<PORT>
Tidak dapat memulai lingkungan lokal di macOS
Jika Anda menginstal paket composer-dev ke direktori yang tidak dapat diakses oleh Docker, lingkungan lokal Anda mungkin tidak dimulai.
Misalnya, jika Python diinstal di direktori /opt, seperti saat Anda
menginstalnya dengan konfigurasi Homebrew default di macOS, maka paket
composer-dev juga diinstal di direktori /opt. Karena
Docker mematuhi aturan sandbox Apple, direktori /opt tidak
tersedia secara default. Selain itu, Anda tidak dapat menambahkannya melalui UI (Setelan
> Resource > File sharing).
Dalam hal ini, alat Composer Local Development CLI akan menghasilkan pesan error yang mirip dengan contoh berikut:
Failed to create container with an error: 400 Client Error for ...
Bad Request ("invalid mount config for type "bind": bind source path does not exist:
/opt/homebrew/lib/python3.9/site-packages/composer_local_dev/docker_files/entrypoint.sh
Possible reason is that composer-dev was installed in the path that is
not available to Docker. See...")
Anda dapat menggunakan salah satu solusi berikut:
- Instal Python atau paket
composer-devke direktori lain, sehingga Docker dapat mengakses paket. - Edit file
~/Library/Group\ Containers/group.com.docker/settings.jsonsecara manual dan tambahkan/optkefilesharingDirectories.
Akses pengguna penampung ke file dan direktori yang di-mount dari host
Secara default, container lingkungan Managed Airflow berjalan sebagai pengguna
airflow dengan UID 999. Pengguna harus memiliki akses ke file dan
direktori yang di-mount dari host, misalnya
~/.config/gcloud/application_default_credentials.json.
Masalah umum:
google.auth.exceptions.DefaultCredentialsError: Your default credentials were not found: dapat dihasilkan saat menjalankan penampung dengan pengguna defaultairflow (999)dan direktori host~/.config/gcloud/tidak memiliki izin eksekusi untuk pengguna.[Errno 13] Permission denied: '/home/airflow/.config/gcloud/application_default_credentials.json': dapat dihasilkan saat Anda menjalankan container dengan pengguna defaultairflow (999)dan file host~/.config/gcloud/application_default_credentials.jsontidak memiliki izin baca untuk pengguna.
Di Linux atau macOS, sebaiknya jalankan container sebagai pengguna host saat ini dengan menambahkan
COMPOSER_CONTAINER_RUN_AS_HOST_USER=True ke
composer/<LOCAL_ENVIRONMENT_NAME>/variables.env.Fitur ini tidak
tersedia di Windows, jadi Anda mungkin perlu memperbarui izin file dan direktori yang di-mount di host untuk mengizinkan akses oleh pengguna di dalam
container.
(Podman) Memperbaiki error izin atau lchown untuk pengguna perusahaan
Untuk mencegah Podman tanpa root mengalokasikan namespace pengguna secara otomatis yang tumpang-tindih dengan ID pengguna perusahaan utama Anda (sehingga menyebabkan lchown: invalid argument atau kesalahan izin), Anda harus mendorong rentang bawahan secara manual di atas blok 4 juta.
Buka
/etc/subuiddan/etc/subgiddengan hak istimewa root (misalnya:sudo nano /etc/subuid).Perbarui atau tambahkan entri nama pengguna Anda agar terlihat persis seperti ini:
YOUR_USERNAME:4000000:3000000Simpan kedua file dan jalankan perintah berikut untuk menerapkan aturan pemetaan namespace baru ke Podman:
podman system migrate
(Podman) Menghapus file yang macet dan error izin ditolak
Jika Anda memperbarui rentang subuid saat container lama ada, namespace saat ini akan diblokir untuk mengakses cache datanya sendiri.
Hapus paksa grafik penyimpanan lokal menggunakan hak istimewa root tingkat host:
podman rm -fa
podman volume rm --all --force
podman system migrate
(Podman) Memperbaiki Kegagalan DNS ("Name or service not known")
Jika container Airflow Anda menghasilkan psycopg2.OperationalError yang menyatakan bahwa container tersebut
tidak dapat menerjemahkan atau menyelesaikan nama host untuk container database
(your-environment-name), berarti jaringan bridge virtual internal Podman tidak
tersinkron.
Hapus status runtime dan paksa netavark dan aardvark-dns untuk membuat ulang tabel perutean yang bersih.
podman rm -fa
podman network prune --force
rm -rf /run/user/$UID/containers/*
rm -rf /run/user/$UID/netavark/*
rm -rf COMPOSER_LOCAL_DEV_PATH/composer/*
podman system migrate
(Podman) Memverifikasi status mesin Anda
Untuk memverifikasi bahwa Podman mengelola alur kerja tanpa root dan tidak melewati konfigurasi Anda ke Docker sistem:
Verifikasi backend DNS jaringan:
podman info | grep -A 3 -i "dns"Output harus berisi
backend: netavarkdan jalur yang dapat dieksekusi yang valid keaardvark-dns.Verifikasi pemetaan kepemilikan proses. Dengan lingkungan Anda berjalan, periksa pemilik proses host:
ps -ef | grep -i "postgres"Kolom paling kiri akan menampilkan nomor UID tinggi (seperti
4000069) yang sesuai dengan rentang peta subuid Anda, yang membuktikan bahwa peta tersebut berjalan sepenuhnya tanpa root.
(Podman, Windows) Memperbaiki error saluran selama deployment
Jika database atau penampung Airflow langsung keluar dengan error saluran selama
deployment, Podman mungkin mencapai batas memori. Untuk memperbaikinya, Anda dapat mencoba
meningkatkan batas memori dan swap di file .wslconfig:
Hentikan mesin Podman dan virtual machine WSL 2 dengan menjalankan perintah berikut di PowerShell:
podman machine stop wsl --shutdownBuat perubahan pada file
%USERPROFILE%\.wslconfiguntuk menyesuaikan batas swap dan memori. Sebagai referensi, lihat Referensi konfigurasi WSL.Mulai mesin Podman Anda dengan menjalankan:
podman machine start
Jika Anda mengalami error, Anda dapat mencoba mereset paksa stack jaringan dan virtualisasi Windows. Untuk melakukannya, buka PowerShell sebagai Administrator dan jalankan:
Restart-Service -Name vmms -Force
Restart-Service -Name hns -Force
wsl --shutdown