Distribuera infrastrukturnoder i ett Azure Red Hat OpenShift-kluster (ARO)
Med ARO kan du använda infrastrukturdatoruppsättningar för att skapa datorer som endast är värdar för infrastrukturkomponenter, till exempel standardroutern, det integrerade containerregistret och komponenterna för klustermått och övervakning. Dessa infrastrukturdatorer medför inte OpenShift-kostnader. de medför endast Azure Compute-kostnader.
I en produktionsdistribution rekommenderar vi att du distribuerar tre datoruppsättningar för att lagra infrastrukturkomponenter. Var och en av dessa noder kan distribueras till olika tillgänglighetszoner för att öka tillgängligheten. Den här typen av konfiguration kräver tre olika datoruppsättningar. en för varje tillgänglighetszon. Vägledning för storleksändring av infrastrukturnoder finns i Rekommenderade infrastrukturmetoder.
Kvalificerade arbetsbelastningar
Följande infrastrukturarbetsbelastningar medför inte Azure Red Hat OpenShift-arbetsprenumerationer:
Kubernetes- och Azure Red Hat OpenShift-kontrollplanstjänster som körs på huvudservrar
Standardrouter
Det integrerade containeravbildningsregistret
DEN HAProxy-baserade ingresskontrollanten
Klustermåttsamlingen eller övervakningstjänsten, inklusive komponenter för övervakning av användardefinierade projekt
Klusteraggregerad loggning
Viktigt!
Om du kör andra arbetsbelastningar än de avsedda typerna på infrastrukturnoderna kan det påverka serviceavtalet (SLA) och klustrets stabilitet.
Innan du börjar
För att virtuella Azure-datorer som läggs till i ett ARO-kluster ska kunna identifieras som infrastrukturnoder (till skillnad från fler arbetsnoder) och inte debiteras en OpenShift-avgift måste följande kriterier uppfyllas:
Noderna måste endast vara en av följande instanstyper:
- Standard_E4s_v5
- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E4as_v5
- Standard_E8as_v5
- Standard_E16as_v5
Det får inte finnas fler än tre noder. Eventuella ytterligare noder debiteras en OpenShift-avgift.
Noderna måste ha en Azure-tagg med node_role: infra
Endast arbetsbelastningar som är avsedda för infrastrukturnoder tillåts. Alla andra arbetsbelastningar skulle anse dessa arbetsnoder och därmed omfattas av avgiften. Detta kan också göra serviceavtalet ogiltigt och äventyra klustrets stabilitet.
Skapa infrastrukturdatoruppsättningar
Använd mallen nedan för att skapa manifestdefinitionen för din infrastrukturdatoruppsättning.
Ersätt alla fält mellan "<>" med dina specifika värden.
Ersätt till exempel
location: <REGION>
medlocation: westus2
Information om hur du fyller i nödvändiga värden finns i Kommandon och värden.
Skapa datoruppsättningen med följande kommando:
oc create -f <machine-set-filename.yaml>
Kontrollera att datoruppsättningen har skapats genom att köra följande kommando:
oc get machineset -n openshift-machine-api
Utdata från verifieringskommandot bör se ut ungefär så hä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
Mall för manifestdefinition
Använd följande mall i proceduren ovan för att skapa manifestdefinitionen för din infrastrukturdatoruppsättning:
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
Kommandon och värden
Nedan visas några vanliga kommandon/värden som används när du skapar och kör mallen.
Visa en lista över alla datoruppsättningar:
oc get machineset -n openshift-machine-api
Hämta information om en specifik datoruppsättning:
oc get machineset <machineset_name> -n openshift-machine-api -o yaml
Klusterresursgrupp:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}'
Nätverksresursgrupp:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.networkResourceGroupName}'
Infrastruktur-ID:
oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
Region:
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}'
Undernät:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}'
Version:
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}'
Flytta arbetsbelastningar till de nya infrastrukturnoderna
Följ anvisningarna nedan om du vill flytta dina infrastrukturarbetsbelastningar till de infrastrukturnoder som skapades tidigare.
Ingress
Använd den här proceduren för eventuella ytterligare ingresskontrollanter som du kan ha i klustret.
Kommentar
Om ditt program har mycket höga krav på inkommande resurser kan det vara bättre att sprida dem över arbetsnoder eller en dedikerad datoruppsättning.
nodePlacement
Ange påingresscontroller
tillnode-role.kubernetes.io/infra
och ökareplicas
för att matcha antalet infrastrukturnoder: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"}]}}}'
Kontrollera att ingressstyrenhetsoperatorn startar poddar på de nya infrastrukturnoderna:
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>
Register
nodePlacement
Ange i registret tillnode-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"}]}}'
Kontrollera att registeroperatören startar poddar på de nya infrastrukturnoderna:
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>
Klusterövervakning
Konfigurera klusterövervakningsstacken så att den använder infrastrukturnoderna.
Kommentar
Detta åsidosätter alla andra anpassningar till klusterövervakningsstacken, så du kanske vill sammanfoga dina befintliga anpassningar innan du kör kommandot.
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
Kontrollera att OpenShift Monitoring Operator startar poddar på de nya infrastrukturnoderna. Observera att vissa noder (till exempel
prometheus-operator
) kommer att finnas kvar på huvudnoder.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
Tillåt att DNS-poddarna körs på infrastrukturnoderna.
oc edit dns.operator/default
apiVersion: operator.openshift.io/v1 kind: DNS metadata: name: default spec: nodePlacement: tolerations: - operator: Exists
Kontrollera att DNS-poddar schemaläggs till alla infranoder.
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
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för