Di halaman ini, Anda akan mempelajari cara membuat cluster Google Kubernetes Engine (GKE) dengan node pool yang menjalankan Microsoft Windows Server. Dengan cluster ini, Anda dapat menggunakan container Windows Server. Container Microsoft Hyper-V saat ini tidak didukung. Mirip dengan kontainer Linux, kontainer Windows Server menyediakan proses dan isolasi namespace.
Node Windows Server memerlukan lebih banyak resource daripada node Linux biasa. Node Windows Server memerlukan resource tambahan untuk menjalankan Windows OS dan komponen Windows Server yang tidak dapat berjalan di container. Karena node Windows Server memerlukan lebih banyak resource, resource yang dapat dialokasikan lebih rendah daripada node Linux.
Membuat cluster menggunakan node pool Windows Server
Di bagian ini, Anda akan membuat cluster yang menggunakan container Windows Server.
Untuk membuat cluster ini, Anda harus menyelesaikan tugas berikut:
- Pilih image node Windows Server.
- Memperbarui dan mengonfigurasi
gcloud. - Buat cluster dan node pool.
- Dapatkan kredensial
kubectl. - Tunggu inisialisasi cluster.
Menyiapkan akun layanan IAM untuk GKE
GKE menggunakan akun layanan IAM yang terlampir ke node Anda untuk menjalankan tugas sistem seperti logging dan pemantauan. Setidaknya, akun layanan node ini harus memiliki peran
Kubernetes Engine Default Node Service Account
(roles/container.defaultNodeServiceAccount) di project Anda. Secara default,
GKE menggunakan
akun layanan default Compute Engine,
yang otomatis dibuat di project Anda, sebagai akun layanan node.
Untuk memberikan peran roles/container.defaultNodeServiceAccount ke akun layanan default Compute Engine, selesaikan langkah-langkah berikut:
Konsol
- Buka halaman Selamat Datang:
- Di kolom Project number, klik Copy to clipboard.
- Buka halaman IAM:
- Klik Grant access.
- Di kolom Akun utama baru, tentukan nilai berikut:
GantiPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERdengan nomor project yang Anda salin. - Di menu Select a role, pilih peran Kubernetes Engine Default Node Service Account.
- Klik Simpan.
gcloud
- Temukan Google Cloud nomor project Anda:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Ganti
PROJECT_IDdengan project ID Anda.Outputnya mirip dengan hal berikut ini:
12345678901
- Berikan peran
roles/container.defaultNodeServiceAccountke akun layanan default Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Ganti
PROJECT_NUMBERdengan nomor project dari langkah sebelumnya.
Pilih image node Windows Server Anda
Agar dapat berjalan di GKE, image node container Windows Server harus dibangun di Windows Server versi 2019 (LTSC), atau Windows Server versi 2022 (LTSC). 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.
Pertimbangkan hal berikut saat memilih image node Anda:
- Waktu dukungan:
- Waktu dukungan untuk image node Windows Server bergantung pada
waktu dukungan yang diberikan oleh Microsoft, sebagaimana dijelaskan dalam Kebijakan dukungan untuk image OS.
Anda dapat menemukan tanggal akhir dukungan untuk image node GKE Windows
menggunakan perintah
gcloud container get-server-configseperti yang dijelaskan di bagian Memetakan versi GKE dan Windows.
- Waktu dukungan untuk image node Windows Server bergantung pada
waktu dukungan yang diberikan oleh Microsoft, sebagaimana dijelaskan dalam Kebijakan dukungan untuk image OS.
Anda dapat menemukan tanggal akhir dukungan untuk image node GKE Windows
menggunakan perintah
- Kompatibilitas dan kompleksitas versi:
- Windows Server Core dan Nano Server dapat digunakan sebagai image dasar untuk container Anda.
- Membangun image container Windows Server sebagai image multi-arch yang dapat menargetkan beberapa versi Windows Server dapat membantu Anda mengelola kompleksitas pembuatan versi ini.
Mengupdate dan mengonfigurasi gcloud
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
- Pastikan Anda memiliki izin yang tepat untuk membuat cluster. Minimal, Anda harus menjadi Admin Cluster Kubernetes Engine.
Membuat cluster dan node pool
Untuk menjalankan container Windows Server, cluster Anda harus memiliki setidaknya satu node pool Windows dan satu node pool Linux. Anda tidak dapat membuat cluster hanya menggunakan node pool Windows Server. Node pool Linux diperlukan untuk menjalankan add-on cluster penting.
Karena hal ini sangat penting, sebaiknya aktifkan penskalaan otomatis guna memastikan node pool Linux Anda memiliki kapasitas yang cukup untuk menjalankan add-on cluster.
gcloud
Buat cluster dengan kolom berikut:
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-ip-alias \
--num-nodes=NUMBER_OF_NODES \
--cluster-version=VERSION_NUMBER \
--release-channel CHANNEL
Ganti kode berikut:
CLUSTER_NAME: nama yang dipilih untuk cluster Anda.CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.--enable-ip-aliasmengaktifkan IP alias. IP alias diperlukan untuk node Windows Server. Untuk membaca manfaatnya lebih lanjut, lihat Memahami perutean container native dengan IP Alias.NUMBER_OF_NODES: jumlah node Linux yang Anda buat. Anda harus menyediakan resource komputasi yang memadai untuk menjalankan add-on cluster. Kolom ini bersifat opsional dan jika dihilangkan, nilai default3akan digunakan.VERSION_NUMBER: versi cluster spesifik yang ingin Anda gunakan, yang harus 1.16.8-gke.9 atau yang lebih tinggi. Jika Anda tidak menentukan saluran rilis, GKE mendaftarkan cluster Anda di saluran rilis yang paling siap di mana versi tersebut tersedia.CHANNEL: saluran rilis untuk mendaftarkan cluster, yang dapat berupa salah satu darirapid,regular,stable, atauNone. Secara default, cluster terdaftar di saluran rilisregularkecuali jika setidaknya salah satu dari tanda berikut ditentukan:--cluster-version,--release-channel,--no-enable-autoupgrade, dan--no-enable-autorepair. Anda harus menentukanNonejika memilih versi cluster dan tidak ingin cluster Anda didaftarkan dalam saluran rilis.
Sebaiknya tentukan akun layanan IAM dengan hak istimewa minimal yang dapat digunakan node Anda, bukan akun layanan default Compute Engine. Untuk mempelajari cara membuat akun layanan dengan hak istimewa minimal, lihat Menggunakan akun layanan dengan hak istimewa terendah.
Untuk menentukan akun layanan kustom di gcloud CLI, tambahkan tanda berikut ke perintah Anda:
--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comGanti SERVICE_ACCOUNT_NAME dengan nama akun layanan dengan hak istimewa minimum Anda.
Buat node pool Windows Server dengan kolom berikut:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--image-type=WINDOWS_LTSC_CONTAINERD \
--no-enable-autoupgrade \
--machine-type=MACHINE_TYPE_NAME \
--windows-os-version=WINDOWS_OS_VERSION
Ganti kode berikut:
NODE_POOL_NAME: nama yang Anda pilih untuk node pool Windows Server.CLUSTER_NAME: nama cluster yang Anda buat di atas.CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.--no-enable-autoupgrademenonaktifkan upgrade otomatis node. Tinjau Mengupgrade node pool Windows Server sebelum mengaktifkan.MACHINE_TYPE_NAME: menentukan jenis mesin.n1-standard-2adalah jenis mesin minimum yang direkomendasikan karena node Windows Server memerlukan resource tambahan. Jenis mesinf1-microdang1-smalltidak didukung. Setiap jenis mesin ditagih secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.WINDOWS_OS_VERSION: menentukan versi OS Windows yang akan digunakan untuk jenis imageWINDOWS_LTSC_CONTAINERD. Flag ini bersifat opsional. Jika tidak ditentukan, versi OS default yang digunakan adalah LTSC2019. Tetapkan nilai keltsc2022untuk membuat node pool Windows Server 2022. Setel nilai keltsc2019untuk membuat node pool Windows Server 2019.
Contoh berikut menunjukkan cara membuat node pool Windows Server 2022:
gcloud container node-pools create node_pool_name \
--cluster=cluster_name \
--location=us-central1 \
--image-type=WINDOWS_LTSC_CONTAINERD \
--windows-os-version=ltsc2022
Contoh berikut menunjukkan cara mengupdate node pool Windows yang ada untuk menggunakan image OS Windows Server 2022:
gcloud container node-pools create node_pool_name \
--cluster=cluster_name \
--location=us-central1 \
--windows-os-version=ltsc2022
Konsol
- Di konsol Google Cloud , buka halaman Create a Kubernetes cluster.
- Di bagian Cluster basics, selesaikan langkah-langkah berikut:
- Masukkan Name untuk cluster Anda.
- Untuk Location type, pilih region or zone yang diinginkan untuk cluster Anda.
- Di bagian Control plane Version, pilih Release channel atau pilih untuk menentukan Static version. Versi statis harus 1.16.8-gke.9 atau yang lebih tinggi.
- Dari panel navigasi, di bagian Node Pools, klik default-pool untuk membuat node pool Linux. Saat mengonfigurasi node pool ini, Anda harus menyediakan resource komputasi yang memadai untuk menjalankan add-on cluster. Anda juga harus memiliki kuota resource yang tersedia untuk node dan resource-nya (seperti rute firewall).
- Di bagian atas halaman, klik add_box Add Node Pool untuk membuat node pool Windows Server.
- Di bagian Node pool details, selesaikan tindakan berikut:
- Masukkan Nama untuk node pool.
- Untuk node versi statis, pilih Node version.
- Masukkan Jumlah node yang akan dibuat di node pool.
Dari panel navigasi, di bagian Node Pools, klik Nodes.
Dari menu drop-down Image type, pilih image node berikut:
- Windows Long Term Servicing Channel dengan containerd
Untuk mengetahui informasi selengkapnya, lihat bagian Memilih image node Windows.
Pilih Machine configuration default yang akan digunakan untuk instance.
n1-standard-2adalah ukuran minimum yang direkomendasikan karena node Windows Server memerlukan resource tambahan. Jenis mesinf1-microdang1-smalltidak didukung. Setiap jenis mesin ditagih secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.
Dari panel navigasi, pilih nama node pool Windows Server Anda. Tindakan ini akan mengembalikan Anda ke halaman Detail node pool.
- Di bagian Otomatisasi, hapus centang pada kotak Aktifkan upgrade otomatis node. Tinjau bagian Mengupgrade node pool Windows Server sebelum mengaktifkan upgrade otomatis.
Dari panel navigasi, pada Cluster, pilih Networking.
- Di bagian Advanced networking options, pastikan Enable VPC-native traffic routing (menggunakan IP alias) dipilih. IP alias diperlukan untuk node Windows Server. Untuk membaca manfaatnya lebih lanjut, lihat Memahami perutean container native dengan IP Alias.
Klik Buat.
Terraform
Untuk membuat cluster Standard GKE dan node pool Windows Server menggunakan Terraform, lihat contoh berikut:
Contoh ini menggunakan Windows Server LTSC dengan containerd. Ini adalah jenis image untuk OS image Windows Server 2022 dan Windows Server 2019. Untuk mengetahui informasi selengkapnya tentang image node, lihat Memilih image node Windows.
Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.
Setelah Anda membuat node pool Windows Server, cluster akan beralih ke status RECONCILE
selama beberapa menit saat bidang kontrol diperbarui.
Dapatkan kredensial kubectl
Gunakan perintah get-credentials untuk mengaktifkan kubectl agar berfungsi dengan cluster yang Anda
buat.
gcloud container clusters get-credentials CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION
Untuk mengetahui informasi selengkapnya tentang perintah get-credentials, lihat dokumentasi
get-credentials
SDK.
Tunggu inisialisasi cluster
Sebelum menggunakan cluster, tunggu beberapa detik hingga
windows.config.common-webhooks.networking.gke.io dibuat. Webhook ini menambahkan
toleransi penjadwalan ke Pod yang dibuat dengan pemilih node kubernetes.io/os: windows
untuk memastikan pod diizinkan berjalan di node Windows Server. Tindakan ini juga
memvalidasi Pod untuk memastikan bahwa Pod hanya menggunakan fitur yang didukung di Windows.
Untuk memastikan webhook dibuat, jalankan perintah berikut:
kubectl get mutatingwebhookconfigurations
Output akan menampilkan webhook yang sedang berjalan:
NAME CREATED AT
windows.config.common-webhooks.networking.gke.io 2019-12-12T16:55:47Z
Setelah memiliki cluster dengan dua node pool (satu Linux dan satu Windows), Anda dapat men-deploy aplikasi Windows.
Memetakan versi GKE dan Windows
Microsoft merilis versi LTSC baru setiap dua hingga tiga tahun. Versi baru ini biasanya tersedia di GKE versi minor baru. Dalam versi minor GKE, versi LTSC biasanya tidak berubah.
Untuk melihat pemetaan versi antara versi GKE dan versi Windows Server, gunakan perintah gcloud beta container get-server-config:
gcloud beta container get-server-config
Pemetaan versi ditampilkan di kolom windowsVersionMaps
respons. Untuk memfilter respons agar dapat melihat pemetaan versi untuk
versi GKE tertentu di cluster Anda, lakukan langkah-langkah berikut di
shell Linux atau Cloud Shell.
Tetapkan variabel berikut:
CLUSTER_NAME=CLUSTER_NAME \ NODE_POOL_NAME=NODE_POOL_NAME \ CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATIONGanti kode berikut:
CLUSTER_NAME: nama cluster Anda.NODE_POOL_NAME: nama node pool Windows Server.CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.
Dapatkan versi node pool dan simpan dalam variabel
NODE_POOL_VERSION:NODE_POOL_VERSION=`gcloud container node-pools describe $NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --location=$CONTROL_PLANE_LOCATION \ --format="value(version)"`Dapatkan versi Windows Server untuk
NODE_POOL_VERSION:gcloud beta container get-server-config \ --location=$CONTROL_PLANE_LOCATION \ --format="yaml(windowsVersionMaps.\"$NODE_POOL_VERSION\")"Outputnya mirip dengan hal berikut ini:
windowsVersionMaps: 1.18.6-gke.6601: windowsVersions: - imageType: WINDOWS_SAC osVersion: 10.0.18363.1198 supportEndDate: day: 10 month: 5 year: 2022 - imageType: WINDOWS_LTSC osVersion: 10.0.17763.1577 supportEndDate: day: 9 month: 1 year: 2024Dapatkan versi Windows Server untuk jenis image
WINDOWS_LTSC:gcloud beta container get-server-config \ --flatten=windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions \ --filter="windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions.imageType=WINDOWS_LTSC" \ --format="value(windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions.osVersion)"Outputnya mirip dengan hal berikut ini:
10.0.17763.1577
Mengupgrade node pool Windows Server
Persyaratan kompatibilitas versi container Windows Server berarti bahwa image container Anda mungkin perlu dibangun ulang agar sesuai dengan versi Windows Server untuk versi GKE baru sebelum mengupgrade node pool.
Untuk memastikan bahwa image container Anda tetap kompatibel dengan node, sebaiknya periksa pemetaan versi dan membangun image container Windows Server Anda sebagai image multi-arch yang dapat menargetkan beberapa versi Windows Server. Kemudian, Anda dapat mengupdate deployment container untuk menargetkan image multi-arch yang akan berfungsi pada versi GKE saat ini dan yang berikutnya sebelum memanggil upgrade node pool GKE secara manual. Upgrade node pool manual harus dilakukan secara berkala karena node tidak boleh memiliki lebih dari dua versi minor di balik versi bidang kontrol.
Sebaiknya Anda berlangganan untuk mengupgrade notifikasi menggunakan Pub/Sub untuk secara proaktif menerima update tentang versi GKE baru dan versi OS Windows yang digunakan.
Sebaiknya aktifkan upgrade otomatis node hanya jika Anda terus membangun image container Windows Server multi-arch yang menargetkan versi Windows Server terbaru. Upgrade otomatis node cenderung tidak menyebabkan masalah dengan jenis image node LTSC Windows Server, tetapi masih ada risiko mengalami masalah inkompatibilitas versi.
Update Windows
Update Windows dinonaktifkan untuk node Windows Server. Update otomatis dapat menyebabkan node dimulai ulang pada waktu yang tidak dapat diprediksi, dan setiap Update Windows yang diinstal setelah sebuah node dimulai akan hilang saat node dibuat ulang oleh GKE. GKE menyediakan Update Windows dengan mengupdate image node Windows Server yang digunakan dalam rilis GKE baru secara berkala. Mungkin ada penundaan antara saat Update Windows dirilis oleh Microsoft dan saat Update tersedia di GKE. Saat update keamanan penting dirilis, GKE mengupdate image node Windows Server secepat mungkin.
Mengontrol cara Windows Pod dan Layanan berkomunikasi
Anda dapat mengontrol cara Pod dan Layanan Windows berkomunikasi menggunakan kebijakan jaringan.
Anda dapat memiliki container Windows Server di cluster yang kebijakan jaringannya diaktifkan di GKE versi 1.22.2 dan yang lebih baru. Fitur
ini tersedia untuk cluster yang menggunakan jenis image node WINDOWS_LTSC atau
WINDOWS_LTSC_CONTAINERD.
Jika bidang kontrol atau node Anda menjalankan versi yang lebih lama, Anda dapat memigrasikan node pool ke versi yang mendukung kebijakan jaringan dengan mengupgrade node pool dan bidang kontrol Anda ke GKE versi 1.22.2 atau yang lebih baru.
Opsi ini hanya tersedia jika Anda membuat cluster dengan flag --enable-dataplane-v2.
Setelah Anda mengaktifkan kebijakan jaringan, semua kebijakan yang dikonfigurasi sebelumnya, termasuk kebijakan yang tidak berfungsi pada container Windows Server sebelum Anda mengaktifkan fitur tersebut, akan menjadi aktif.
Beberapa cluster tidak dapat digunakan dengan container Windows Server di cluster dengan kebijakan jaringan yang diaktifkan. Lihat bagian batasan untuk mengetahui detail selengkapnya.
Melihat dan membuat kueri log
Logging diaktifkan secara otomatis di cluster GKE. Anda dapat melihat log container dan log dari layanan lain di node Windows Server menggunakan pemantauan Kubernetes Engine.
Berikut adalah contoh filter untuk mendapatkan log container:
resource.type="k8s_container"
resource.labels.cluster_name="your_cluster_name"
resource.labels.namespace_name="your_namespace_id"
resource.labels.container_name="your_container_name"
resource.labels.Pod_name="your_Pod_name"
Mengakses node Windows Server menggunakan Remote Desktop Protocol (RDP)
Anda dapat terhubung ke node Windows Server di cluster menggunakan RDP. Untuk mengetahui petunjuk cara menghubungkan, lihat Menghubungkan ke instance Windows dalam dokumentasi Compute Engine.
Membangun image multi-arch
Anda dapat membangun image multi-arch secara manual atau menggunakan builder Cloud Build. Untuk mengetahui petunjuknya, lihat Membuat image multi-arch Windows.
Menggunakan gMSA
Langkah-langkah berikut menunjukkan cara menggunakan Akun Layanan Terkelola Grup (gMSA) dengan node pool Windows Server.
Konfigurasikan node Windows Server di cluster untuk otomatis bergabung dengan domain AD. Untuk mengetahui petunjuknya, lihat Mengonfigurasi node Windows Server untuk otomatis bergabung dengan domain Active Directory.
Membuat dan memberikan akses gMSA ke grup keamanan yang otomatis dibuat oleh layanan bergabung dengan domain. Langkah ini perlu dilakukan di komputer dengan akses administratif ke domain AD Anda.
$instanceGroupUri = gcloud container node-pools describe NODE_POOL_NAME --cluster CLUSTER_NAME --format="value(instanceGroupUrls)" $securityGroupName = ([System.Uri]$instanceGroupUri).Segments[-1] $securityGroup = dsquery group -name $securityGroupName $gmsaName = GMSA_NAME $dnsHostName = DNS_HOST_NAME New-ADServiceAccount -Name $gmsaName -DNSHostName $dnsHostName -PrincipalsAllowedToRetrieveManagedPassword $securityGroup Get-ADServiceAccount $gmsaName Test-ADServiceAccount $gmsaNameGanti kode berikut:
NODE_POOL_NAME: nama node pool Windows Server Anda. Grup keamanan yang dibuat secara otomatis memiliki nama yang sama dengan node pool Windows Server Anda.CLUSTER_NAME: nama cluster Anda.GMSA_NAME: nama yang Anda pilih untuk gMSA baru.DNS_HOST_NAME: Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) untuk akun layanan yang Anda buat. Misalnya, jikaGMSA_NAMEadalahwebapp01dan domainnya adalahexample.com, makaDNS_HOST_NAMEadalahwebapp01.example.com.
Konfigurasikan gMSA dengan mengikuti petunjuk dalam tutorial Mengonfigurasi GMSA untuk Pod dan container Windows.
Menghapus node pool Windows Server
Hapus node pool Windows Server menggunakan gcloud atau konsol Google Cloud .
gcloud
gcloud container node-pools delete NODE_POOL_NAME \
--cluster=CLUSTER_NAME
--location=CONTROL_PLANE_LOCATION
Konsol
Untuk menghapus node pool Windows Server menggunakan konsol Google Cloud , lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di konsol Google Cloud .
Di samping cluster yang ingin diedit, klik more_vert Actions, lalu klik edit Edit.
Pilih tab Nodes.
Di bagian Node Pools, klik delete Delete di samping node pool yang ingin dihapus.
Saat diminta konfirmasi, klik Hapus lagi.
Batasan
Ada beberapa fitur Kubernetes yang belum didukung untuk container Windows Server. Selain itu, beberapa fitur bersifat khusus Linux dan tidak berfungsi untuk Windows. Untuk daftar lengkap fitur Kubernetes yang didukung dan tidak didukung, lihat dokumentasi Kubernetes.
Selain fitur Kubernetes yang tidak didukung, ada beberapa fitur GKE yang tidak didukung.
Untuk cluster GKE, fitur berikut tidak didukung dengan node pool Windows Server:
- Cloud TPU (
--enable-tpu) - Semua jenis mesin Gen4
- Streaming image
- Visibilitas intranode
(
--enable-intra-node-visibility) - Agen penyamaran IP
- Cluster alfa Kubernetes (
--enable-kubernetes-alpha) - Node Local DNS Cache
- Penggunaan alamat IP Class E secara pribadi
- Penggunaan alamat IP publik secara pribadi
- Logging kebijakan jaringan
service.spec.sessionAffinityKubernetes- GPU (
--accelerator) - Menetapkan Pod maksimum per node yang lebih besar dari batas default 110
- Driver CSI Filestore
- Proxy CloudSQL Auth berbasis Docker
- Jejaring stack ganda IPv4/IPv6 IPv6 tidak didukung di node Windows.
Kebijakan Traffic Eksternal Lokal pada node pool Windows hanya didukung dengan GKE versi v1.23.4-gke.400 atau yang lebih baru.
Produk Google Cloud lain yang ingin Anda gunakan dengan cluster GKE mungkin tidak mendukung node pool Windows Server. Untuk batasan spesifik, lihat dokumentasi produk tersebut.
Pemecahan masalah
Baca dokumentasi Kubernetes untuk mengetahui panduan umum tentang men-debug Pod dan Layanan.
Masalah node container
Untuk masalah umum saat menggunakan image node Containerd, lihat Masalah umum.
Windows Pod gagal dimulai
Ketidakcocokan versi antara container Windows Server dan node Windows yang mencoba menjalankan container dapat menyebabkan Pod Windows Anda gagal dimulai.
Jika versi node pool Windows Anda adalah 1.16.8-gke.8 atau yang lebih baru, tinjau
dokumentasi Microsoft untuk masalah inkompatibilitas container Windows Server Februari 2020
dan bangun image container Anda dengan image Windows dasar
yang menyertakan Windows Update dari Maret 2020. Image container yang dibangun pada image Windows
dasar sebelumnya mungkin gagal dijalankan pada node Windows ini dan juga dapat menyebabkan
node gagal dengan status NotReady.
Error saat menarik image
Image container Windows Server, dan setiap lapisan yang terdiri darinya, bisa berukuran cukup besar. Ukurannya dapat menyebabkan Kubelet habis waktu tunggunya dan gagal saat mendownload dan mengekstrak lapisan container.
Anda mungkin mengalami masalah ini jika melihat pesan error "Gagal mengambil image" atau "Pembatalan
konteks tarik image dibatalkan" atau status ErrImagePull untuk
Pod Anda.
Jika pull image sering terjadi, Anda harus menggunakan node pool dengan spesifikasi CPU yang lebih tinggi. Ekstraksi container dijalankan secara paralel di seluruh core, sehingga jenis mesin dengan lebih banyak core akan mengurangi waktu pull secara keseluruhan.
Coba opsi berikut agar berhasil menarik container Windows Server Anda:
Bagi lapisan aplikasi image container Windows Server menjadi lapisan yang lebih kecil yang masing-masing dapat diambil dan diekstrak dengan lebih cepat. Hal ini dapat membuat cache lapisan Docker lebih efektif dan membuat percobaan ulang pull image lebih mungkin untuk berhasil. Untuk mempelajari lapisan lebih lanjut, lihat artikel Docker Driver penyimpanan.
Hubungkan ke node Windows Server dan gunakan perintah
docker pullsecara manual pada image container Anda sebelum membuat Pod.Tetapkan flag
image-pull-progress-deadlineuntuk layanankubeletguna meningkatkan waktu tunggu untuk menarik image container.Tetapkan flag dengan menghubungkan ke node Windows Anda dan menjalankan perintah PowerShell berikut.
Dapatkan command line yang ada untuk layanan Kubelet dari registry Windows.
PS C:\> $regkey = "HKLM\SYSTEM\CurrentControlSet\Services\kubelet"
PS C:\> $name = "ImagePath"
PS C:\> $(reg query ${regkey} /v ${name} | Out-String) -match ` "(?s)${name}.*(C:.*kubelet\.exe.*)"
PS C:\> $kubelet_cmd = $Matches[1] -replace ` "--image-pull-progress-deadline=.* ","" -replace "\r\n"," "
Tetapkan command line baru untuk layanan Kubelet, dengan flag tambahan untuk meningkatkan waktu tunggu.
PS C:\> reg add ${regkey} /f /v ${name} /t REG_EXPAND_SZ /d "${kubelet_cmd} ` --image-pull-progress-deadline=40m "
Konfirmasi bahwa perubahan berhasil.
PS C:\> reg query ${regkey} /v ${name}
Mulai ulang layanan
kubeletagar flag baru diterapkan.PS C:\> Restart-Service kubelet
Konfirmasi bahwa layanan
kubeletberhasil dimulai ulang.PS C:\> Get-Service kubelet # ensure state is Running
Kelompok image mencapai akhir siklus proses
Saat membuat node pool dengan image Windows, Anda akan menerima error yang serupa dengan berikut:
WINDOWS_SAC image family for 1.18.20-gke.501 has reached end of life, newer versions are still available.
Untuk mengatasi error ini, pilih image Windows yang tersedia dan didukung.
Anda dapat menemukan tanggal akhir dukungan untuk image node Windows GKE
menggunakan perintah gcloud container get-server-config seperti yang dijelaskan di bagian
Memetakan versi GKE dan Windows.
Waktu tunggu selama pembuatan node pool
Waktu pembuatan node pool dapat habis jika Anda membuat node dalam jumlah besar (misalnya, 500) dan ini adalah node pool pertama di cluster yang menggunakan image Windows Server.
Untuk mengatasi masalah ini, kurangi jumlah node yang Anda buat. Anda dapat meningkatkan jumlah node nanti.
Node Windows menjadi NotReady dengan error: "PLEG tidak responsif"
Ini adalah masalah Kubernetes umum yang terjadi ketika beberapa Pod dimulai dengan sangat cepat pada satu node Windows. Untuk memulihkan dari situasi ini, mulai ulang node Windows Server. Solusi yang direkomendasikan untuk menghindari masalah ini adalah dengan membatasi frekuensi pembuatan Windows Pod ke satu Pod setiap 30 detik.
TerminationGracePeriod Tidak Konsisten
Waktu tunggu sistem Windows untuk container mungkin berbeda dengan masa tenggang yang Anda konfigurasi. Perbedaan ini dapat menyebabkan Windows untuk menghentikan paksa container sebelum akhir masa tenggang diteruskan ke runtime.
Anda dapat mengubah waktu tunggu Windows dengan mengedit kunci registry lokal container pada waktu membangun image. Jika mengubah waktu tunggu Windows, Anda mungkin juga perlu menyesuaikan DeprecationGracePeriodSeconds agar sesuai.
Masalah konektivitas jaringan
Jika Anda mengalami masalah konektivitas jaringan dari container Windows Server,
hal ini mungkin karena jaringan container Windows Server sering mengasumsikan MTU jaringan
1500, yang tidak kompatibel dengan MTU Google Cloudsebesar 1460.
Pastikan MTU antarmuka jaringan dalam container dan
antarmuka jaringan node Windows Server itu sendiri ditetapkan ke nilai yang sama
(yaitu, 1460 atau kurang). Untuk mengetahui informasi cara menetapkan MTU, lihat
masalah umum untuk container Windows.
Masalah startup node
Jika node gagal dimulai dalam cluster atau gagal bergabung dengan cluster, tinjau informasi diagnostik yang diberikan dalam output port serial node.
Jalankan perintah berikut untuk melihat output port serial:
gcloud compute instances get-serial-port-output NODE_NAME --zone=COMPUTE_ZONE
Ganti kode berikut:
NODE_NAME: nama node.COMPUTE_ZONE: zona komputasi untuk node tertentu.
Layanan yang sesekali tidak dapat dijangkau di node Windows dengan cluster yang menjalankan versi 1.24 atau yang lebih lama
Saat memulai node Windows di cluster Kubernetes dengan jumlah aturan Load Balancer Layanan Jaringan Host yang tinggi, akan terjadi penundaan dalam memproses aturan. Layanan terkadang tidak dapat dijangkau selama penundaan, yang berlangsung sekitar 30 detik per aturan, dan total penundaan dapat signifikan jika ada aturan yang memadai. Untuk mempelajari lebih lanjut, lihat masalah asli di GitHub.
Untuk cluster GKE yang menjalankan versi 1.24 atau yang lebih lama, dengan node Windows yang memiliki peristiwa yang dimulai ulangkube-proxy —misalnya, startup
node, upgrade node, mulai ulang manual—Layanan apa pun yang dijangkau oleh Pod
yang berjalan pada node tersebut tidak akan dapat dijangkau hingga semua aturan disinkronkan oleh
komponen.
Untuk cluster GKE yang menjalankan versi 1.25 atau yang lebih baru, perilaku ini meningkat secara signifikan. Untuk mengetahui detail tentang peningkatan ini, lihat permintaan pull di GitHub. Jika mengalami masalah ini, sebaiknya upgrade bidang kontrol cluster Anda ke versi 1.25 atau yang lebih baru.
Langkah berikutnya
- Pelajari cara men-deploy aplikasi Windows.
- Baca pengantar singkat Microsoft tentang container Windows.
- Baca panduan Microsoft terkait pemilihan image dasar container.
- Baca tentang kompatibilitas versi container Microsoft di Windows.