Image node


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): Image cos_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): Image cos 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): Image ubuntu_containerd menggunakan containerd sebagai runtime container. Untuk mengetahui informasi selengkapnya, silakan melihat Image node containerd.

  • Ubuntu dengan Docker (ubuntu): Image ubuntu 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): Image windows_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 flag windows-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): Image windows_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): Image windows_ltsc menggunakan Docker sebagai runtime container.
    • SAC Windows Server dengan Docker (windows_sac): Image windows_sac menggunakan Docker sebagai runtime container.

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
/
  • hanya baca
  • dapat dieksekusi
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
  • dapat ditulis
  • tidak dapat dieksekusi
  • stateful
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
  • dapat ditulis
  • dapat dieksekusi
  • stateful
Jalur ini merupakan direktori kerja untuk paket Compute Engine (misalnya, layanan pengelola akun), Docker, dan Toolbox.
/var/lib/cloud
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
Jalur ini adalah direktori kerja paket cloud-init.
/etc
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
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
  • dapat ditulis
  • tidak dapat dieksekusi
  • stateless
  • tmpfs
Biasanya digunakan sebagai kapasitas sementara dan tidak boleh digunakan untuk menyimpan data persisten.
/mnt/disks
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
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.

Langkah selanjutnya