Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menghindari kesalahan OOM
Windows tidak memiliki pembunuh out-of-memory proses seperti Linux. Windows selalu memperlakukan semua alokasi memori mode pengguna sebagai virtual, dan file halaman wajib. Efek bersihnya adalah bahwa Windows tidak akan menjangkau kondisi memori dengan cara yang sama seperti Linux. Proses akan halaman ke disk alih-alih tunduk pada penghentian out of memory (OOM). Jika memori terlalu banyak disediakan dan semua memori fisik habis, maka paging dapat memperlambat kinerja.
Sistem reservasi dan memori kubelet
Berbeda dari Linux di mana --kubelet-reserve
menangkap reservasi sumber daya untuk daemon sistem kubernetes seperti kubelet, runtime container, dll; dan --system-reserve
menangkap reservasi sumber daya untuk daemon sistem OS seperti sshd, udev, dll. Pada Windows flag ini tidak menangkap dan menetapkan batas memori pada kubelet atau proses yang berjalan pada node.
Namun, Anda dapat menggabungkan flag ini NodeAllocatableuntuk mengelola pengurangan Kapasitas pada node dengan batas sumber daya memori manifes Pod untuk mengontrol alokasi memori per pod. Dengan menggunakan strategi ini Anda memiliki kontrol alokasi memori yang lebih baik serta mekanisme untuk meminimalkan out-of-memory (OOM) pada node Windows.
Pada node Windows, praktik terbaik adalah memesan setidaknya 2GB memori untuk OS dan proses. Gunakan --kubelet-reserve
and/or --system-reserve
untuk mengurangi NodeAllocatable.
Mengikuti dokumentasi node Windows yang dikelola sendiri Amazon EKS, gunakan CloudFormation template untuk meluncurkan grup node Windows baru dengan penyesuaian ke konfigurasi kubelet. CloudFormation Memiliki elemen BootstrapArguments
yang disebut yang sama denganKubeletExtraArgs
. Gunakan dengan tanda dan nilai berikut:
--kube-reserved memory=0.5Gi,ephemeral-storage=1Gi --system-reserved memory=1.5Gi,ephemeral-storage=1Gi --eviction-hard memory.available<200Mi,nodefs.available<10%"
Persyaratan memori wadah Windows
Sesuai dokumentasi Microsoft
Penting bagi Anda untuk mengetahui jumlah minimum memori yang diperlukan oleh image container Windows Anda, yaitu image dasar ditambah lapisan aplikasinya, dan mengaturnya sebagai container resources/requests dalam spesifikasi pod. Anda juga harus menetapkan batas untuk menghindari pod mengkonsumsi semua memori node yang tersedia jika terjadi masalah aplikasi.
Pada contoh di bawah ini, ketika penjadwal Kubernetes mencoba menempatkan sebuah pod pada sebuah node, permintaan pod digunakan untuk menentukan node mana yang memiliki sumber daya yang cukup untuk penjadwalan.
spec: - name: iis image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 resources: limits: cpu: 1 memory: 800Mi requests: cpu: .1 memory: 128Mi
Kesimpulan
Menggunakan pendekatan ini meminimalkan risiko kelelahan memori tetapi tidak mencegahnya terjadi. Menggunakan Amazon CloudWatch Metrics, Anda dapat mengatur peringatan dan remediasi jika terjadi kelelahan memori.