Menerapkan pembaruan keamanan dan kernel untuk simpul Linux di Azure Kubernetes Service (AKS)

Untuk melindungi kluster Anda, pembaruan keamanan secara otomatis diterapkan ke simpul Linux di AKS. Pembaruan ini mencakup perbaikan keamanan OS atau pembaruan kernel. Beberapa pembaruan memerlukan reboot simpul untuk menyelesaikan proses. AKS tidak secara otomatis me-reboot simpul Linux ini untuk menyelesaikan proses pembaruan.

Proses untuk membuat simpul Windows Server tetap terbarui sedikit berbeda. Simpul Windows Server tidak menerima pembaruan harian. Anda melakukan pembaruan AKS yang menyebarkan simpul baru dengan gambar dan patch Window Server dasar terbaru. Untuk kluster AKS yang menggunakan simpul Windows Server, lihat Meningkatkan kumpulan simpul di AKS.

Artikel ini menunjukkan kepada Anda cara menggunakan open-source kured (KUbernetes REboot Daemon) untuk menonton simpul Linux yang memerlukan reboot, kemudian secara otomatis menangani penjadwalan ulang pod yang sedang berjalan dan proses reboot simpul.

Catatan

Kured adalah proyek sumber terbuka di Cloud Native Computing Foundation. Silakan arahkan masalah ke GitHub kured. Dukungan tambahan dapat ditemukan di saluran #kured di CNCF Slack.

Sebelum Anda mulai

Anda memerlukan Azure CLI versi 2.0.59 atau yang lebih baru yang diinstal dan dikonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Memahami pengalaman pembaruan simpul AKS

Pada kluster AKS, simpul Kube Anda berfungsi sebagai komputer virtual (VM) Azure. VM berbasis Linux ini menggunakan gambar Ubuntu atau Azure Linux, dengan OS yang dikonfigurasi untuk memeriksa pembaruan secara otomatis setiap hari. Jika pembaruan keamanan atau kernel tersedia, pembaruan tersebut akan diunduh dan diinstal secara otomatis.

Pembaruan simpul AKS dan proses reboot dengan kured

Beberapa pembaruan keamanan, seperti pembaruan kernel, memerlukan reboot simpul untuk menyelesaikan proses. Simpul Linux yang memerlukan reboot membuat file bernama /var/run/reboot-required. Proses reboot ini tidak terjadi secara otomatis.

Anda dapat menggunakan alur kerja dan proses Anda sendiri untuk menangani reboot simpul, atau gunakan kured untuk mengatur proses. Dengan kured, DaemonSet disebarkan yang menjalankan Pod pada setiap simpul Linux di kluster. Pod di DaemonSet ini mengawasi keberadaan file /var/run/reboot-required, lalu memulai proses untuk me-reboot simpul.

Peningkatan citra simpul

Peningkatan tanpa pengawasan menerapkan pembaruan ke OS node Linux, tetapi citra yang digunakan untuk membuat simpul untuk kluster Anda tetap tidak berubah. Jika simpul Linux baru ditambahkan ke kluster Anda, citra asli digunakan untuk membuat simpul. Simpul baru ini menerima semua pembaruan keamanan dan kernel yang tersedia selama pemeriksaan otomatis setiap hari tetapi tetap dibuka hingga semua pemeriksaan dan mulai ulang selesai.

Anda dapat menggunakan peningkatan citra simpul untuk memeriksa dan memperbarui citra simpul yang digunakan oleh kluster Anda. Untuk informasi selengkapnya tentang peningkatan gambar simpul, lihat peningkatan gambar simpul Azure Kubernetes Service (AKS).

Peningkatan simpul

Ada proses lain di AKS yang memungkinkan Anda meningkatkan kluster. Peningkatan biasanya akan berpindah ke versi Kube yang lebih baru, bukan hanya menerapkan pembaruan keamanan simpul. Peningkatan AKS melakukan tindakan berikut:

  • Sebuah simpul baru disebarkan dengan pembaruan keamanan terbaru dan versi Kube diterapkan.
  • Simpul lama dijaga dan dikosongkan.
  • Pod dijadwalkan pada simpul baru.
  • Simpul lama dihapus.

Anda tidak dapat terus berada pada versi Kube yang sama selama pembaruan peristiwa. Anda harus menentukan versi Kube yang lebih baru. Untuk memperbarui ke versi terbaru Kube, Anda dapat memperbarui kluster AKS Anda.

Menyebarkan kured dalam kluster AKS

Untuk menyebarkan kuredDaemonSet, instal bagan resmi Kured Helm berikut ini. Ini menciptakan peran dan peran kluster, pengikatan, dan akun layanan, lalu menerapkan DaemonSet menggunakan kured.

# Add the Kured Helm repository
helm repo add kubereboot https://kubereboot.github.io/charts/

# Update your local Helm chart repository cache
helm repo update

# Create a dedicated namespace where you would like to deploy kured into
kubectl create namespace kured

# Install kured in that namespace with Helm 3 (only on Linux nodes, kured is not working on Windows nodes)
helm install my-release kubereboot/kured --namespace kured --set controller.nodeSelector."kubernetes\.io/os"=linux

Anda juga dapat mengonfigurasi parameter tambahan untuk kured, seperti integrasi dengan Prometheus atau Slack. Untuk informasi selengkapnya tentang parameter konfigurasi, lihat bagan Helm kured.

Memperbarui simpul kluster

Secara default, simpul Linux di AKS memeriksa pembaruan setiap malam. Jika Anda tidak ingin menunggu, Anda dapat melakukan pembaruan secara manual untuk memeriksa apakah kured berjalan dengan benar. Pertama, ikuti langkah-langkah untuk SSH ke salah satu simpul AKS Anda. Setelah Anda memiliki koneksi SSH ke simpul Linux, periksa pembaruan dan terapkan sebagai berikut:

sudo apt-get update && sudo apt-get upgrade -y

Jika pembaruan yang diterapkan memerlukan reboot simpul, file ditulis ke /var/run/reboot-required. Kured memeriksa simpul yang memerlukan reboot setiap 60 menit secara default.

Memantau dan meninjau proses reboot

Ketika salah satu replika di DaemonSet telah mendeteksi bahwa reboot simpul diperlukan, kunci ditempatkan pada simpul melalui API Kube. Kunci ini mencegah lebih banyak pod dijadwalkan pada simpul. Kunci juga menunjukkan bahwa hanya satu simpul yang harus di-reboot pada satu waktu. Dengan simpul yang dimatikan, pod yang berjalan dikosongkan dari simpul, dan simpul di-boot ulang.

Anda dapat memantau status simpul menggunakan perintah kubectl get nodes. Contoh output berikut menunjukkan simpul dengan status SchedulingDisabled saat simpul bersiap untuk proses reboot:

NAME                       STATUS                     ROLES     AGE       VERSION
aks-nodepool1-28993262-0   Ready,SchedulingDisabled   agent     1h        v1.11.7

Setelah proses pembaruan selesai, kamu dapat melihat status simpul menggunakan perintah kubectl get nodes dengan parameter --output wide. Output ini memungkinkan Anda melihat perbedaan dalam KERNEL-VERSION dari simpul yang mendasar, seperti yang ditunjukkan dalam contoh output berikut. Aks-nodepool1-28993262-0 diperbarui pada langkah sebelumnya dan menunjukkan kernel versi 4.15.0-1039-azure. Simpul aks-nodepool1-28993262-1 yang belum diperbarui menunjukkan kernel versi 4.15.0-1037-azure.

NAME                       STATUS    ROLES     AGE       VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-28993262-0   Ready     agent     1h        v1.11.7   10.240.0.4    <none>        Ubuntu 16.04.6 LTS   4.15.0-1039-azure   docker://3.0.4
aks-nodepool1-28993262-1   Ready     agent     1h        v1.11.7   10.240.0.5    <none>        Ubuntu 16.04.6 LTS   4.15.0-1037-azure   docker://3.0.4

Langkah berikutnya

Artikel ini merinci cara menggunakan kured untuk me-reboot simpul Linux secara otomatis sebagai bagian dari proses pembaruan keamanan. Untuk memperbarui ke versi terbaru Kube, Anda dapat memperbarui kluster AKS Anda.

Untuk kluster AKS yang menggunakan simpul Windows Server, lihat Meningkatkan kumpulan simpul di AKS.