Azure Stack Hub'da AKS altyapısı ile Kubernetes kümesi dağıtma

AZURE Stack Hub'da AKS altyapısı çalıştıran bir istemci VM'den Kubernetes kümesi dağıtabilirsiniz. Bu makalede bir küme belirtimi yazmaya, apimodel.json dosyasıyla bir küme dağıtmaya ve Helm ile MySQL dağıtarak kümenizi denetlemeye bakacağız.

Küme belirtimi tanımlama

API modeli olarak adlandırılan JSON biçimini kullanarak bir belge dosyasında küme belirtimi belirtebilirsiniz. AKS altyapısı, kümenizi oluşturmak için API modelinde bir küme belirtimi kullanır.

AKS altyapısında ve buna karşılık gelen görüntü eşlemesinde işletim sisteminiz ve AKS altyapısı sürüm numaranız için API modelinin örneklerini bulabilirsiniz.

  1. AKS altyapısı sürüm numaranızı (örneğin, v.0.63.0) tabloda bulabilirsiniz.
  2. API Modeli örnekleri tablosunda işletim sisteminizin bağlantısını seçin ve açın.
  3. Ham'ı seçin. URL'yi aşağıdaki yönergelerde kullanabilirsiniz.

API modelinin URL'si şöyle görünebilir:

https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json

Aşağıdaki örneklerin her biri için url ile değiştirin <URL for the API Model> .

API modelini güncelleştirme

Bu bölümde kümeniz için bir API modeli oluşturma konusuna bakılmaktadır.

  1. Linux veya Windows için bir Azure Stack Hub API Modeli dosyası kullanarak başlayın. Makineden AKS altyapısını yüklediyseniz şunu çalıştırın:

    curl -o kubernetes-azurestack.json <URL for the API Model>
    

    Not

    Bağlantınız kesilirse, dosyayı indirebilir ve el ile düzenlemeyi planladığınız bağlantısı kesilmiş makineye kopyalayabilirsiniz. PuTTY veya WinSCP gibi araçları kullanarak dosyayı Linux makinenize kopyalayabilirsiniz.

  2. API modelini bir düzenleyicide açmak için nano kullanabilirsiniz:

    nano ./kubernetes-azurestack.json
    

    Not

    Nano yüklü değilse Ubuntu'ya nano yükleyebilirsiniz: sudo apt-get install nano.

  3. kubernetes-azurestack.json dosyasında orchestratorRelease ve orchestratorVersion'ı bulun. Desteklenen Kubernetes sürümlerinden birini seçin; sürüm tablosunu sürüm notlarında bulabilirsiniz. değerini orchestratorRelease x.xx ve orchestratorVersion değerini x.xx.x olarak belirtin. Geçerli sürümlerin listesi için bkz . Desteklenen AKS altyapısı Sürümleri

  4. Kiracı portalının URL'sini bulun customCloudProfile ve sağlayın. Örneğin, https://portal.local.azurestack.external.

  5. AD FS kullanıyorsanız ekleyin "identitySystem":"adfs" . Örneğin,

        "customCloudProfile": {
            "portalURL": "https://portal.local.azurestack.external",
            "identitySystem": "adfs"
        },
    

    Not

    Kimlik sisteminiz için Microsoft Entra kimliği kullanıyorsanız identitySystem alanını eklemeniz gerekmez.

  6. içinde masterProfileaşağıdaki alanları ayarlayın:

    Alan Açıklama
    dnsPrefix VM'lerin ana bilgisayar adını tanımlamaya hizmet edecek benzersiz bir dize girin. Örneğin, kaynak grubu adını temel alan bir ad.
    count Dağıtımınız için istediğiniz ana öğe sayısını girin. HA dağıtımı için en düşük değer 3'dür, ancak HA dışı dağıtımlar için 1'e izin verilir.
    vmSize Azure Stack Hub tarafından desteklenen bir boyut girin, örneğinStandard_D2_v2.
    Dağıtım veya aks-ubuntu-20.04girinaks-ubuntu-18.04.
  7. Güncelleştirmede agentPoolProfiles :

    Alan Açıklama
    count Dağıtımınız için istediğiniz aracı sayısını girin. Abonelik başına kullanılacak düğüm sayısı üst sınırı 50'dir. Abonelik başına birden fazla küme dağıtıyorsanız toplam aracı sayısının 50'den fazla olmadığından emin olun. Örnek API modeli JSON dosyasında belirtilen yapılandırma öğelerini kullandığınızdan emin olun.
    vmSize Azure Stack Hub tarafından desteklenen bir boyut girin, örneğinStandard_D2_v2.
    Dağıtım veya aks-ubuntu-20.04Windowsgirinaks-ubuntu-18.04.
    Windows üzerinde çalışacak aracılar için kullanın Windows . Örneğin bkz. kubernetes-windows.json
  8. Güncelleştirmede linuxProfile :

    Alan Açıklama
    adminUsername VM yöneticisi kullanıcı adını girin.
    Ssh VM'lerle SSH kimlik doğrulaması için kullanılacak ortak anahtarı girin. ve ardından anahtarı kullanın ssh-rsa . Ortak anahtar oluşturma yönergeleri için bkz. Linux için SSH anahtarı oluşturma.

    Özel bir sanal ağa dağıtıyorsanız, gerekli anahtar ve değerleri bulma ve uygun dizilere ekleme yönergelerini Kubernetes kümesini özel bir sanal ağa dağıtma başlığı altında API Modeli'nde bulabilirsiniz.

    Not

    Azure Stack Hub için AKS altyapısı, kümenin oluşturulması için kendi sertifikalarınızı sağlamanıza izin vermez.

  9. Windows kullanıyorsanız ve windowsProfile değerlerini adminUsername:adminPasswordgüncelleştirin:

    "windowsProfile": {
    "adminUsername": "azureuser",
    "adminPassword": "",
    "sshEnabled": true
    }
    

API modeli hakkında daha fazla bilgi

ASDK kullanırken sertifika ekleme

Azure Stack Geliştirme Seti'ne (ASDK) bir küme dağıtıyor ve Linux kullanıyorsanız, kök sertifikayı AKS altyapısını çalıştıran istemci VM'nin güvenilen sertifika deposuna eklemeniz gerekir.

  1. Vm'deki kök sertifikayı şu dizinde bulabilirsiniz: /var/lib/waagent/Certificates.pem.
  2. Sertifika dosyasını kopyalayın:
    sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt
    sudo update-ca-certificates
    

Kubernetes kümesi dağıtma

API modelinizde gerekli tüm değerleri topladıktan sonra kümenizi oluşturabilirsiniz. Bu noktada:

Azure Stack Hub operatörünüzden şunu yapmasını isteyin:

  • Sistemin durumunu doğrulayın, çalıştırmayı Test-AzureStack ve OEM satıcınızın donanım izleme aracını önerin.
  • Bellek, depolama ve genel IP'ler gibi kaynaklar dahil olmak üzere sistem kapasitesini doğrulayın.
  • Kullanmayı planladığınız VM sayısı için hala yeterli alan olduğunu doğrulayabilmeniz için aboneliğinizle ilişkili kotanın ayrıntılarını sağlayın.

Küme dağıtmaya devam edin:

  1. Azure Stack Hub CLI bayraklarında AKS altyapısı için kullanılabilir parametreleri gözden geçirin.

    Parametre Örnek Description
    azure-env AzureStackCloud AKS altyapısına hedef platformunuzun Azure Stack Hub olduğunu belirtmek için kullanın AzureStackCloud.
    identity-system Adfs İsteğe bağlı. Active Directory Federasyon Hizmetleri (AD FS) kullanıyorsanız kimlik yönetimi çözümünüzü belirtin.
    location 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.
    api-model ./kubernetes-azurestack.json Küme yapılandırma dosyasının veya API modelinin yolu.
    output-directory kube-rg Apimodel.json çıkış dosyasını ve oluşturulan diğer dosyaları içerecek dizinin adını girin.
    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.
    istemci gizli anahtarı xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Hizmet sorumlusu gizli anahtarını girin. Hizmetinizi oluştururken istemci gizli dizisini ayarlarsınız.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Abonelik Kimliğinizi girin. Kiracı için bir abonelik sağlamanız gerekir. Yönetim aboneliğine dağıtım desteklenmez. Daha fazla bilgi için bkz. Teklife abone olma

    Örnek aşağıda verilmiştir:

    Not

    AKSe sürüm 0.75.3 ve üzeri için, AKS altyapısı kümesini dağıtma komutu şeklindedir aks-engine-azurestack deploy.

    aks-engine deploy \
    --azure-env AzureStackCloud \
    --location <for asdk is local> \
    --resource-group kube-rg \
    --api-model ./kubernetes-azurestack.json \
    --output-directory kube-rg \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  2. Çıkış dizini oluşturulduktan sonra herhangi bir nedenle yürütme başarısız olursa, sorunu düzeltebilir ve komutu yeniden çalıştırabilirsiniz. Dağıtımı yeniden çalıştırıyorsanız ve daha önce aynı çıkış dizinini kullandıysanız, AKS altyapısı dizinin zaten var olduğunu belirten bir hata döndürür. bayrağını kullanarak mevcut dizinin üzerine yazabilirsiniz: --force-overwrite.

  3. AKS altyapısı küme yapılandırmasını güvenli, şifrelenmiş bir konuma kaydedin.

    apimodel.json dosyasını bulun. Güvenli bir konuma kaydedin. Bu dosya, diğer TÜM AKS altyapısı işlemlerinizde giriş olarak kullanılır.

    Oluşturulan apimodel.json dosyası, giriş API'si modelinde kullandığınız hizmet sorumlusu, gizli dizi ve SSH ortak anahtarını içerir. Dosya, diğer tüm işlemleri gerçekleştirmek için AKS altyapısının ihtiyaç duyduğu diğer tüm meta verileri de içerir. Dosyayı kaybederseniz AKS altyapısı kümeyi yapılandıramaz.

    Gizli diziler şifrelenmemiştir. Dosyayı şifrelenmiş, güvenli bir yerde tutun.

Kümenizi doğrulama

adresine bağlanarak kubectlkümenizi denetleyin, bilgileri alın ve düğümlerinizin durumlarını alın.

  1. kubeconfig Kontrol düzlemine bağlanmak için dosyayı alın.

    • Zaten kubectl yüklediyseniz, bu dizin yolunda /kubeconfig/kubeconfig.jsonyeni oluşturulan kümenin dosyasını denetleyinkubeconfig. Yeni kümenize erişmek için .kube dizinine öğesini ekleyebilirsiniz/kubeconfig.json.
      yüklemediyseniz kubectlKubernetes komut satırı aracını yüklemek için Yükleme Araçları'nı ziyaret edin. Aksi takdirde, denetim düzlemi düğümlerinden birinden kümeye erişmek için aşağıdaki yönergeleri izleyin.
  2. Azure Stack Hub portalını kullanarak denetim düzlemi düğümlerinizden birinin genel IP adresini alın.

  3. Azure Stack Hub örneğine erişimi olan bir makineden PuTTY veya MobaXterm gibi bir istemci kullanarak SSH aracılığıyla yeni denetim düzlemi düğümüne bağlanın.

  4. SSH kullanıcı adı için " azureuser" ve kümenin dağıtımı için sağladığınız anahtar çiftinin özel anahtar dosyasını kullanın.

  5. Küme uç noktalarının çalışıp çalışmadığını denetleyin:

    kubectl cluster-info
    

    Çıktı aşağıdakine benzer görünmelidir:

    Kubernetes master is running at https://democluster01.location.domain.com
    CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  6. Ardından düğüm durumlarını gözden geçirin:

    kubectl get nodes
    

    Çıktının aşağıdakine benzer olması gerekir:

    k8s-linuxpool-29969128-0   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-1   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-2   Ready      agent    9d    v1.15.5
    k8s-master-29969128-0      Ready      master   9d    v1.15.5
    k8s-master-29969128-1      Ready      master   9d    v1.15.5
    k8s-master-29969128-2      Ready      master   9d    v1.15.5
    

Küme dağıtımı sorunlarını giderme

AKS altyapısını kullanarak kubernetes kümesi dağıtırken hatalarla karşılaştığınızda şunları denetleyebilirsiniz:

  1. Doğru Hizmet Sorumlusu kimlik bilgilerini (SPN) kullanıyor musunuz?
  2. SPN'nin Azure Stack Hub aboneliğinde "Katkıda Bulunanlar" rolü var mı?
  3. Azure Stack Hub planınızda yeterince büyük bir kota var mı?
  4. Azure Stack Hub örneğinde bir düzeltme eki veya yükseltme uygulanıyor mu?

Daha fazla bilgi için Azure/aks-engine-azurestack GitHub deposundaki Sorun Giderme makalesine bakın.

Hizmet ilkesi gizli dizinizi döndürme

Kubernetes kümesinin AKS altyapısıyla dağıtılmasından sonra hizmet sorumlusu (SPN), Azure Stack Hub örneğinizdeki Azure Resource Manager etkileşimlerini yönetmek için kullanılır. Bir noktada bu hizmet sorumlusunun gizli dizisinin süresi dolabilir. Gizli dizinizin süresi dolarsa kimlik bilgilerini şu şekilde yenileyebilirsiniz:

  • Her düğümü yeni hizmet sorumlusu gizli dizisiyle güncelleştirme.
  • Veya API modeli kimlik bilgilerini güncelleştirip yükseltmeyi çalıştırma.

Her düğümü el ile güncelleştirme

  1. Bulut operatörünüzden hizmet sorumlunuz için yeni bir gizli dizi alın. Azure Stack Hub yönergeleri için bkz. Azure Stack Hub kaynaklarına erişmek için uygulama kimliği kullanma.
  2. Her düğümde /etc/kubernetes/azure.json dosyasını güncelleştirmek için bulut operatörünüz tarafından sağlanan yeni kimlik bilgilerini kullanın. Güncelleştirmeyi yaptıktan sonra hem hem kube-controller-managerde kubele 'yi yeniden başlatın.

Aks-engine güncelleştirmesi ile kümeyi güncelleştirme

Alternatif olarak, apimodel.json dosyasındaki kimlik bilgilerini değiştirebilir ve güncelleştirilmiş .json dosyasını kullanarak aynı veya daha yeni Kubernetes sürümüne yükseltme çalıştırabilirsiniz. Modeli yükseltme yönergeleri için bkz. Azure Stack Hub'da Kubernetes kümesini yükseltme

Sonraki adımlar