Azure CLI kullanarak Kubernetes kümeleri oluşturma
Şunlar için geçerlidir: Azure Stack HCI, sürüm 23H2
Bu makalede, Azure CLI kullanarak Azure Stack HCI'de Kubernetes kümelerinin nasıl oluşturulacağı açıklanır. İş akışı aşağıdaki gibidir:
- Azure CLI kullanarak Azure Stack HCI 23H2'de bir Kubernetes kümesi oluşturun. Küme varsayılan olarak Azure Arc bağlantılıdır.
- Kümeyi oluştururken Kubernetes kümesi yönetici erişimine sahip Microsoft Entra kullanıcılarının listesini içeren bir Microsoft Entra grubu sağlarsınız.
- kubectl ve Microsoft Entra kimliğinizi kullanarak kümeye erişin.
- Bir web ön ucu ve kümede redis örneği ile örnek bir çok kapsayıcılı uygulama çalıştırın.
Başlamadan önce
- Başlamadan önce, şirket içi altyapı yöneticinizden aşağıdaki ayrıntılara sahip olduğunuzdan emin olun:
- Azure abonelik kimliği - Azure Stack HCI'nin dağıtım ve kayıt için kullanıldığı Azure abonelik kimliği.
- Özel Konum Kimliği - Özel konumun Azure Resource Manager kimliği. Özel konum, Azure Stack HCI kümesi dağıtımı sırasında yapılandırılır. Altyapı yöneticiniz size özel konumun Resource Manager kimliğini vermelidir. Kubernetes kümeleri oluşturmak için bu parametre gereklidir. Ayrıca, altyapı yöneticisi özel bir konum adı ve kaynak grubu adı sağlıyorsa Resource Manager kimliğini kullanarak
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
da alabilirsiniz. - Ağ Kimliği - Bu adımları izleyerek oluşturulan Azure Stack HCI mantıksal ağının Azure Resource Manager kimliği. Yöneticiniz size mantıksal ağın kimliğini vermelidir. Kubernetes kümeleri oluşturmak için bu parametre gereklidir. Mantıksal ağın oluşturulduğu kaynak grubunu biliyorsanız kullanarak
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
Azure Resource Manager kimliğini de alabilirsiniz.
- Bu makaledeki adımları yerel bir geliştirme makinesinde çalıştırarak uzak Azure Stack HCI dağıtımınızda bir Kubernetes kümesi oluşturabilirsiniz. Geliştirme makinenizde En son Az CLI sürümüne sahip olduğunuzdan emin olun. Az CLI sürümünüzü kullanarak
az upgrade
yükseltmeyi de seçebilirsiniz. - Kubernetes kümesine her yerden bağlanmak için bir Microsoft Entra grubu oluşturun ve bu gruba üye ekleyin. Microsoft Entra grubundaki tüm üyelerin kümeye küme yöneticisi erişimi vardır. Kendinizi Microsoft Entra grubuna üye olarak eklediğinizden emin olun. Kendinizi eklemezseniz kubectl kullanarak Kubernetes kümesine erişemezsiniz. Microsoft Entra grupları oluşturma ve kullanıcı ekleme hakkında daha fazla bilgi için bkz . Microsoft Entra gruplarını ve grup üyeliğini yönetme.
- Geliştirme makinenize kubectl indirip yükleyin. Kubernetes komut satırı aracı kubectl, Kubernetes kümelerine karşı komut çalıştırmanızı sağlar. Kubectl kullanarak uygulamaları dağıtabilir, küme kaynaklarını inceleyip yönetebilir ve günlükleri görüntüleyebilirsiniz.
Azure CLI uzantısını yükleme
Gerekli Azure CLI uzantılarını yüklemek için aşağıdaki komutu çalıştırın:
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Kubernetes kümesi oluşturma
AKS Arc'ta az aksarc create
kubernetes kümesi oluşturmak için komutunu kullanın. Bu komutu çalıştırmadan önce Azure'da oturum açtığınızdan emin olun. Birden çok Azure aboneliğiniz varsa az account set komutunu kullanarak uygun abonelik kimliğini seçin.
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0 --control-plane-ip $controlplaneIP
Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.
Not
- SSH anahtarı değeri, sağlanan kümedeki düğümlere erişmek için ortak anahtardır. Varsayılan olarak, bu anahtar konumunda
~/.ssh/id_rsa.pub
bulunur. Küme oluşturma sırasında parametresini--ssh-key-value
kullanarak farklı bir konum belirtebilirsiniz. --generate-ssh-keys
Yerel makinenizde önceden var olan bir SSH anahtarı yoksa parametresi gereklidir. Küme oluşturma sırasında bu parametreyi eklemezseniz ve SSH anahtarı yoksa bir hata iletisi alırsınız.- Yerel makinenizde zaten bir SSH anahtarınız varsa AKS kümesi bu anahtarı yeniden kullanabilir. Bu durumda, parametresini
--generate-ssh-keys
belirtmenin veya bu parametreyi atlamanın hiçbir etkisi olmaz.
Kubernetes kümesine bağlanma
Artık geliştirme makinenizden komutunu çalıştırarak az connectedk8s proxy
Kubernetes kümenize bağlanabilirsiniz. Bu komutu çalıştırmadan önce Azure'da oturum açtığınızdan emin olun. Birden çok Azure aboneliğiniz varsa az account set komutunu kullanarak uygun abonelik kimliğini seçin.
Bu komut, Kubernetes kümenizin kubeconfig'ini geliştirme makinenize indirir ve şirket içi Kubernetes kümenize bir proxy bağlantı kanalı açar. Komut çalıştığı sürece kanal açık durumdadır. Kümenize erişmek istediğiniz sürece bu komutun çalışmasına izin verin. Zaman aşımına uğradıysa CLI penceresini kapatın, yeni bir pencere açın ve komutu yeniden çalıştırın.
Aşağıdaki komutu başarıyla çalıştırmak için Kubernetes kümesini barındıran kaynak grubunda Katkıda Bulunan izinlerine sahip olmanız gerekir:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Beklenen çıktı:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Bu oturumu çalışır durumda tutun ve farklı bir terminal/komut isteminden Kubernetes kümenize bağlanın. kubectl get komutunu çalıştırarak Kubernetes kümenize bağlanabildiğinizi doğrulayın. Bu komut, küme düğümlerinin listesini döndürür:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Aşağıdaki çıkış örneği, önceki adımlarda oluşturulan düğümü gösterir. Düğüm durumunun Hazır olduğundan emin olun:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Uygulamayı dağıtma
Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen durumunu tanımlar.
Azure Vote uygulamasını çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim kullanabilirsiniz. Bu bildirim iki Kubernetes dağıtımı içerir:
- Örnek Azure Vote Python uygulamaları.
- Redis örneği.
İki Kubernetes hizmeti de oluşturulur:
- Redis örneği için bir iç hizmet.
- İnternet'ten Azure Vote uygulamasına erişmek için bir dış hizmet.
azure-vote.yaml adlı bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
kubectl apply komutunu kullanarak uygulamayı dağıtın ve YAML'nizin adını belirtin:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
Aşağıdaki örnek çıktı, başarıyla oluşturulan dağıtımları ve hizmetleri gösterir:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Uygulamayı test etme
Uygulama çalıştırıldığında, kubernetes hizmeti uygulamanın ön ucu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir.
bağımsız değişkeniyle kubectl get service komutunu kullanarak ilerleme durumunu --watch
izleyin.
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
azure-vote-front hizmeti için EXTERNAL-IP çıkışı başlangıçta beklemede olarak gösterilir.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
EXTERNAL-IP adresi beklemeden gerçek bir genel IP adresine geçtikten sonra kubectl izleme işlemini durdurmak için CTRL-C tuşlarını kullanın. Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Azure Vote uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.
Küme silme
Oluşturduğunuz kümeyi az aksarc delete
temizlemek için komutunu çalıştırın:
az aksarc delete --resource-group $aksclustername --name $resource_group