Infrastruktúra-csomópontok üzembe helyezése Egy Azure Red Hat OpenShift (ARO) fürtben
Az ARO lehetővé teszi, hogy infrastruktúra-gépkészletek használatával olyan gépeket hozzon létre, amelyek csak infrastruktúra-összetevőket üzemeltetnek, például az alapértelmezett útválasztót, az integrált tárolóregisztrációs adatbázist, valamint a fürtmetrikák és -monitorozás összetevőit. Ezek az infrastruktúra-gépek nem járnak OpenShift-költségekkel; csak Azure Compute-költségekkel járnak.
Éles környezetben ajánlott három gépcsoportot üzembe helyezni az infrastruktúra-összetevők tárolásához. Ezek a csomópontok különböző rendelkezésre állási zónákban helyezhetők üzembe a rendelkezésre állás növelése érdekében. Az ilyen típusú konfigurációhoz három különböző gépkészletre van szükség; az egyes rendelkezésre állási zónákhoz. Az infrastruktúracsomópontok méretezési útmutatóját az ajánlott infrastruktúra-eljárások című témakörben talál.
Minősített számítási feladatok
Az alábbi infrastruktúra-számítási feladatok nem járnak Azure Red Hat OpenShift-feldolgozó-előfizetésekkel:
A Kubernetes és az Azure Red Hat OpenShift vezérlősík-szolgáltatásai, amelyek főkiszolgálókon futnak
Az alapértelmezett útválasztó
Az integrált tárolórendszerkép-beállításjegyzék
A HAProxy-alapú bejövőforgalom-vezérlő
A fürtmetrikagyűjtemény vagy a monitorozási szolgáltatás, beleértve a felhasználó által definiált projektek monitorozására szolgáló összetevőket is
Fürt által összesített naplózás
Fontos
Az infrastruktúracsomópontokon a kijelölt típustól eltérő számítási feladatok futtatása hatással lehet a szolgáltatásiszint-szerződésre (SLA) és a fürt stabilitására.
Mielőtt elkezdené
Ahhoz, hogy az ARO-fürthöz hozzáadott Azure-beli virtuális gépeket infrastruktúracsomópontokként lehessen felismerni (a több feldolgozó csomópont helyett), és ne kelljen OpenShift-díjat fizetni, a következő feltételeknek kell teljesülniük:
A csomópontoknak csak az alábbi példánytípusok egyikének kell lenniük:
- Standard_E4s_v5
- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E4as_v5
- Standard_E8as_v5
- Standard_E16as_v5
Legfeljebb három csomópont lehet. Minden további csomópontért OpenShift-díjat számítunk fel.
A csomópontoknak rendelkezniük kell node_role Azure-címkével : infra
Csak az infrastruktúra-csomópontokhoz kijelölt számítási feladatok engedélyezettek. Minden más számítási feladat ezeket a munkavégző csomópontokat tekintené, és így a díjköteles. Ez az SLA-t is érvénytelenítheti, és veszélyeztetheti a fürt stabilitását.
Infrastruktúra-gépkészletek létrehozása
Az alábbi sablonnal létrehozhatja az infrastruktúra-gépcsoport jegyzékdefinícióját.
Cserélje le a "<>" közötti összes mezőt a megadott értékekre.
Például cserélje le a következőre
location: <REGION>
:location: westus2
A szükséges értékek kitöltéséhez a Parancsok és értékek című témakörben talál segítséget.
Hozza létre a gépkészletet a következő paranccsal:
oc create -f <machine-set-filename.yaml>
A gépkészlet létrehozásának ellenőrzéséhez futtassa a következő parancsot:
oc get machineset -n openshift-machine-api
Az ellenőrzési parancs kimenetének az alábbihoz hasonlóan kell kinéznie:
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
Jegyzékdefiníció-sablon
A fenti eljárásban a következő sablonnal hozhatja létre az infrastruktúra-gépcsoport jegyzékdefinícióját:
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
Parancsok és értékek
Az alábbiakban néhány gyakori parancsot/értéket talál a sablon létrehozásakor és végrehajtásakor.
Az összes gépcsoport listázása:
oc get machineset -n openshift-machine-api
Egy adott gépcsoport részleteinek lekérése:
oc get machineset <machineset_name> -n openshift-machine-api -o yaml
Fürterőforrás-csoport:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}'
Hálózati erőforráscsoport:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.networkResourceGroupName}'
Infrastruktúra azonosítója:
oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
Régió:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.location}'
Termékváltozat:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.image.sku}'
Alhálózat:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}'
Verzió:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.image.version}'
Virtuális hálózat:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}'
Számítási feladatok áthelyezése az új infrastruktúra-csomópontokra
Az alábbi utasításokat követve helyezze át az infrastruktúra számítási feladatait a korábban létrehozott infrastruktúra-csomópontokra.
Bejövő forgalom
Használja ezt az eljárást a fürtben található további bejövőforgalom-vezérlőkhöz.
Feljegyzés
Ha az alkalmazás nagyon magas bemeneti erőforrásigényekkel rendelkezik, akkor jobb lehet a munkavégző csomópontok vagy egy dedikált gépcsoport között elosztani őket.
Állítsa be a
nodePlacement
ingresscontroller
bekapcsoltnode-role.kubernetes.io/infra
értéket, és növelje azreplicas
infrastruktúra-csomópontok számának megfelelő értéket: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"}]}}}'
Ellenőrizze, hogy a bejövőforgalom-vezérlő operátora podokat indít-e az új infrastruktúracsomópontokon:
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>
Beállításjegyzék
Állítsa a
nodePlacement
beállításjegyzékben a következőrenode-role.kubernetes.io/infra
: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"}]}}'
Ellenőrizze, hogy a beállításjegyzék-operátor podokat indít-e az új infrastruktúra-csomópontokon:
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>
Fürtmonitorozás
Konfigurálja a fürtfigyelési vermet az infrastruktúra-csomópontok használatára.
Feljegyzés
Ez felülírja a fürtmonitorozási verem egyéb testreszabásait, ezért érdemes lehet egyesíteni a meglévő testreszabásokat a parancs futtatása előtt.
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
Ellenőrizze, hogy az OpenShift Monitorozási operátor podokat indít-e az új infrastruktúra-csomópontokon. Vegye figyelembe, hogy egyes csomópontok (például
prometheus-operator
) a fő csomópontokon maradnak.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
Engedélyezze a DNS-podok futtatását az infrastruktúra-csomópontokon.
oc edit dns.operator/default
apiVersion: operator.openshift.io/v1 kind: DNS metadata: name: default spec: nodePlacement: tolerations: - operator: Exists
Ellenőrizze, hogy a DNS-podok az összes infracsomópontra vannak-e ütemezve.
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