Halaman ini menjelaskan image node yang tersedia untuk node Google Kubernetes Engine (GKE).
Node Autopilot GKE selalu menggunakan
Container-Optimized OS dengan containerd (cos_containerd
), yang merupakan
sistem operasi node yang direkomendasikan. Jika menggunakan GKE Standard, Anda dapat memilih image sistem operasi yang berjalan pada setiap node selama pembuatan cluster atau node pool. Anda juga dapat mengupgrade cluster Standard yang sudah ada agar menggunakan image node yang berbeda. Untuk
mengetahui petunjuk cara menetapkan image node, silakan melihat
Menentukan image node.
Image node yang tersedia
GKE menawarkan opsi image node berikut per OS untuk cluster Anda:
OS | Image node |
---|---|
Container-Optimized OS |
|
Ubuntu |
|
Windows Server |
|
Container-Optimized OS
Image node Container-Optimized OS dari Google didasarkan pada versi terbaru dari kernel Linux dan dioptimalkan untuk meningkatkan keamanan node. Image Container-Optimized OS didukung oleh tim di Google yang dapat dengan cepat mem-patch image untuk keamanan dan melakukan iterasi fitur. Image Container-Optimized OS memberikan dukungan, keamanan, dan stabilitas yang lebih baik daripada image lainnya.
Untuk mengetahui informasi tentang project dan kelompok image, lihat Project sumber image node.
Varian Container-Optimized OS
Dua runtime container ditawarkan dengan Container-Optimized OS. Image-nya sama, perbedaannya hanyalah pada pilihan runtime container.
- Container-Optimized OS dengan containerd (
cos_containerd
): Imagecos_containerd
menggunakan containerd sebagai runtime container yang terintegrasi langsung dengan Kubernetes. Cluster GKE Autopilot selalu menggunakan image ini. Untuk mengetahui informasi selengkapnya, silakan melihat Image node containerd. - Container-Optimized OS dengan Docker (
cos
): Imagecos
menggunakan runtime container Docker.
Ubuntu
Image node Ubuntu telah divalidasi berdasarkan persyaratan image node GKE. Anda harus menggunakan image node Ubuntu jika node memerlukan dukungan untuk paket XFS, CephFS, atau Debian.
Untuk mengetahui informasi tentang kelompok dan project image, silakan melihat Dukungan fitur berdasarkan sistem operasi.
Varian Ubuntu
Dua runtime container ditawarkan dengan Ubuntu. Image-nya sama, perbedaannya hanyalah pada pilihan runtime container.
Ubuntu dengan containerd (
ubuntu_containerd
): Imageubuntu_containerd
menggunakan containerd sebagai runtime container. Untuk mengetahui informasi selengkapnya, silakan melihat Image node containerd.Ubuntu dengan Docker (
ubuntu
): Imageubuntu
menggunakan Docker sebagai runtime container.
Windows Server
Saat membuat cluster menggunakan node pool Windows Server, Anda dapat menggunakan image node Semi-Year Channel (SAC) Windows Server atau Long-Term Servicing Channel (LTSC) Windows Server. Semua image node Windows adalah image Windows Server Datacenter Core. Satu cluster dapat memiliki beberapa node pool Windows Server menggunakan versi Windows Server yang berbeda, tetapi setiap node pool hanya dapat menggunakan satu versi Windows Server. Untuk mengetahui informasi selengkapnya, silakan melihat Memilih image node Windows.
Dua runtime container ditawarkan dengan image node LTSC dan SAC Windows Server: Docker dan containerd. Image-nya sama, perbedaannya hanyalah pada pilihan runtime container.
Image runtime containerd (tersedia di GKE versi 1.21 dan yang lebih baru):
LTSC Windows Server dengan containerd (
windows_ltsc_containerd
): Imagewindows_ltsc_containerd
menggunakan containerd sebagai runtime container. Saat ini, jenis image ini dipetakan ke dua image node: Windows Server 2022 dan Windows Server 2019. Anda dapat membuat node pool LTSC2022 Windows melalui perintah CLI dengan flagwindows-os-version
.Untuk mengetahui informasi selengkapnya tentang membuat node pool Windows Server 2022, silakan melihat Membuat Node Pool Windows
Untuk mengetahui informasi selengkapnya tentang image node containerd, silakan melihat Image node containerd.
SAC Windows Server dengan containerd (
windows_sac_containerd
): Imagewindows_sac_containerd
menggunakan containerd sebagai runtime container.Untuk mengetahui informasi selengkapnya, silakan melihat Image node containerd.
Image runtime Docker (tersedia di GKE versi 1.16 dan yang lebih baru):
- LTSC Windows Server dengan Docker (
windows_ltsc
): Imagewindows_ltsc
menggunakan Docker sebagai runtime container. - SAC Windows Server dengan Docker (
windows_sac
): Imagewindows_sac
menggunakan Docker sebagai runtime container.
- LTSC Windows Server dengan Docker (
Untuk mengetahui informasi tentang kelompok dan project image, silakan melihat Dukungan fitur berdasarkan sistem operasi.
Perbandingan image node Linux
Bagian berikut membandingkan aspek operasional image node Container-Optimized OS dan Ubuntu, termasuk:
- Pengelolaan paket software
- Inisialisasi sistem
- Pengumpulan log
- Tata letak sistem file
- Dukungan driver penyimpanan
Pengelola paket software
Image node cos
dan cos_containerd
menggunakan sistem file root minimal dengan dukungan bawaan untuk
runtime container Docker (containerd), yang juga berfungsi sebagai pengelola paket software
untuk menginstal software di host. Image Ubuntu menggunakan
pengelola paket APT.
Mengelola software di Container-Optimized OS
Image Container-Optimized OS tidak menyediakan software pengelolaan paket
seperti apt-get
. Anda tidak dapat menginstal software secara arbitrer ke node menggunakan
mekanisme konvensional. Sebagai gantinya, buat image container yang berisi
software yang Anda perlukan.
Pada cluster Standard,
Container-Optimized OS menyertakan
Toolbox CoreOS untuk menginstal
dan menjalankan alat proses debug umum seperti ping
, psmisc
, atau pstree
, yang hanya digunakan untuk tujuan proses debug.
Untuk mengetahui informasi selengkapnya tentang proses debug node Container-Optimized OS, silakan melihat
Panduan cara kerja Container-Optimized OS.
Mengelola software di Ubuntu
Image Ubuntu menggunakan pengelola paket APT. Anda dapat menggunakan perintah apt-get
untuk menginstal paket pada image ini. Misalnya, untuk menginstal paket
ceph
:
sudo apt-get update
sudo apt-get install ceph
Inisialisasi sistem
Image node Container-Optimized OS dan Ubuntu menggunakan systemd
untuk mengelola
resource dan layanan sistem selama proses inisialisasi sistem.
Kedua image node tersebut menggunakan
file layanan systemd
untuk menentukan services
pada node, dan
systemd.targets
untuk mengelompokkan target booting melalui dependensi.
Pengumpulan log
Image node Container-Optimized OS dan Ubuntu menggunakan systemd-journald
untuk mengumpulkan log seluruh sistem.
Melihat log di Container-Optimized OS dan Ubuntu
Untuk melihat log di node dengan image node Container-Optimized OS atau Ubuntu, Anda
harus menggunakan perintah
journalctl
. Misalnya, untuk melihat log daemon containerd:
sudo journalctl -u containerd
Untuk melihat log kubelet:
sudo journalctl -u kubelet
Tata letak sistem file
Image node Ubuntu menggunakan tata letak sistem file Linux standar.
Tata letak sistem file image node Container-Optimized OS dioptimalkan untuk meningkatkan keamanan node. Kapasitas boot disk dibagi menjadi tiga jenis partisi:
- Partisi root, yang dipasang sebagai hanya baca
- Partisi stateful, yang dapat ditulis dan stateful
- Partisi stateless, yang dapat ditulis tetapi kontennya tidak akan dipertahankan setiap kali ada peristiwa mulai ulang
Saat menggunakan Container-Optimized OS, perhatikan partisi jika Anda menjalankan layanan sendiri yang memiliki ekspektasi tertentu tentang tata letak sistem file di luar container.
Menggunakan sistem file Container-Optimized OS
Berikut adalah daftar jalur dalam sistem file image node Container-Optimized OS, beserta properti dan penggunaan yang direkomendasikan:
Jalur | Properti | Tujuan |
---|---|---|
/ |
|
Sistem file root dipasang sebagai hanya baca untuk menjaga integritas. Kernel memverifikasi integritas sistem file root selama booting, dan akan menolak booting jika terjadi error. |
/home /var |
|
Jalur ini dimaksudkan untuk menyimpan data yang akan dipertahankan selama boot disk masih digunakan. File tersebut dipasang dari /mnt/stateful_partition . |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
Jalur ini merupakan direktori kerja untuk paket Compute Engine (misalnya, layanan pengelola akun), Docker, dan Toolbox. |
/var/lib/cloud |
|
Jalur ini adalah direktori kerja paket cloud-init . |
/etc |
|
Biasanya menyimpan konfigurasi Anda (misalnya, layanan systemd yang ditentukan melalui cloud-init ). Sebaiknya tangkap status instance yang diinginkan dari instance Anda di cloud-init , karena cloud-init diterapkan saat instance baru dibuat serta saat instance dimulai ulang. |
/tmp |
|
Biasanya digunakan sebagai kapasitas sementara dan tidak boleh digunakan untuk menyimpan data persisten. |
/mnt/disks |
|
Anda dapat memasang persistent disk di direktori pada /mnt/disks . |
Dukungan driver penyimpanan
Perbedaan dari setiap image node terletak pada jenis plugin penyimpanan yang didukungnya. Istilah berikut berlaku saat menjelaskan dukungan image node untuk driver penyimpanan tertentu:
- Ya - Sepenuhnya Diuji/Didukung: Plugin penyimpanan ini sepenuhnya didukung dan diuji dengan image node yang ditentukan.
- Ya - Pengujian Terbatas: Plugin penyimpanan ini berfungsi dengan image node yang ditentukan, tetapi hanya diuji secara terbatas; Anda mungkin mendapati perilaku yang tidak diharapkan. Untuk Container-Optimized OS, plugin ini pada akhirnya akan sepenuhnya didukung dan diuji.
- Tidak didukung: Plugin penyimpanan ini belum diuji atau digunakan dengan image node yang ditentukan dan GKE tidak dapat memberikan jaminan fungsi apa pun. Tidak ada rencana untuk menguji plugin penyimpanan ini.
- Tidak: Plugin penyimpanan ini tidak berfungsi dengan image node yang ditentukan karena batasan yang melekat pada OS node atau Google Cloud.
Matriks berikut menjelaskan cara setiap image node GKE mendukung beberapa plugin penyimpanan umum.
Jenis Volume | Apakah ini berfungsi di Container-Optimized OS (cos )? |
Apakah berfungsi di Ubuntu? |
---|---|---|
Compute Engine Persistent Disk (EXT4 or XFS) |
Ya - Sepenuhnya Diuji/Didukung (XFS hanya didukung di cos-85 dan yang lebih baru.) Silakan melihat catatan rilis GKE | Ya - Sepenuhnya Diuji/Didukung |
NFSv3 | Ya - Sepenuhnya Diuji/Didukung | Ya - Sepenuhnya Diuji/Didukung |
NFSv4 | Ya - Sepenuhnya Diuji/Didukung | Ya - Sepenuhnya Diuji/Didukung |
CephFS | Tidak | Ya - Pengujian Terbatas (Driver tidak diinstal secara default. Anda harus menginstal klien ceph , sebaiknya melalui DaemonSet .) |
Cinder | Tidak | Tidak |
Fibre Channel | Tidak | Tidak |
Flocker | Tidak Didukung | Tidak Didukung |
iSCSI | Tidak | Tidak |
RBD | Tidak | Tidak |
Perubahan VM node
Modifikasi pada disk booting VM node tidak akan dipertahankan pada seluruh pembuatan ulang node. Node dibuat kembali saat upgrade manual, upgrade otomatis, perbaikan otomatis, dan penskalaan otomatis. Selain itu, node dibuat ulang saat Anda mengaktifkan fitur yang memerlukan pembuatan ulang node, seperti GKE Sandbox, visibilitas intranode, dan node yang terlindungi.
Untuk mempertahankan modifikasi di seluruh pembuatan ulang node, gunakan DaemonSet.
Sebaiknya jangan mengelola software penting yang disediakan oleh image node, seperti
kernel atau runtime container (baik containerd
maupun docker
). Image
node diuji secara ekstensif, dan memodifikasi software penting yang disediakan pada
image node akan menempatkan node ke dalam status yang tidak diketahui dan tidak dapat diuji.
Node Autopilot GKE tidak mengizinkan modifikasi software node.
Memetakan versi image node Container-Optimized OS ke versi patch GKE
GKE memublikasikan pemetaan JSON versi patch GKE ke versi image node Container-Optimized OS:
Anda dapat menggunakan pemetaan ini untuk mengupgrade ke versi GKE tertentu untuk mendapatkan versi image tertentu. Misalnya, jika cluster Anda memerlukan fitur atau perbaikan tertentu dari versi image, Anda dapat menemukan pemetaan, dan mengupgrade cluster ke versi GKE tertentu untuk mendapatkan versi image Container-Optimized OS dengan perubahan tersebut. Untuk mengetahui detail tentang rilis image Container-Optimized OS, lihat catatan rilis Container-Optimized OS.
Daftar ini diperbarui setiap minggu, kira-kira. Untuk melihat keaktualan
informasi, lihat kolom creation_time
dalam file JSON.
Catatan rilis image node
Container-Optimized OS
Google menyediakan dokumentasi yang komprehensif untuk Container-Optimized OS:
Ubuntu
Secara berkala, Google mengupdate image Ubuntu yang tersedia untuk digunakan di Node cluster Anda. Silakan melihat catatan rilis GKE untuk mengetahui informasi tentang update ini, termasuk link ke manifes yang mencantumkan paket yang diinstal secara default.
Masalah umum
Koneksi yang direset secara acak pada node GKE yang menggunakan Container-Optimized OS dengan runtime Docker
Node GKE yang menggunakan Container-Optimized OS dengan Docker (cos
) dapat
mengalami reset koneksi TCP acak saat dua pod di node yang sama
berkomunikasi menggunakan Layanan ClusterIP Kubernetes.
Versi GKE berikut terpengaruh:
- 1.20.5-gke.100 atau yang lebih baru
Untuk mengatasi masalah ini, gunakan salah satu opsi berikut:
Project sumber image node
Image node yang tersedia untuk cluster GKE terdapat dalam project sumber berikut:
- Image Container-Optimized OS:
gke-node-images
- Image Ubuntu:
ubuntu-os-gke-cloud
- Image Windows Server:
gke-windows-node-images
Selain project sumber yang tercantum di atas, GKE juga menggunakan project sumber berikut untuk penggunaan eksklusif oleh tim GKE:
ubuntu-os-gke-cloud-private
(disediakan untuk penggunaan eksklusif tim GKE)ubuntu-os-gke-cloud-devel
(disediakan untuk penggunaan eksklusif tim GKE)
Anda mungkin perlu mengetahui nama project sumber saat menyiapkan cluster yang sangat aman. Project sumber yang tercantum dapat berubah sewaktu-waktu.