Azure Red Hat OpenShift (ARO) kümesinde altyapı düğümlerini dağıtma
ARO, varsayılan yönlendirici, tümleşik kapsayıcı kayıt defteri ve küme ölçümleri ve izleme bileşenleri gibi yalnızca altyapı bileşenlerini barındıran makineler oluşturmak için altyapı makine kümelerini kullanmanıza olanak tanır. Bu altyapı makineleri OpenShift maliyetlerine tabi değildir; yalnızca Azure İşlem maliyetlerine tabidir.
Üretim dağıtımında, altyapı bileşenlerini barındırmak için üç makine kümesi dağıtmanız önerilir. Kullanılabilirliği artırmak için bu düğümlerin her biri farklı kullanılabilirlik alanlarına dağıtılabilir. Bu tür bir yapılandırma için üç farklı makine kümesi gerekir; her kullanılabilirlik alanı için bir tane. Altyapı düğümü boyutlandırma yönergeleri için bkz . Önerilen altyapı uygulamaları.
Nitelikli iş yükleri
Aşağıdaki altyapı iş yüklerine Azure Red Hat OpenShift çalışan abonelikleri uygulanmaz:
Ana bilgisayarlarda çalışan Kubernetes ve Azure Red Hat OpenShift denetim düzlemi hizmetleri
Varsayılan yönlendirici
Tümleşik kapsayıcı görüntüsü kayıt defteri
HAProxy tabanlı Giriş Denetleyicisi
Kullanıcı tanımlı projeleri izlemeye yönelik bileşenler de dahil olmak üzere küme ölçümleri koleksiyonu veya izleme hizmeti
Küme toplu günlük kaydı
Önemli
Altyapı düğümlerinde belirlenen tür dışındaki iş yüklerinin çalıştırılması Hizmet Düzeyi Sözleşmesi'ni (SLA) ve kümenin kararlılığını etkileyebilir.
Başlamadan önce
ARO kümesine eklenen Azure VM'lerinin altyapı düğümü olarak tanınması (daha fazla çalışan düğümü yerine) ve OpenShift ücreti alınmaması için aşağıdaki ölçütlere uyulmalıdır:
Düğümler yalnızca aşağıdaki örnek türlerinden biri olmalıdır:
- Standard_E4s_v5
- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E4as_v5
- Standard_E8as_v5
- Standard_E16as_v5
En fazla üç düğüm olabilir. Tüm ek düğümlerden OpenShift ücreti alınır.
Düğümlerin azure etiketi node_role olmalıdır: infra
Yalnızca altyapı düğümleri için belirlenen iş yüklerine izin verilir. Diğer tüm iş yükleri bu çalışan düğümlerini kabul eder ve bu nedenle ücrete tabidir. Bu, SLA'yı geçersiz kılabilir ve kümenin kararlılığını tehlikeye atabilir.
Altyapı makine kümeleri oluşturma
Altyapı makine kümenizin bildirim tanımını oluşturmak için aşağıdaki şablonu kullanın.
"<>" arasındaki tüm alanları kendi değerlerinizle değiştirin.
Örneğin şununla değiştirin
location: <REGION>
:location: westus2
Gerekli değerlerin doldurulmasıyla ilgili yardım için bkz . Komutlar ve değerler.
Aşağıdaki komutla makine kümesini oluşturun:
oc create -f <machine-set-filename.yaml>
Makine kümesinin oluşturulmasını doğrulamak için aşağıdaki komutu çalıştırın:
oc get machineset -n openshift-machine-api
Doğrulama komutunun çıkışı aşağıdakine benzer olmalıdır:
NAME DESIRED CURRENT READY AVAILABLE AGE ok0608-vkxvw-infra-westus21 1 1 1 1 165M ok0608-vkxvw-worker-westus21 1 1 1 1 4H24M ok0608-vkxvw-worker-westus22 1 1 1 1 4H24M ok0608-vkxvw-worker-westus23 1 1 1 1 4H24M
Bildirim tanımı şablonu
Altyapı makine kümenizin bildirim tanımını oluşturmak için yukarıdaki yordamda aşağıdaki şablonu kullanın:
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <INFRASTRUCTURE_ID>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
name: <INFRASTRUCTURE_ID>-infra-<REGION><ZONE>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <INFRASTRUCTURE_ID>
machine.openshift.io/cluster-api-machineset: <INFRASTRUCTURE_ID>-infra-<REGION><ZONE>
template:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-cluster: <INFRASTRUCTURE_ID>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <INFRASTRUCTURE_ID>-infra-<REGION><ZONE>
spec:
metadata:
creationTimestamp: null
labels:
machine.openshift.io/cluster-api-machineset: <OPTIONAL: Specify the machine set name to enable the use of availability sets. This setting only applies to new compute machines.>
node-role.kubernetes.io/infra: ''
providerSpec:
value:
apiVersion: azureproviderconfig.openshift.io/v1beta1
credentialsSecret:
name: azure-cloud-credentials
namespace: openshift-machine-api
image:
offer: aro4
publisher: azureopenshift
sku: <SKU>
version: <VERSION>
kind: AzureMachineProviderSpec
location: <REGION>
metadata:
creationTimestamp: null
natRule: null
networkResourceGroup: <NETWORK_RESOURCE_GROUP>
osDisk:
diskSizeGB: 128
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
resourceGroup: <CLUSTER_RESOURCE_GROUP>
tags:
node_role: infra
subnet: <SUBNET_NAME>
userDataSecret:
name: worker-user-data
vmSize: <Standard_E4s_v5, Standard_E8s_v5, Standard_E16s_v5>
vnet: aro-vnet
zone: <ZONE>
taints:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
Komutlar ve değerler
Aşağıda, şablon oluşturulurken ve yürütülürken kullanılan bazı yaygın komutlar/değerler yer almaktadır.
Tüm makine kümelerini listeleyin:
oc get machineset -n openshift-machine-api
Belirli bir makine kümesinin ayrıntılarını alın:
oc get machineset <machineset_name> -n openshift-machine-api -o yaml
Küme kaynak grubu:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}'
Ağ kaynak grubu:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.networkResourceGroupName}'
Altyapı Kimliği:
oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
Bölge:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.location}'
SKU:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.image.sku}'
Alt ağ:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}'
Sürüm:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.image.version}'
Sanal ağ:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}'
İş yüklerini yeni altyapı düğümlerine taşıma
Altyapı iş yüklerinizi daha önce oluşturulan altyapı düğümlerine taşımak için aşağıdaki yönergeleri kullanın.
Giriş
Kümede sahip olabileceğiniz ek giriş denetleyicileri için bu yordamı kullanın.
Not
Uygulamanızın çok yüksek giriş kaynağı gereksinimleri varsa, bunları çalışan düğümlerine veya ayrılmış bir makine kümesine yaymak daha iyi olabilir.
nodePlacement
için değeriniingresscontroller
node-role.kubernetes.io/infra
ayarlayın ve öğesini altyapı düğümlerinin sayısıyla eşleşecek şekilde artırınreplicas
:oc patch -n openshift-ingress-operator ingresscontroller default --type=merge \ -p='{"spec":{"replicas":3,"nodePlacement":{"nodeSelector":{"matchLabels":{"node-role.kubernetes.io/infra":""}},"tolerations":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/infra","operator":"Exists"}]}}}'
Giriş Denetleyicisi İşleci'nin yeni altyapı düğümlerinde podları başlatdığını doğrulayın:
oc -n openshift-ingress get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES router-default-69f58645b7-6xkvh 1/1 Running 0 66s 10.129.6.6 cz-cluster-hsmtw-infra-aro-machinesets-eastus-3-l6dqw <none> <none> router-default-69f58645b7-vttqz 1/1 Running 0 66s 10.131.4.6 cz-cluster-hsmtw-infra-aro-machinesets-eastus-1-vr56r <none> <none> router-default-6cb5ccf9f5-xjgcp 1/1 Terminating 0 23h 10.131.0.11 cz-cluster-hsmtw-worker-eastus2-xj9qx <none> <none>
Kayıt Defteri
kayıt defterinde değerini
nodePlacement
olaraknode-role.kubernetes.io/infra
ayarlayın:oc patch configs.imageregistry.operator.openshift.io/cluster --type=merge \ -p='{"spec":{"affinity":{"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"namespaces":["openshift-image-registry"],"topologyKey":"kubernetes.io/hostname"},"weight":100}]}},"logLevel":"Normal","managementState":"Managed","nodeSelector":{"node-role.kubernetes.io/infra":""},"tolerations":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/infra","operator":"Exists"}]}}'
Kayıt Defteri İşleci'nin yeni altyapı düğümlerinde podları başlatdığını doğrulayın:
oc -n openshift-image-registry get pods -l "docker-registry" -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES image-registry-84cbd76d5d-cfsw7 1/1 Running 0 3h46m 10.128.6.7 cz-cluster-hsmtw-infra-aro-machinesets-eastus-2-kljml <none> <none> image-registry-84cbd76d5d-p2jf9 1/1 Running 0 3h46m 10.129.6.7 cz-cluster-hsmtw-infra-aro-machinesets-eastus-3-l6dqw <none> <none>
Küme izleme
Altyapı düğümlerini kullanmak için küme izleme yığınını yapılandırın.
Not
Bu, küme izleme yığınındaki diğer özelleştirmeleri geçersiz kılar, bu nedenle komutu çalıştırmadan önce mevcut özelleştirmelerinizi birleştirmek isteyebilirsiniz.
cat << EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: |+ alertmanagerMain: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" prometheusK8s: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" prometheusOperator: {} grafana: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" k8sPrometheusAdapter: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" kubeStateMetrics: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" telemeterClient: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" openshiftStateMetrics: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" thanosQuerier: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: "NoSchedule" key: "node-role.kubernetes.io/infra" operator: "Exists" EOF
OpenShift İzleme İşleci'nin yeni altyapı düğümlerinde podları başlatdığını doğrulayın. Bazı düğümlerin (örneğin
prometheus-operator
) ana düğümlerde kalacağını unutmayın.oc -n openshift-monitoring get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES alertmanager-main-0 6/6 Running 0 2m14s 10.128.6.11 cz-cluster-hsmtw-infra-aro-machinesets-eastus-2-kljml <none> <none> alertmanager-main-1 6/6 Running 0 2m46s 10.131.4.11 cz-cluster-hsmtw-infra-aro-machinesets-eastus-1-vr56r <none> <none> cluster-monitoring-operator-5bbfd998c6-m9w62 2/2 Running 0 28h 10.128.0.23 cz-cluster-hsmtw-master-1 <none> <none> grafana-599d4b948c-btlp2 3/3 Running 0 2m48s 10.131.4.10 cz-cluster-hsmtw-infra-aro-machinesets-eastus-1-vr56r <none> <none> kube-state-metrics-574c5bfdd7-f7fjk 3/3 Running 0 2m49s 10.131.4.8 cz-cluster-hsmtw-infra-aro-machinesets-eastus-1-vr56r <none> <none>
DNS
DNS podlarının altyapı düğümlerinde çalışmasına izin verin.
oc edit dns.operator/default
apiVersion: operator.openshift.io/v1 kind: DNS metadata: name: default spec: nodePlacement: tolerations: - operator: Exists
DNS podlarının tüm infra düğümlerinde zamanlandığını doğrulayın.
oc get ds/dns-default -n openshift-dns
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
dns-default 7 7 7 7 7 kubernetes.io/os=linux 35d
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin