Azure Stack Hub'da AKS altyapısını kullanarak Kubernetes kümesini yükseltme

AKS altyapısı, başlangıçta Azure Stack Hub'da aracı kullanarak dağıtılan Kubernetes kümesini yükseltmenize olanak tanır. AKS altyapısını kullanarak kümeleri koruyabilirsiniz. Bakım görevleriniz herhangi bir IaaS sistemine benzer. Yeni güncelleştirmelerin kullanılabilirliğini bilmeniz ve bunları uygulamak için AKS altyapısını kullanmanız gerekir.

Kümeyi yükseltme

Upgrade komutu Kubernetes sürümünü ve temel işletim sistemi görüntüsünü güncelleştirir. Kümenin her düğümü için yükseltme komutunu her çalıştırdığınızda AKS altyapısı, kullanılan aks-engine sürümüyle ilişkili AKS temel görüntüsünü kullanarak yeni bir VM oluşturur.

AKS Altyapısı'nın 0.73.0 ve altındaki sürümleri için komutunu kullanarak aks-engine upgrade kümenizdeki her ana düğümün ve aracı düğümün para birimini koruyabilirsiniz.

AKS Altyapısı'nın 0.75.3 ve üzeri sürümleri için komutunu kullanarak aks-engine-azurestack upgrade kümenizdeki her ana düğümün ve aracı düğümün para birimini koruyabilirsiniz.

Microsoft kümenizi yönetmez. Ancak Microsoft, kümenizi yönetmek için kullanabileceğiniz aracı ve VM görüntüsünü sağlar.

Dağıtılan bir küme için yükseltmeler şunları kapsar:

  • Kubernetes
  • Azure Stack Hub Kubernetes sağlayıcısı
  • Base OS

Bir üretim kümesini yükseltirken şunları göz önünde bulundurun:

  • Hedef küme için doğru küme belirtimini (apimodel.json) ve kaynak grubunu kullanıyor musunuz?
  • İstemci makinenin AKS altyapısını çalıştırması için güvenilir bir makine mi kullanıyorsunuz ve yükseltme işlemlerini gerçekleştiriyor musunuz?
  • Bir yedekleme kümeniz olduğundan ve çalışır durumda olduğundan emin olun.
  • Mümkünse, ağ atlamalarını ve olası bağlantı hatalarını azaltmak için Azure Stack Hub ortamındaki bir VM'den komutunu çalıştırın.
  • Aboneliğinizin tüm işlem için yeterli alana sahip olduğundan emin olun. İşlem sırasında yeni VM'ler ayırır.
  • Sistem güncelleştirmeleri veya zamanlanmış görevler planlanmıyor.
  • Üretim kümesi olarak tam olarak yapılandırılmış bir kümede aşamalı yükseltme ayarlayın ve üretim kümenizde bunu yapmadan önce yükseltmeyi orada test edin

Daha yeni bir Kubernetes sürümüne yükseltme adımları

Not

Aks altyapısının daha yeni bir sürümünü kullanıyorsanız ve görüntü markette kullanılabiliyorsa AKS temel görüntüsü de yükseltilir.

Aşağıdaki yönergeler, yükseltmeyi gerçekleştirmek için en düşük adımları kullanır. Daha fazla ayrıntı isterseniz Kubernetes Kümelerini Yükseltme makalesine bakın.

  1. Önce yükseltme için hedefleyebileceğiniz sürümleri belirlemeniz gerekir. Bu sürüm, şu anda sahip olduğunuz sürüme bağlıdır ve yükseltmeyi gerçekleştirmek için bu sürüm değerini kullanır. AKS Altyapınız tarafından desteklenen Kubernetes sürümleri aşağıdaki komut çalıştırılarak listelenebilir:

    Not

    AKSe sürüm 0.75.3 ve üzeri için AKS altyapısının sürümlerini alma komutudur aks-engine-azurestack get-versions.

    aks-engine get-versions --azure-env AzureStackCloud
    

    AKS altyapısı, AKS temel görüntüsü ve Kubernetes sürümlerinin tam eşlemesi için bkz . Desteklenen AKS Altyapısı Sürümleri.

  2. komutunu çalıştırmak upgrade için ihtiyacınız olacak bilgileri toplayın. upgrade komutu aşağıdaki parametreleri kullanır:

    Parametre Örnek Açıklama
    azure-env AzureStackCloud AKS altyapısına hedef platformunuzun Azure Stack Hub olduğunu belirtmek için kullanın AzureStackCloud.
    konum yerel Azure Stack Hub'ınızın bölge adı. ASDK için bölge olarak localayarlanır.
    resource-group kube-rg Yeni bir kaynak grubunun adını girin veya var olan bir kaynak grubunu seçin. Kaynak adının alfasayısal ve küçük harf olması gerekir.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Abonelik Kimliğinizi girin. Daha fazla bilgi için bkz. Teklife abone olma
    api-model ./kubernetes-azurestack.json Küme yapılandırma dosyasının veya API modelinin yolu.
    istemci kimliği xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Hizmet sorumlusu GUID'sini girin. Azure Stack Hub yöneticiniz hizmet sorumlusunu oluşturduğunda Uygulama Kimliği olarak tanımlanan İstemci Kimliği.
    client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Hizmet sorumlusu gizli dizisini girin. Bu, hizmetinizi oluştururken ayarladığınız istemci gizli dizisidir.
    kimlik sistemi adfs isteğe bağlı. Active Directory Federasyon Hizmetleri (AD FS) kullanıyorsanız kimlik yönetimi çözümünüzü belirtin.
  3. Değerlerinizi yerine yerleştirerek aşağıdaki komutu çalıştırın:

    Not

    AKSe sürüm 0.75.3 ve üzeri için AKS altyapısını yükseltme komutudur aks-engine-azurestack upgrade.

    aks-engine upgrade \
    --azure-env AzureStackCloud \
    --location <for an ASDK is local> \
    --resource-group kube-rg \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --api-model kube-rg/apimodel.json \
    --upgrade-version 1.18.15 \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  4. Herhangi bir nedenle yükseltme işlemi bir hatayla karşılaşırsa, sorunu ele aldıktan sonra komutu yeniden çalıştırabilirsiniz upgrade . AKS altyapısı, önceki seferde başarısız olduğu işlemi sürdürür.

Yalnızca işletim sistemi görüntüsünü yükseltme adımları

  1. supported-kubernetes-versions tablosunu gözden geçirin ve yükseltmeniz için planladığınız aks-engine ve AKS temel Görüntüsü sürümüne sahip olup olmadığınızı belirleyin. AKS Altyapısı sürüm 0.73.0 veya altındaysanız aks-engine çalıştırmasının sürümünü görüntülemek için: aks-engine version. AKS Altyapısı sürüm 0.75.3 veya üzerindeyseniz aks-engine çalıştırmasının sürümünü görüntülemek için: aks-engine-azurestack version.
  2. AKS altyapınızı buna göre yükseltin, aks-engine çalıştırmasını yüklediğiniz makinede: ./get-akse.sh --version vx.xx.x x.xx.x dosyasını hedeflenen sürümünüzle değiştirin.
  3. Azure Stack Hub operatörünüzden, kullanmayı planladığınız Azure Stack Hub Marketi'nde ihtiyacınız olan AKS Temel Görüntüsünün sürümünü eklemesini isteyin.
  4. Komutunu, zaten kullanmakta aks-engine upgrade olduğunuz Kubernetes sürümünü kullanarak çalıştırın, ancak ekleyin --force. Yükseltmeyi zorlama bölümünde bir örnek görebilirsiniz.

Kümeyi işletim sistemi sürümü Ubuntu 20.04'e güncelleştirme adımları

AKS altyapısı sürüm 0.75.3 ve üzeri ile küme VM'lerinizi Ubuntu 18.04'ten 20.04'e yükseltebilirsiniz. Şu adımları izleyin:

  1. Dağıtım sırasında oluşturulan dosyayı bulun ve düzenleyin api-model.json . Bu, ile herhangi bir yükseltme veya ölçeklendirme işlemi için kullanılan dosya olmalıdır aks-engine. AKS Altyapısı sürüm 0.75.3 ve üzerinde kullanın aks-engine-azurestack.
  2. ve için bölümlerini masterProfile bulun, agentPoolProfilesbu bölümlerde değerini distro olarak aks-ubuntu-20.04değiştirin.
  3. api-model.json Dosyayı kaydedin ve daha yeni bir Kubernetes sürümüne yükseltme adımlarında yaptığınız gibi komutunuzdaki aks-engin upgrade dosyayı kullanın api-model.json

AKS Altyapısı v0.70.0 ve üzeri ile depolama birimleri kullanıyorsanız kümeyi yükseltme adımları

Azure için Bulut Sağlayıcısı projesi (, ağaç dışı bulut sağlayıcısı veya dış bulut sağlayıcısı olarak cloud-controller-managerda bilinir), Azure bulutları için Kubernetes bulut sağlayıcısı arabirimini uygular. Ağaç dışı uygulama, kullanım dışı bırakılmış ağaç içi uygulamanın yerini alır.

Azure Stack Hub'da Kubernetes v1.21'den başlayarak AKS Altyapısı tabanlı kümeler yalnızca kullanır cloud-controller-manager. Bu nedenle, bir Kubernetes v1.21+ kümesini dağıtmak için API Modelinde (örnek) olarak ayarlanması true orchestratorProfile.kubernetesConfig.useCloudControllerManager gerekir. AKS Altyapısı'nın yükseltme işlemi bayrağı otomatik olarak güncelleştirir useCloudControllerManager .

Not

Yükseltme konusunda dikkat edilmesi gerekenler: Kubernetes kümesini v1.20'den (veya daha düşük sürümden) v1.21'e (veya daha yeni bir sürüme) yükseltme işlemi, ağaç içi birim sağlamayı kullanan kubernetes.io/azure-disk iş yüklerinde kapalı kalma süresine neden olur. Kubernetes v1.21+ sürümüne yükseltmeden önce, uygulama verilerinin tam yedeklemesini gerçekleştirmeniz ve üretim öncesi bir ortamda küme depolama kaynaklarının (PV ve PVC) yeni birim sağlayana geçirilebildiğini doğrulamanız kesinlikle önerilir. Burada Azure Disk CSI sürücüsüne nasıl geçiş yapılacağını öğrenin.

Birim sağlayıcıları

Ağaç içi birim sağlama yalnızca ağaç içi bulut sağlayıcısıyla uyumludur. Bu nedenle, kullanıcı iş yükleri kalıcı depolamayı kullanıyorsa v1.21+ kümesinin bir Kapsayıcı Depolama Arabirimi (CSI) Sürücüsü içermesi gerekir. Azure Stack Hub'da kullanılabilen birkaç çözüm burada listelenmiştir.

AKS Altyapısı, Azure Stack Hub'da varsayılan olarak hiçbir CSI sürücüsünü etkinleştirmez. CSI sürücüsü gerektiren iş yükleri için eklentiyi azuredisk-csi-driver (yalnızca Linux kümeleri) açıkça etkinleştirmek veya grafiği (Linux ve/veya Windows kümeleri) yüklemek azuredisk-csi-driver için kullanmak Helm mümkündür.

Kalıcı depolamayı Azure Disk CSI sürücüsüne geçirme

Aks Altyapısı tabanlı bir kümeyi v1.20'den (veya daha düşük sürümden) v1.21'e (veya daha yeni bir sürüme) yükseltme işlemi, ağaç içi birim sağlamayı kullanan kubernetes.io/azure-disk iş yüklerinde kapalı kalma süresine neden olur çünkü bu sağlama aracı Azure için Bulut Sağlayıcısı'nın bir parçası değildir.

Temel alınan Azure disklerinde kalıcı olan verilerin korunması gerekiyorsa, küme yükseltme işlemi tamamlandıktan sonra aşağıdaki ek adımlar gerekir:

  1. Azure Disk CSI sürücüsünü yükleme
  2. Kullanım dışı bırakılmış ağaç içi depolama sınıflarını kaldırma
  3. Kalıcı birimleri ve talepleri yeniden oluşturma

1. Azure Disk CSI sürücüsünü el ile yükleme

Aşağıdaki betik, Azure Disk CSI Sürücüsünü yüklemek için kullanır Helm :

DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
  --namespace kube-system \
  --set cloud=AzureStackCloud \
  --set controller.runOnMaster=true \
  --version ${DRIVER_VERSION}

2. Depolama sınıflarını değiştirme

, kube-addon-manager ağaç içi depolama sınıfları (disk.csi.azure.com) el ile silindikten sonra Azure Disk CSI sürücü depolama sınıflarını (kubernetes.io/azure-disk) otomatik olarak oluşturur:

IN_TREE_SC="default managed-premium managed-standard"

# Delete deprecated "kubernetes.io/azure-disk" storage classes
kubectl delete storageclasses ${IN_TREE_SC}

# Wait for addon manager to create the "disk.csi.azure.com" storage class resources
kubectl get --watch storageclasses

3. Kalıcı birimleri yeniden oluşturma

Azure Disk CSI Sürücüsü yüklendikten ve depolama sınıfları değiştirildikten sonra, sonraki adım Azure Disk CSI sürücüsünü (veya alternatif CSI çözümünü) kullanarak kalıcı birimleri (PV) ve kalıcı birim taleplerini (PVC) yeniden oluşturmaktır.

Bu, bu kaynakların başlangıçta nasıl dağıtıldığına bağlı olarak farklı olabilecek çok adımlı bir işlemdir. Üst düzey adımlar şunlardır:

  • Geçirilecek PV + PVC çiftlerine başvuran dağıtımı veya statefulset'i silin (gerekirse yedek kaynak tanımı).
  • PV'lerin persistentVolumeReclaimPolicy özelliğinin değere Retain (örnek) ayarlandığından emin olun.
  • Geçirilecek PV + PVC çiftlerini silin (gerekirse kaynak tanımlarını yedekleyin).
  • Geçirmek için, nesneyi kaldırarak azureDisk ve özgün AzureDisk'e başvuru içeren bir csi nesne ekleyerek (örnek) PV'lerin kaynak tanımını güncelleştirin.
  • Pv kaynağını/kaynaklarını, PVC kaynaklarını (gerekirse) ve son olarak dağıtımı veya statefulset'i aşağıdaki sırayla yeniden oluşturun.

Aşağıdaki geçiş betiği şablon olarak sağlanır.

Geçiş betiğini çalıştırdıktan sonra pod "Birimler eklenemiyor veya bağlanamıyor" hatasıyla takılıyorsa, Azure Disk CSI Sürücüsü'nin yüklendiğinden ve depolama sınıflarının yeniden oluşturulduğundan emin olun.

Yükseltmeyi zorlama

Kümenizin yükseltilmesine zorlamak isteyebileceğiniz koşullar olabilir. Örneğin, ilk gün, en son Kubernetes sürümünü kullanarak bağlantısı kesilmiş bir ortamda küme dağıtırsınız. Ertesi gün Ubuntu, Microsoft'un yeni bir AKS Temel Görüntüsü oluşturduğu bir güvenlik açığına bir düzeltme eki yayınlar. Zaten dağıtmış olduğunuz Kubernetes sürümünü kullanarak yükseltmeyi zorlayarak yeni görüntüyü uygulayabilirsiniz.

Not

AKSe sürüm 0.75.3 ve üzeri için AKS altyapısını yükseltme komutudur aks-engine-azurestack upgrade.

aks-engine upgrade \
--azure-env AzureStackCloud   
--location <for an ASDK is local> \
--resource-group kube-rg \
--subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--api-model kube-rg/apimodel.json \
--upgrade-version 1.18.15 \
--client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--force

Yönergeler için bkz . Yükseltmeye zorlama.

Sonraki adımlar