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.
Ç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 kured
DaemonSet'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 kured
ek 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 wide
kubectl 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.