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.
Ö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.
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 local
ayarlanı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. 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
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ı
- 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
. - 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. - 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.
- 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:
- 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ıraks-engine
. AKS Altyapısı sürüm 0.75.3 ve üzerinde kullanınaks-engine-azurestack
. - ve için bölümlerini
masterProfile
bulun,agentPoolProfiles
bu bölümlerde değerinidistro
olarakaks-ubuntu-20.04
değiştirin. api-model.json
Dosyayı kaydedin ve daha yeni bir Kubernetes sürümüne yükseltme adımlarında yaptığınız gibi komutunuzdakiaks-engin upgrade
dosyayı kullanınapi-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-manager
da 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:
- Azure Disk CSI sürücüsünü yükleme
- Kullanım dışı bırakılmış ağaç içi depolama sınıflarını kaldırma
- 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ğereRetain
(ö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 bircsi
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.