Menyebarkan simpul infrastruktur di kluster Azure Red Hat OpenShift (ARO)
ARO memungkinkan Anda menggunakan set komputer infrastruktur untuk membuat komputer yang hanya menghosting komponen infrastruktur, seperti router default, registri kontainer terintegrasi, dan komponen untuk metrik dan pemantauan kluster. Komputer infrastruktur ini tidak dikenakan biaya OpenShift; mereka hanya dikenakan biaya Azure Compute.
Dalam penyebaran produksi, disarankan agar Anda menyebarkan tiga set komputer untuk menyimpan komponen infrastruktur. Masing-masing simpul ini dapat disebarkan ke zona ketersediaan yang berbeda untuk meningkatkan ketersediaan. Jenis konfigurasi ini memerlukan tiga set komputer yang berbeda; satu untuk setiap zona ketersediaan. Untuk panduan ukuran simpul infrastruktur, lihat Praktik infrastruktur yang direkomendasikan.
Beban kerja yang memenuhi syarat
Beban kerja infrastruktur berikut tidak dikenakan langganan pekerja Azure Red Hat OpenShift:
Layanan sarana kontrol Kubernetes dan Azure Red Hat OpenShift yang berjalan pada master
Router default
Registri gambar kontainer terintegrasi
Pengontrol Ingress berbasis HAProxy
Kumpulan metrik kluster, atau layanan pemantauan, termasuk komponen untuk memantau proyek yang ditentukan pengguna
Pengelogan agregat kluster
Penting
Menjalankan beban kerja selain jenis yang ditunjuk pada simpul infrastruktur dapat memengaruhi Perjanjian Tingkat Layanan (SLA) dan stabilitas kluster.
Sebelum Anda mulai
Agar Azure VM ditambahkan ke kluster ARO untuk dikenali sebagai simpul infrastruktur (dibandingkan dengan lebih banyak simpul pekerja) dan tidak dikenakan biaya OpenShift, kriteria berikut harus dipenuhi:
Simpul harus menjadi salah satu jenis instans berikut saja:
- Standard_E4s_v5
- Standard_E8s_v5
- Standard_E16s_v5
- Standard_E4as_v5
- Standard_E8as_v5
- Standard_E16as_v5
Tidak boleh ada lebih dari tiga simpul. Setiap simpul tambahan dikenakan biaya OpenShift.
Simpul harus memiliki tag Azure node_role : infra
Hanya beban kerja yang ditunjuk untuk simpul infrastruktur yang diizinkan. Semua beban kerja lainnya akan dianggap sebagai simpul pekerja ini dan dengan demikian dikenakan biaya. Ini juga dapat membatalkan SLA dan membahayakan stabilitas kluster.
Membuat set komputer infrastruktur
Gunakan templat di bawah ini untuk membuat definisi manifes untuk set komputer infrastruktur Anda.
Ganti semua bidang di antara "<>" dengan nilai spesifik Anda.
Misalnya, ganti
location: <REGION>
denganlocation: westus2
Untuk bantuan mengisi nilai yang diperlukan, lihat Perintah dan nilai.
Buat set komputer dengan perintah berikut:
oc create -f <machine-set-filename.yaml>
Untuk memverifikasi pembuatan set komputer, jalankan perintah berikut:
oc get machineset -n openshift-machine-api
Output perintah verifikasi akan terlihat mirip dengan di bawah ini:
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
Templat definisi manifes
Gunakan templat berikut dalam prosedur di atas untuk membuat definisi manifes untuk set komputer infrastruktur Anda:
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
Perintah dan nilai
Di bawah ini adalah beberapa perintah/nilai umum yang digunakan saat membuat dan menjalankan templat.
Mencantumkan semua set mesin:
oc get machineset -n openshift-machine-api
Dapatkan detail untuk set komputer tertentu:
oc get machineset <machineset_name> -n openshift-machine-api -o yaml
Grup sumber daya kluster:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}'
Grup sumber daya jaringan:
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.azure.networkResourceGroupName}'
ID Infrastruktur:
oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
Wilayah:
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}'
Subnet:
oc get machineset <machineset_name> -n openshift-machine-api -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}'
Versi:
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}'
Memindahkan beban kerja ke simpul infrastruktur baru
Gunakan instruksi di bawah ini untuk memindahkan beban kerja infrastruktur Anda ke simpul infrastruktur yang dibuat sebelumnya.
Ingress
Gunakan prosedur ini untuk pengontrol ingress tambahan yang mungkin Anda miliki di kluster.
Catatan
Jika aplikasi Anda memiliki persyaratan sumber daya ingress yang sangat tinggi, mungkin lebih baik untuk menyebarkannya di seluruh simpul pekerja atau set komputer khusus.
Atur
nodePlacement
pada keingresscontroller
node-role.kubernetes.io/infra
dan tingkatkanreplicas
agar sesuai dengan jumlah simpul infrastruktur: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"}]}}}'
Verifikasi bahwa Operator Pengontrol Ingress memulai pod pada node infrastruktur baru:
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>
Registri
Atur
nodePlacement
pada registri kenode-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"}]}}'
Verifikasi bahwa Operator Registri memulai pod pada simpul infrastruktur baru:
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>
Pemantauan klaster
Konfigurasikan tumpukan pemantauan kluster untuk menggunakan simpul infrastruktur.
Catatan
Ini akan mengambil alih kustomisasi lain ke tumpukan pemantauan kluster, jadi Anda mungkin ingin menggabungkan kustomisasi yang ada sebelum menjalankan perintah.
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
Verifikasi bahwa Operator Pemantauan OpenShift memulai pod pada simpul infrastruktur baru. Perhatikan bahwa beberapa simpul (seperti
prometheus-operator
) akan tetap berada di simpul master.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
Izinkan pod DNS berjalan pada simpul infrastruktur.
oc edit dns.operator/default
apiVersion: operator.openshift.io/v1 kind: DNS metadata: name: default spec: nodePlacement: tolerations: - operator: Exists
Verifikasi bahwa pod DNS dijadwalkan ke semua simpul infra.
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