Container di Compute Engine


Container software adalah cara yang mudah untuk menjalankan aplikasi Anda di beberapa instance ruang pengguna yang terisolasi. Anda dapat menjalankan container di image VM publik Linux atau Windows Server, atau pada image Container-Optimized OS. Container memungkinkan aplikasi Anda berjalan dengan lebih sedikit dependensi di virtual machine (VM) host dan berjalan secara terpisah dari aplikasi dalam container lainnya yang Anda deploy ke instance VM yang sama. Karakteristik ini membuat aplikasi dalam container lebih portabel, lebih mudah di-deploy, dan lebih mudah dikelola dalam skala besar.

Dokumen ini menjelaskan beberapa teknologi container yang lebih umum yang dapat Anda gunakan untuk menjalankan container pada instance Compute Engine. Anda dapat menggunakan teknologi ini pada sebagian besar image VM publik yang disediakan Compute Engine.

Jalankan container di Compute Engine saat Anda memerlukan kontrol penuh atas lingkungan container dan alat orkestrasi container Anda.

Atau, Anda dapat menggunakan Google Kubernetes Engine (GKE) untuk menyederhanakan tugas pengelolaan cluster dan orkestrasi container sehingga Anda tidak perlu mengelola instance VM yang mendasarinya. GKE menyediakan lingkungan terkelola untuk men-deploy, mengelola, dan menskalakan aplikasi dalam container menggunakan infrastruktur Google.

Lingkungan GKE terdiri dari beberapa mesin, (khususnya, instance Compute Engine) yang dikelompokkan bersama untuk membentuk cluster. Saat menjalankan cluster GKE, Anda akan mendapatkan manfaat dari fitur pengelolaan cluster lanjutan seperti load balancing, kumpulan node, perbaikan otomatis node, penskalaan dan upgrade otomatis, serta logging dan pemantauan yang disediakan oleh Google Cloud.

Pelajari cara membuat cluster GKE dengan node pool yang menjalankan Microsoft Windows Server.

Cobalah sendiri

Jika Anda baru pertama kali menggunakan Google Cloud, buat akun untuk mengevaluasi performa Compute Engine dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba Compute Engine gratis

Teknologi container yang berjalan di Compute Engine

Secara umum, instance Compute Engine dapat menjalankan hampir semua teknologi atau alat container. Anda dapat menjalankan beberapa jenis container pada sistem operasi Linux modern. Anda juga dapat menjalankan Docker di Windows Server 2016 atau yang lebih baru. Daftar berikut mencakup beberapa alat umum yang dapat Anda gunakan untuk menjalankan dan mengelola aplikasi dalam container:

  • Docker dan Podman adalah dua teknologi container populer yang memungkinkan Anda menjalankan aplikasi dalam container.
  • Kubernetes adalah platform orkestrasi container yang dapat Anda gunakan untuk mengelola dan menskalakan container yang berjalan di beberapa instance atau dalam lingkungan hybrid cloud.
  • Container di Compute Engine memberikan cara mudah untuk men-deploy container ke instance VM Compute Engine atau grup instance terkelola.
  • Anda dapat mengonversi sistem yang ada menjadi image LXD dan menjalankannya dalam instance VM Compute Engine untuk solusi migrasi lift-and-shift. LXD berjalan pada image Ubuntu.

Selain itu, Anda dapat menggunakan Artifact Registry untuk mengelola versi image container. Artifact Registry berfungsi sebagai lokasi pusat untuk menyimpan dan mengelola image container Anda sebelum men-deploy image tersebut ke Kubernetes di Compute Engine atau ke cluster Google Kubernetes Engine.

Image VM yang dioptimalkan container

Compute Engine menyediakan beberapa image VM publik yang dapat Anda gunakan untuk membuat instance dan menjalankan workload container. Beberapa image VM publik ini memiliki sistem operasi minimalis yang dioptimalkan untuk container dan menyertakan versi terbaru Docker, Podman, atau Kubernetes. Kelompok image publik berikut dirancang khusus untuk menjalankan container:

  • Container-Optimized OS dari Google
    • Mencakup: Docker, Kubernetes
    • Project image: cos-cloud
    • Kelompok image: cos-stable
  • Fedora CoreOS
    • Termasuk: Podman, Docker
    • Project image: fedora-coreos-cloud
    • Kelompok image: fedora-coreos-stable
  • Ubuntu
    • Termasuk: LXD
    • Project image: ubuntu-os-cloud
    • Kelompok image: ubuntu-2004-lts

Jika Anda perlu menjalankan alat dan teknologi container tertentu pada image yang tidak menyertakannya secara default, instal teknologi tersebut secara manual.

Menginstal teknologi container di instance Anda

Untuk meluncurkan satu container pada instance, Anda dapat menentukan image container saat membuat instance. Compute Engine secara otomatis menyediakan image Container-Optimized OS terbaru dengan Docker yang terinstal dan meluncurkan container Anda saat VM dimulai. Untuk informasi selengkapnya, lihat Men-deploy container pada VM .

Atau, Anda dapat menjalankan workload container di Compute Engine menggunakan teknologi container dan alat orkestrasi apa pun yang Anda butuhkan. Anda dapat membuat instance dari image VM publik, lalu menginstal teknologi container yang Anda inginkan. Contoh:

Dalam beberapa situasi, Anda mungkin memerlukan versi tertentu dari teknologi ini untuk memastikan bahwa teknologi tersebut beroperasi bersama dengan benar. Misalnya, Kubernetes biasanya berjalan paling baik dengan versi Docker tertentu. Biasanya, Anda dapat menginstal versi terbaru teknologi ini untuk mendapatkan hasil terbaik.

Menginstal Docker pada image Windows Server

Windows Server 2016 dan versi yang lebih baru menyertakan dukungan container. Jika berencana untuk menjalankan container Docker di instance Windows Server, Anda dapat menginstal Docker pada image dasar Windows Server atau menggunakan image marketplace dari Mirantis.

Jika Anda ingin menginstal Docker CE pada image dasar Windows Server, ikuti langkah-langkah yang diuraikan di bawah ini.

Mulailah dengan membuat instance Windows Server menggunakan image publik Windows Server 2019 atau yang lebih baru. Untuk dukungan container terbaik, sebaiknya gunakan Windows Server versi LTSC terbaru. Untuk mengetahui informasi selengkapnya tentang LTSC, lihat saluran layanan Windows Server.

Menginstal Docker

Instal Docker di Windows. Untuk mengetahui informasi selengkapnya, lihat Mempersiapkan Windows untuk container. Mulai ulang instance setelah penginstalan selesai.

Langkah penyiapan tambahan

Pada tahap ini, Anda dapat menggunakan Docker untuk menjalankan container dalam instance. Misalnya, perintah berikut mendownload image container nanoserver Windows dan menjalankan command prompt di dalam container nanoserver:

PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe

MTU jaringan default Docker adalah 1.500 byte. Jika Anda juga telah mengonfigurasi MTU jaringan VPC hingga 1.500 byte, Anda dapat mengabaikan sisa bagian ini. Namun, jika menggunakan MTU VPC default sebesar 1.460 byte di jaringan Anda, Anda harus melakukan beberapa konfigurasi tambahan pada setiap instance.

Tetapkan MTU untuk semua antarmuka jaringan (baik Ethernet dan vEthernet) ke 1460 dengan menjalankan perintah berikut di terminal PowerShell pada setiap instance:

PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
  & netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
PS C:\> netsh interface ipv4 show subinterfaces
   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
4294967295            1          0          0  Loopback Pseudo-Interface 1
  1460                1     306804     668688  Ethernet
  1460                1          0       1282  vEthernet (nat)

Bahkan setelah mengubah MTU instance, konektivitas dari container ke internet mungkin tidak stabil karena secara default, antarmuka jaringan container juga menggunakan MTU 1500. Untuk mengetahui perintah dalam menetapkan MTU dengan benar bagi setiap container, lihat bagian MTU container.

Anda mungkin perlu menjalankan kembali perintah MTU ini secara berkala saat mengonfigurasi jaringan Docker. Untuk mengetahui detail selengkapnya, lihat bagian masalah umum.

Menjalankan container Windows

Ada banyak resource yang tersedia untuk memulai container Windows:

  • Microsoft menyediakan dokumentasi container Windows yang lengkap.
  • Docker Hub dapat digunakan sebagai repositori untuk menyimpan dan menarik container Windows.

Masalah umum pada container Windows

Penghentian penggunaan Windows Server 2019 untuk image Containers

Google menawarkan kelompok image Windows Server dengan Mirantis Container Runtime (sebelumnya Docker EE) yang telah terinstal:

  • Windows
    • Termasuk: Docker
    • Project image: windows-cloud
    • Kelompok image: windows-2019-core-for-containers

Pada awal 2023, Microsoft berhenti mendistribusikan dan mendukung Mirantis Container Runtime untuk Windows Server. Meskipun Google dapat terus memublikasikan kelompok gambar ini hingga 30 Oktober 2023, kelompok gambar tersebut kini tidak digunakan lagi, dan semua gambar dalam kelompok gambar tersebut telah ditandai sebagai usang.

Virtual machine berdasarkan image ini yang dibuat sebelum 30 Oktober 2023 akan terus berjalan tanpa gangguan. Namun, pembuatan instance untuk instance baru berdasarkan gambar ini akan gagal setelah tanggal tersebut.

Gambar kustom yang berasal dari gambar ini sebelum 30 Oktober 2023 akan terus berfungsi. Namun, image kustom tidak akan otomatis menerima update Patch Selasa Windows, dan juga tidak akan menerima versi terbaru dari Runtime Container Mirantis.

Jika Anda ingin terus menggunakan image dengan Mirantis Container Runtime yang telah diinstal sebelumnya, Mirantis Inc menawarkan image di Google Cloud Marketplace. Biaya image VM ini mencakup dukungan dan pemberian lisensi untuk Mirantis Container Runtime langsung dari Mirantis. Pelanggan yang tertarik untuk menggunakan Mirantis Container Runtime mandiri juga dapat mendownloadnya langsung dari situs Mirantis.

Jika Anda ingin bermigrasi ke runtime container alternatif seperti Docker CE, ikuti petunjuk di atas.

Container tidak kompatibel dengan seluruh versi Windows

Container yang di-build pada Windows versi sebelumnya tidak berfungsi di instance Compute Engine yang menjalankan versi Windows yang lebih baru. Docker menarik container versi Windows Server 2019 secara default. Artinya, menjalankan perintah berikut di instance yang menjalankan Windows Server versi 1709 atau yang lebih baru akan menghasilkan error:

PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver cmd.exe
docker: Error response from daemon: container
9a1eb8bbcba4e91792be65f3c40b5a1aee062f02fbc60a78444b47d043438069 encountered an
error during CreateContainer: failure in a Windows system call: The operating
system of the container does not match the operating system of the host.
(0xc0370101)

Halaman Kompatibilitas versi container Windows milik Microsoft berisi informasi selengkapnya. Untuk mengatasi inkompatibilitas versi container Windows, tentukan tag yang sesuai dengan versi Windows Anda saat menarik dan menjalankan container. Misalnya, di Windows Server, instance versi 20H2, gunakan perintah berikut untuk menjalankan command prompt di container nanoserver versi 20H2, bukan container default LTSC (1809) 2019:

PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe

Inkompatibilitas MTU memengaruhi konektivitas instance dan container

Saat Anda membuat jaringan container pada instance Windows menggunakan perintah docker network create atau New-VMSwitch, MTU antarmuka jaringan instance biasanya dipaksa untuk 1500. Antarmuka jaringan default di dalam container Docker baru biasanya juga menggunakan MTU 1500. Jika jaringan VPC Anda memiliki MTU 1460, Anda mungkin mengalami masalah berikut:

  • Sesi RDP dapat berhenti dan Anda mungkin tidak dapat menghubungkan kembali. Hal ini umum terjadi saat membuat jaringan container transparan.

  • Resolusi DNS di dalam container mungkin gagal.

  • Resolusi DNS berhasil, tetapi pembuatan koneksi HTTP dari container ke internet mungkin akan gagal.

Solusi yang direkomendasikan untuk batasan ini memerlukan dua langkah: menetapkan MTU untuk antarmuka jaringan instance ke 1460 dan menetapkan MTU untuk antarmuka jaringan container ke 1460. Atau, Anda dapat menetapkan MTU untuk VPC ke 1500, tetapi hal ini mengharuskan Anda menghentikan atau memigrasikan semua VM.

1. Menyetel MTU untuk antarmuka jaringan instance Windows

Jalankan perintah berikut di terminal PowerShell pada instance Windows guna menetapkan MTU untuk semua antarmuka jaringan (Ethernet dan vEthernet):

PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
  & netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}

Pastikan MTU Ethernet dan antarmuka vEthernet instance disetel ke 1460 menggunakan perintah ini:

PS C:\> netsh interface ipv4 show subinterfaces
   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
4294967295            1          0          0  Loopback Pseudo-Interface 1
  1460                1  628295912    2613170  Ethernet
  1460                1      37793     223909  vEthernet (nat)

Jika tidak dapat menjalankan perintah ini karena tidak dapat lagi terhubung ke instance menggunakan RDP, Anda dapat terhubung ke instance melalui konsol serial, mulai prompt cmd dan jalankan perintah netsh di sana untuk memperbaiki MTU. Agar tidak perlu melakukannya, sebaiknya jalankan perintah docker network ... atau New-VMSwitch sebagai bagian dari skrip yang juga menjalankan perintah perbaikan MTU.

2. Menyetel MTU untuk antarmuka jaringan container Windows

MTU untuk container Windows harus ditetapkan saat container sedang berjalan, baik dari dalam container maupun dari instance yang menghosting container. Jika PowerShell tersedia di container, Anda dapat menjalankan perintah ini secara interaktif atau dari skrip dalam container untuk menetapkan MTU dengan benar:

PS C:\> Get-NetAdapter | Where-Object Name -like "vEthernet*" | ForEach-Object {
  & netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}

Atau, Anda dapat menjalankan perintah ini pada instance Windows untuk menetapkan MTU bagi semua container yang berjalan:

PS C:\> Get-NetIPInterface -IncludeAllCompartments |
  Where-Object InterfaceAlias -like "vEthernet*" |
  Set-NetIPInterface -IncludeAllCompartments -NlMtuBytes 1460

Container Hyper-V gagal dimulai

Container Hyper-V saat ini tidak didukung di Compute Engine.

Langkah selanjutnya