Azure Kubernetes Service'de (AKS) Linux düğümlerine güvenlik ve çekirdek güncelleştirmeleri uygulama

Kümelerinizi korumak için güvenlik güncelleştirmeleri AKS'deki Linux düğümlerine otomatik olarak uygulanır. Bu güncelleştirmeler işletim sistemi güvenlik düzeltmelerini veya çekirdek güncelleştirmelerini içerir. Bu güncelleştirmelerden bazıları, işlemi tamamlamak için düğümün yeniden başlatılmasını gerektirir. AKS, güncelleştirme işlemini tamamlamak için bu Linux düğümlerini otomatik olarak yeniden başlatmaz.

Windows Server düğümlerini güncel tutma işlemi biraz farklıdır. Windows Server düğümleri günlük güncelleştirmeleri almaz. Bunun yerine, en son temel Window Server görüntüsü ve düzeltme ekleriyle yeni düğümler dağıtan bir AKS yükseltmesi gerçekleştirirsiniz. Windows Server düğümleri kullanan AKS kümeleri için bkz. AKS'de düğüm havuzunu yükseltme.

Bu makalede, yeniden başlatma gerektiren Linux düğümleri için watch için açık kaynak kured 'in (KUbernetes REboot Daemon) nasıl kullanılacağı ve ardından çalışan podların yeniden zamanlanması ve düğüm yeniden başlatma işleminin otomatik olarak nasıl işlendiği gösterilir.

Not

Kured Cloud Native Computing Foundation'da açık kaynaklı bir projedir. Lütfen sorunları kured GitHub'a yönlendirin. CNCF Slack'teki #kured kanalında ek destek bulunabilir.

Başlamadan önce

Azure CLI 2.0.59 veya sonraki bir sürümünün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

AKS düğümü güncelleştirme deneyimini anlama

AKS kümesinde Kubernetes düğümleriniz Azure sanal makineleri (VM) olarak çalışır. Bu Linux tabanlı VM'ler bir Ubuntu veya Azure Linux görüntüsü kullanır ve işletim sistemi her gün güncelleştirmeleri otomatik olarak denetlemek üzere yapılandırılır. Güvenlik veya çekirdek güncelleştirmeleri varsa, bunlar otomatik olarak indirilir ve yüklenir.

AKS düğümü güncelleştirme ve kured ile yeniden başlatma işlemi

Çekirdek güncelleştirmeleri gibi bazı güvenlik güncelleştirmeleri, işlemi sonlandırmak için düğümün yeniden başlatılmasını gerektirir. Yeniden başlatma gerektiren bir Linux düğümü /var/run/reboot-required adlı bir dosya oluşturur. Bu yeniden başlatma işlemi otomatik olarak gerçekleşmez.

Düğüm yeniden başlatma işlemlerini işlemek için kendi iş akışlarınızı ve işlemlerinizi kullanabilir veya işlemi yönetmek için kullanabilirsiniz kured . ile kured, kümedeki her Linux düğümünde bir pod çalıştıran bir DaemonSet dağıtılır. DaemonSet'teki bu podlar /var/run/reboot-required dosyasının varlığı için watch ve ardından düğümleri yeniden başlatmak için bir işlem başlatır.

Düğüm görüntüsü yükseltmeleri

Katılımsız yükseltmeler Linux düğüm işletim sistemine güncelleştirmeler uygular, ancak kümeniz için düğüm oluşturmak için kullanılan görüntü değişmeden kalır. Kümenize yeni bir Linux düğümü eklenirse, düğümü oluşturmak için özgün görüntü kullanılır. Bu yeni düğüm, her gün otomatik denetim sırasında kullanılabilen tüm güvenlik ve çekirdek güncelleştirmelerini alır, ancak tüm denetimler ve yeniden başlatmalar tamamlanana kadar eşleşmez kalır.

Alternatif olarak, kümeniz tarafından kullanılan düğüm görüntülerini denetlemek ve güncelleştirmek için düğüm görüntüsü yükseltmesini kullanabilirsiniz. Düğüm görüntüsü yükseltme hakkında daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) düğüm görüntüsü yükseltme.

Düğüm yükseltmeleri

AKS'de bir kümeyi yükseltmenize olanak tanıyan başka bir işlem vardır. Yükseltme genellikle yalnızca düğüm güvenlik güncelleştirmelerini uygulamak yerine Kubernetes'in daha yeni bir sürümüne geçmektir. AKS yükseltmesi aşağıdaki eylemleri gerçekleştirir:

  • En son güvenlik güncelleştirmeleri ve Kubernetes sürümü uygulanmış yeni bir düğüm dağıtılır.
  • Eski bir düğüm kordonlanır ve boşaltılır.
  • Podlar yeni düğümde zamanlanır.
  • Eski düğüm silinir.

Yükseltme olayı sırasında aynı Kubernetes sürümünde kalamazsınız. Kubernetes'in daha yeni bir sürümünü belirtmeniz gerekir. Kubernetes'in en son sürümüne yükseltmek için AKS kümenizi yükseltebilirsiniz.

AKS kümesinde kured dağıtma

DaemonSet'i kured dağıtmak için aşağıdaki resmi Kured Helm grafiğini yükleyin. Bu, bir rol ve küme rolü, bağlamalar ve bir hizmet hesabı oluşturur ve ardından kullanarak kuredDaemonSet'i dağıtır.

# 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

Prometheus veya Slack ile tümleştirme gibi için kuredek parametreler de yapılandırabilirsiniz. Yapılandırma parametreleri hakkında daha fazla bilgi için bkz. kured Helm grafiği.

Küme düğümlerini güncelleştirme

Varsayılan olarak AKS'deki Linux düğümleri güncelleştirmeleri her akşam denetler. Beklemek istemiyorsanız, doğru şekilde çalıştırılıp kured çalıştırılamadığını denetlemek için el ile bir güncelleştirme gerçekleştirebilirsiniz. İlk olarak AKS düğümlerinizden birine SSH adımlarını izleyin. Linux düğümüne SSH bağlantısına sahip olduktan sonra güncelleştirmeleri denetleyin ve aşağıdaki gibi uygulayın:

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

Düğüm yeniden başlatma gerektiren güncelleştirmeler uygulandıysa, /var/run/reboot-required dosyasına bir dosya yazılır. Kured varsayılan olarak her 60 dakikada bir yeniden başlatma gerektiren düğümleri denetler.

Yeniden başlatma işlemini izleme ve gözden geçirme

DaemonSet'teki çoğaltmalardan biri düğüm yeniden başlatması gerektiğini algıladığında Kubernetes API'sini kullanarak düğüme kilit yerleştirilir. Bu kilit, düğümde daha fazla pod zamanlanmasını engeller. Kilit aynı anda yalnızca bir düğümün yeniden başlatılması gerektiğini de gösterir. Düğüm devre dışı bırakıldığında çalışan podlar düğümden boşaltılır ve düğüm yeniden başlatılır.

kubectl get nodes komutunu kullanarak düğümlerin durumunu izleyebilirsiniz. Aşağıdaki örnek çıktıda, düğüm yeniden başlatma işlemine hazırlanırken SchedulingDisabled durumuna sahip bir düğüm gösterilmektedir:

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

Güncelleştirme işlemi tamamlandıktan sonra, parametresiyle --output widekubectl get nodes komutunu kullanarak düğümlerin durumunu görüntüleyebilirsiniz. Bu çıkış, aşağıdaki örnek çıktıda gösterildiği gibi temel düğümlerin KERNEL-VERSION'ında bir fark görmenize olanak tanır. aks-nodepool1-28993262-0 önceki bir adımda güncelleştirildi ve çekirdek sürüm 4.15.0-1039-azure'ı gösteriyor. Güncelleştirilmemiş aks-nodepool1-28993262-1 düğümü çekirdek sürüm 4.15.0-1037-azure'u gösterir.

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

Sonraki adımlar

Bu makalede, güvenlik güncelleştirmesi işleminin bir parçası olarak Linux düğümlerini otomatik olarak yeniden başlatmak için nasıl kullanılacağı kured ayrıntılı olarak açıklanır. Kubernetes'in en son sürümüne yükseltmek için AKS kümenizi yükseltebilirsiniz.

Windows Server düğümleri kullanan AKS kümeleri için bkz. AKS'de düğüm havuzunu yükseltme.