Skip to content

Chapter 57: GKE with Windows Server Containers

Giới Thiệu

Windows Server container trên GKE là một niche nhưng không thể tránh đối với enterprise vận hành workload .NET Framework legacy, hoặc dependency Windows-only (IIS, COM, MSMQ) không thể port sang Linux trong ngắn hạn. GKE hỗ trợ mix Linux và Windows worker node trong cùng một cluster — nhưng "hỗ trợ" không có nghĩa là "giống nhau về vận hành".

Vì sao quan trọng:

  • Kiến trúc khác biệt ở gần như mọi layer — control plane vẫn luôn là Linux, nhưng node image, container runtime shim, networking stack (HNS/VFP thay vì netfilter/eBPF), resource enforcement (Job Objects thay vì cgroups), và signal handling (không có SIGTERM thực) đều khác biệt so với mental model Linux quen thuộc.
  • Image size và version-matching constraint tạo ra failure mode hoàn toàn khác — mismatch giữa host OS build và container base image build khiến container fail create, không phải "image pull chậm".
  • Observability có gap thực sự — không phải mọi dashboard/alerting rule đã tune cho Linux sẽ hoạt động tương đương trên Windows node, vì nguồn thu thập metric (cAdvisor trên HCS) hẹp hơn cgroups-based collection.
  • Graceful shutdown đòi hỏi code thay đổi — application phải tự implement xử lý shutdown event, không thể "tự động đúng" như trường hợp SIGTERM trên nhiều framework Linux.

Tài liệu này tập trung vào những điểm khác biệt cụ thể giữa vận hành Windows và Linux container trên GKE — không lặp lại kiến thức Kubernetes cơ bản đã covered ở các chapter khác, mà đi sâu vào vì sao Windows khác, và cách thiết kế/vận hành đúng đắn với sự khác biệt đó.

Điều Kiện Tiên Quyết

Bạn nên đã quen thuộc với:

  • Chapter 5 — GKE control plane internals, node lifecycle cơ bản
  • Chapter 6 — Node pool management, autoscaling cơ bản
  • Kubernetes basics: Pod, Deployment, DaemonSet, Service, nodeSelector/toleration
  • Windows fundamentals: Windows Server basics, khái niệm process/service trên Windows

Cấu Trúc Tài Liệu

  1. GKE Windows Node Pool Creation & Mental Model — Mixed-OS cluster architecture, LTSC vs SAC channel, containerd requirement, VPC-native constraint, OS labels/taints, version skew
  2. Windows CNI Considerations — Mô Hình Networking Khác Biệt — HNS, VFP, win-bridge/win-overlay, kube-proxy kernelspace mode, vì sao Dataplane V2 không hỗ trợ Windows
  3. Image Pulling — Windows Image Registry Optimization — Vì sao image Windows lớn hơn Linux nhiều lần, version-matching constraint, chiến lược pre-pull và layer caching
  4. Resource Requests — CPU/Memory Sizing Trên Windows — Job Objects thay cgroups, memory overhead baseline, nguyên tắc sizing thực tế
  5. Pod Disruption — Graceful Termination Trên Windows — CTRL_SHUTDOWN_EVENT thay SIGTERM, IHostApplicationLifetime pattern, tác động tới node drain latency
  6. Monitoring — Windows-Specific Metrics & Observability Gaps — Giới hạn cAdvisor trên Windows, windows_exporter, .NET-specific observability

Mục Tiêu Học Tập

Sau khi đọc chapter này, bạn sẽ:

  1. Hiểu kiến trúc mixed-OS cluster trên GKE — control plane luôn Linux, constraint khi provision Windows node pool (containerd, VPC-native, boot disk sizing)
  2. Hiểu networking model Windows đủ để troubleshoot — HNS/VFP mental model, và giới hạn Network Policy/observability khi không có Dataplane V2
  3. Tránh lỗi version-mismatch giữa base image và host OS — nguyên nhân phổ biến nhất khiến container Windows fail silently
  4. Sizing resource requests đúng đắn cho Windows pod — hiểu tại sao overhead cao hơn Linux và cách benchmark thực tế
  5. Implement graceful shutdown đúng cách cho .NET/.NET Framework workload — tránh lỗi request khi rolling update
  6. Bổ sung observability gap — biết khi nào cần windows_exporter hoặc application-level metrics thay vì chỉ dựa vào dashboard mặc định

Điều Không Nằm Trong Scope

  • Windows container Dockerfile/build how-to chi tiết — official Microsoft docs cover practical build syntax
  • GKE cluster creation cơ bản — covered ở Chapter 5Chapter 6
  • .NET application architecture patterns — tài liệu này chỉ cover phần tương tác với Kubernetes/GKE lifecycle, không phải .NET design pattern tổng quát
  • Hyper-V isolation — không được GKE hỗ trợ, nên không nằm trong scope tài liệu này
  • Windows Server licensing cost model — vấn đề billing/licensing, không thuộc phạm vi kỹ thuật của chapter này

Tham Khảo Chính Thức