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.
Pilih image node Windows Server Anda
Agar dapat berjalan di GKE, image node container Windows Server harus dibangun di Windows Server versi 2019 (LTSC), Windows Server versi 20H2 (SAC), 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 individual 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-config
seperti yang dijelaskan di bagian Memetakan versi GKE dan Windows. - Versi SAC hanya didukung oleh Microsoft selama 18 bulan setelah rilis awal. Jika Anda memilih SAC jenis image untuk node pool, tetapi tidak mengupgrade node pool ke versi GKE baru yang menargetkan versi SAC yang lebih baru, Anda tidak dapat membuat node baru di node saat siklus proses dukungan untuk versi SAC berakhir. Pelajari lebih lanjut dukungan Google untuk sistem operasi Windows Server. Sebaiknya gunakan LTSC karena siklus proses dukungannya yang lebih lama.
- Jangan pilih SAC jika Anda mendaftarkan cluster GKE di saluran rilis stabil. Karena versi SAC hanya didukung oleh Microsoft selama 18 bulan, ada risiko image node pool SAC menjadi tidak didukung saat versi GKE stabil masih tersedia.
- 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:
- Hanya pilih SAC jika Anda dapat mengupgrade node pool dan container yang berjalan di dalamnya secara rutin. GKE mengupdate versi SAC yang digunakan untuk node pool Windows secara berkala dalam rilis baru GKE, sehingga memilih SAC untuk jenis image node pool mengharuskan Anda membangun ulang container lebih sering.
- Jika tidak yakin jenis image Windows Server mana yang akan digunakan, sebaiknya pilih Windows Server LTSC untuk menghindari masalah inkompatibilitas versi saat mengupgrade node pool. Untuk informasi tambahan, lihat Saluran layanan Windows Server: LTSC dan SAC dalam dokumentasi Microsoft.
- Windows Server Core dan Nano Server dapat digunakan sebagai image dasar untuk container Anda.
- Container Windows Server memiliki persyaratan kompatibilitas versi yang penting:
- Container Windows Server yang dibangun untuk LTSC tidak berjalan di node SAC, dan sebaliknya.
- Container Windows Server yang dibangun untuk versi LTSC atau SAC tertentu tidak berjalan pada versi LTSC atau SAC lain tanpa dibangun ulang untuk menargetkan versi lainnya.
- Membangun image container Windows Server sebagai image multi-arch yang dapat menargetkan beberapa versi Windows Server dapat membantu Anda menangani kompleksitas pembuatan versi ini.
- Fitur baru:
- Fitur Windows Server baru biasanya diperkenalkan ke dalam versi SAC terlebih dahulu. Karena itu, fungsi baru GKE Windows mungkin diperkenalkan di node pool SAC terlebih dahulu.
- Pertimbangkan SAC jika Anda bergantung pada fitur yang belum tersedia di rilis LTSC.
Runtime container:
Untuk image node LTSC Windows Server dan SAC, runtime container dapat berupa Docker atau containerd. Untuk node GKE versi 1.21.1-gke.2200 dan yang lebih baru, sebaiknya gunakan runtime dalam containerd. Untuk mengetahui informasi selengkapnya, baca Image node.
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
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- 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 \
--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.--enable-ip-alias
mengaktifkan 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 default3
akan 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 rilisregular
kecuali jika setidaknya salah satu dari tanda berikut ditentukan:--cluster-version
,--release-channel
,--no-enable-autoupgrade
, dan--no-enable-autorepair
. Anda harus menentukanNone
jika memilih versi cluster dan tidak ingin cluster Anda didaftarkan dalam saluran rilis.
Buat node pool Windows Server dengan kolom berikut:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--image-type=IMAGE_NAME \
--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.IMAGE_NAME
: Anda dapat menentukan salah satu nilai berikut:WINDOWS_LTSC_CONTAINERD
: Windows Server LTSC dengan containerd. Ini adalah jenis image untuk OS image Windows Server 2022 dan Windows Server 2019WINDOWS_SAC_CONTAINERD
: SAC Windows Server dengan containerd (Tidak didukung setelah 9 Agustus 2022)WINDOWS_LTSC
: Windows Server LTSC dengan DockerWINDOWS_SAC
: Windows Server SAC dengan Docker (Tidak didukung setelah 9 Agustus 2022)
Untuk mengetahui informasi selengkapnya tentang image node ini, lihat bagian Memilih image node Windows.
--no-enable-autoupgrade
menonaktifkan upgrade otomatis node. Tinjau Mengupgrade node pool Windows Server sebelum mengaktifkan.MACHINE_TYPE_NAME
: menentukan jenis mesin.n1-standard-2
adalah jenis mesin minimum yang direkomendasikan karena node Windows Server memerlukan resource tambahan. Jenis mesinf1-micro
dang1-small
tidak 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 keltsc2022
untuk membuat node pool Windows Server 2022. Setel nilai keltsc2019
untuk 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 \
--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 \
--windows-os-version=ltsc2022
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
Di bagian Cluster basics, selesaikan langkah berikut:
- Masukkan Nama 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 salah satu image node berikut:
- Windows Long Term Servicing Channel dengan Docker
- Windows Long Term Servicing Channel dengan containerd
- Windows Semi-Annual Channel dengan Docker
- Windows Semi-Annual Channel dengan containerd
Untuk mengetahui informasi selengkapnya, lihat bagian Memilih image node Windows.
Pilih Machine configuration default yang akan digunakan untuk instance.
n1-standard-2
adalah ukuran minimum yang direkomendasikan karena node Windows Server memerlukan resource tambahan. Jenis mesinf1-micro
dang1-small
tidak 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 Create.
Terraform
Anda dapat menggunakan penyedia Google Terraform untuk membuat cluster GKE dengan node pool Windows Server.
Tambahkan blok ini ke konfigurasi Terraform:
resource "google_container_cluster" "cluster" {
project = "PROJECT_ID"
name = "CLUSTER_NAME"
location = "LOCATION"
min_master_version = "VERSION_NUMBER"
# Enable Alias IPs to allow Windows Server networking.
ip_allocation_policy {
cluster_ipv4_cidr_block = "/14"
services_ipv4_cidr_block = "/20"
}
# Removes the implicit default node pool, recommended when using
# google_container_node_pool.
remove_default_node_pool = true
initial_node_count = 1
}
# Small Linux node pool to run some Linux-only Kubernetes Pods.
resource "google_container_node_pool" "linux_pool" {
name = "linux-pool"
project = google_container_cluster.cluster.project
cluster = google_container_cluster.cluster.name
location = google_container_cluster.cluster.location
node_count = 1
node_config {
image_type = "COS_CONTAINERD"
}
}
# Node pool of Windows Server machines.
resource "google_container_node_pool" "windows_pool" {
name = "NODE_POOL_NAME"
project = google_container_cluster.cluster.project
cluster = google_container_cluster.cluster.name
location = google_container_cluster.cluster.location
node_count = 1
node_config {
image_type = "IMAGE_NAME"
machine_type = "MACHINE_TYPE_NAME"
}
# The Linux node pool must be created before the Windows Server node pool.
depends_on = [google_container_node_pool.linux_pool]
}
Ganti kode berikut:
PROJECT_ID
: project ID tempat cluster dibuat.CLUSTER_NAME
: nama cluster GKE.LOCATION
: lokasi (region atau zona) tempat cluster dibuat.VERSION_NUMBER
: harus 1.16.8-gke.9 atau yang lebih tinggi.NODE_POOL_NAME
: nama yang Anda pilih untuk node pool Windows Server.IMAGE_NAME
: Anda dapat menentukan salah satu nilai berikut:WINDOWS_LTSC_CONTAINERD
: Windows Server LTSC dengan containerd. Ini adalah jenis image untuk Windows Server 2022 dan Windows Server 2019 OS image.WINDOWS_SAC_CONTAINERD
: SAC Windows Server dengan containerd (Tidak didukung setelah 9 Agustus 2022)WINDOWS_LTSC
: Windows Server LTSC dengan DockerWINDOWS_SAC
: Windows Server SAC dengan Docker (Tidak didukung setelah 9 Agustus 2022)
Untuk mengetahui informasi selengkapnya tentang image node ini, lihat bagian Memilih image node Windows.
MACHINE_TYPE_NAME
: menentukan jenis mesin.n1-standard-2
adalah jenis mesin minimum yang direkomendasikan karena node Windows Server memerlukan resource tambahan. Jenis mesinf1-micro
dang1-small
tidak didukung. Setiap jenis mesin ditagih secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.
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
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 SAC baru kira-kira setiap enam bulan dan versi LTSC baru setiap dua hingga tiga tahun. Versi baru ini biasanya tersedia di GKE versi minor baru. Dalam versi minor GKE, versi LTSC dan SAC 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 ZONE=COMPUTE_ZONE
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.NODE_POOL_NAME
: nama node pool Windows Server.COMPUTE_ZONE
: zona komputasi untuk cluster.
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 --zone $ZONE --format="value(version)"`
Dapatkan versi Windows Server untuk
NODE_POOL_VERSION
:gcloud beta container get-server-config \ --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: 2024
Dapatkan versi Windows Server untuk jenis image
WINDOWS_SAC
:gcloud beta container get-server-config \ --flatten=windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions \ --filter="windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions.imageType=WINDOWS_SAC" \ --format="value(windowsVersionMaps.\"$NODE_POOL_VERSION\".windowsVersions.osVersion)"
Outputnya mirip dengan hal berikut ini:
10.0.18363.1198
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, terutama jika Anda menggunakan SAC Windows Server sebagai jenis image node. 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 $gmsaName
Ganti 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_NAME
adalahwebapp01
dan domainnya adalahexample.com
, makaDNS_HOST_NAME
adalahwebapp01.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
Konsol
Untuk menghapus node pool Windows Server menggunakan Google Cloud Console, 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
) - Streaming image
- Ingress dengan Grup Endpoint Jaringan
- Gateway
- 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
- Kubernetes
service.spec.sessionAffinity
- GPU (
--accelerator
) - Menetapkan Pod maksimum per node yang lebih besar dari batas default 110
- Driver CSI Filestore
- Proxy CloudSQL Auth berbasis Docker
- Jaringan dual-stack IPv4/IPv6 IPv6 tidak didukung pada 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 lainnya 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, baca
dokumentasi Microsoft untuk
masalah inkompatibilitas container Windows Server Februari 2020
dan bangun container image 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 Tentang image, container, dan driver penyimpanan.
Hubungkan ke node Windows Server dan gunakan perintah
docker pull
secara manual pada image container Anda sebelum membuat Pod.Tetapkan flag
image-pull-progress-deadline
untuk layanankubelet
guna 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
kubelet
agar flag baru diterapkan.PS C:\> Restart-Service kubelet
Konfirmasi bahwa layanan
kubelet
berhasil 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 Cloud sebesar 1460
.
Pastikan MTU antarmuka jaringan dalam penampung dan antarmuka jaringan node Windows Server itu sendiri ditetapkan ke nilai yang sama (yaitu, 1460
atau kurang). Untuk mengetahui informasi tentang cara menetapkan MTU, lihat
masalah umum untuk penampung 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 selanjutnya
- 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.