Aracılığıyla paylaş


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

  1. Altyapı makine kümenizin bildirim tanımını oluşturmak için aşağıdaki şablonu kullanın.

  2. "<>" arasındaki tüm alanları kendi değerlerinizle değiştirin.

    Örneğin şununla değiştirin location: <REGION> : location: westus2

  3. Gerekli değerlerin doldurulmasıyla ilgili yardım için bkz . Komutlar ve değerler.

  4. Aşağıdaki komutla makine kümesini oluşturun: oc create -f <machine-set-filename.yaml>

  5. 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.

  1. nodePlacement için değerini ingresscontroller 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"}]}}}'
    
  2. 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

  1. kayıt defterinde değerini nodePlacement olarak node-role.kubernetes.io/infraayarlayı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"}]}}'
    
  2. 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

  1. 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
    
  2. 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

  1. 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
    
  2. 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