Membuat cluster menggunakan node pool Windows Server


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:

  1. Pilih image node Windows Server.
  2. Memperbarui dan mengonfigurasi gcloud.
  3. Buat cluster dan node pool.
  4. Dapatkan kredensial kubectl.
  5. Tunggu inisialisasi cluster.

Menyiapkan akun layanan IAM untuk GKE

GKE menggunakan akun layanan IAM yang dilampirkan ke node Anda untuk menjalankan tugas sistem seperti logging dan pemantauan. Setidaknya, akun layanan node ini harus memiliki peran Akun Layanan Node Default Kubernetes Engine (roles/container.defaultNodeServiceAccount) di project Anda. Secara default, GKE menggunakan akun layanan default Compute Engine, yang dibuat secara otomatis di project Anda, sebagai akun layanan node.

Untuk memberikan peran roles/container.defaultNodeServiceAccount ke akun layanan default Compute Engine, selesaikan langkah-langkah berikut:

console

  1. Buka halaman Sambutan:

    Buka Selamat Datang

  2. Di kolom Project number, klik Copy to clipboard.
  3. Buka halaman IAM:

    Buka IAM

  4. Klik Berikan akses.
  5. Di kolom Akun utama baru, tentukan nilai berikut:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    Ganti PROJECT_NUMBER dengan nomor project yang Anda salin.
  6. Di menu Select a role, pilih peran Kubernetes Engine Default Node Service Account.
  7. Klik Simpan.

gcloud

  1. Temukan nomor project Google Cloud Anda:
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    Ganti PROJECT_ID dengan project ID Anda.

    Outputnya mirip dengan hal berikut ini:

    12345678901
    
  2. Berikan peran roles/container.defaultNodeServiceAccount ke 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_NUMBER dengan 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), 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.
  • 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 menjalankan 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 gcloud components update.

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 default 3 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 dari rapid, regular, stable, atau None. Secara default, cluster terdaftar di saluran rilis regular kecuali jika setidaknya salah satu dari tanda berikut ditentukan: --cluster-version, --release-channel, --no-enable-autoupgrade, dan --no-enable-autorepair. Anda harus menentukan None jika 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 flag berikut ke perintah Anda:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Ganti SERVICE_ACCOUNT_NAME dengan nama akun layanan dengan hak istimewa minimal.

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:

    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 mesin f1-micro dan g1-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 image WINDOWS_LTSC_CONTAINERD. Flag ini bersifat opsional. Jika tidak ditentukan, versi OS default yang digunakan adalah LTSC2019. Tetapkan nilai ke ltsc2022 untuk membuat node pool Windows Server 2022. Setel nilai ke ltsc2019 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

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Di bagian Cluster basics, selesaikan langkah berikut:

    1. Masukkan Nama untuk cluster Anda.
    2. Untuk Location type, pilih region or zone yang diinginkan untuk cluster Anda.
    3. 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.
  4. 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).

  5. Di bagian atas halaman, klik Add Node Pool untuk membuat node pool Windows Server.

  6. Di bagian Node pool details, selesaikan tindakan berikut:

    1. Masukkan Nama untuk node pool.
    2. Untuk node versi statis, pilih Node version.
    3. Masukkan Jumlah node yang akan dibuat di node pool.
  7. Dari panel navigasi, di bagian Node Pools, klik Nodes.

    1. 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.

    2. 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 mesin f1-micro dan g1-small tidak didukung. Setiap jenis mesin ditagih secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.

  8. Dari panel navigasi, pilih nama node pool Windows Server Anda. Tindakan ini akan mengembalikan Anda ke halaman Detail node pool.

    1. Di bagian Otomatisasi, hapus centang pada kotak Aktifkan upgrade otomatis node. Tinjau bagian Mengupgrade node pool Windows Server sebelum mengaktifkan upgrade otomatis.
  9. Dari panel navigasi, pada Cluster, pilih Networking.

    1. 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.
  10. Klik Buat.

Terraform

Untuk membuat cluster GKE Standard dan node pool Windows Server menggunakan Terraform, lihat contoh berikut:

resource "google_container_cluster" "default" {
  name     = "gke-standard-regional-cluster"
  location = "us-west1"

  initial_node_count = 1

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

resource "google_container_node_pool" "default" {
  name     = "windows-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  node_config {
    image_type = "WINDOWS_LTSC_CONTAINERD"
  }
}

Contoh ini menggunakan LTSC Windows Server dengan containerd. Ini adalah jenis image untuk Windows Server 2022 dan Windows Server 2019 OS image. 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

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.

  1. 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.
  2. 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)"`
    
  3. 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
    
  4. 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.

  1. 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.

  2. 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, jika GMSA_NAME adalah webapp01 dan domainnya adalah example.com, maka DNS_HOST_NAME adalah webapp01.example.com.
  3. 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:

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di samping cluster yang ingin diedit, klik Actions, lalu klik Edit.

  3. Pilih tab Nodes.

  4. Di bagian Node Pools, klik Delete di samping node pool yang ingin dihapus.

  5. 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:

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 build image container 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 pull secara manual pada image container Anda sebelum membuat Pod.

  • Tetapkan flag image-pull-progress-deadline untuk layanan kubelet guna meningkatkan waktu tunggu untuk menarik image container.

    Tetapkan flag dengan menghubungkan ke node Windows Anda dan menjalankan perintah PowerShell berikut.

    1. 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"," "
    2. 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 "
    3. Konfirmasi bahwa perubahan berhasil.

      PS C:\> reg query ${regkey} /v ${name}
    4. Mulai ulang layanan kubelet agar flag baru diterapkan.

      PS C:\> Restart-Service kubelet
    5. 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 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