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

  • Entegre container imaj kayıt

  • 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 ile birleştirilmiş 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üğümler node_role: infra Azure etiketine sahip olmalıdır

  • 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 değerlendirir ve dolayısıyla ücrete tabi olurlar. 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, location: <REGION> yerine location: westus2 yazın

  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: <VNET_NAME> 
          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}'

Vnet

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.

Uyarı

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 ayarını ingresscontroller üzerinde node-role.kubernetes.io/infra olarak ayarlayın ve replicas değerini, altyapı düğümlerinin sayısıyla eşleşecek şekilde artırın.

    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 sistemi

  1. nodePlacement kaydını kayıt defterinde node-role.kubernetes.io/infra olarak 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"}]}}'
    
  2. Kayıt Defteri İşleci'nin yeni altyapı düğümlerinde podları başlattığı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.

    Uyarı

    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>
    

Alan Adı Sistemi (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 altyapı 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