Skip to content

Commit 3f58b44

Browse files
authored
Merge pull request #41316 from jeana-redhat/OSDOCS-2875
OSDOCS-2875: global Azure availability sets in 4.10
2 parents 2f92761 + b85ba58 commit 3f58b44

File tree

7 files changed

+25
-26
lines changed

7 files changed

+25
-26
lines changed

machine_management/creating-infrastructure-machinesets.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ For information about infrastructure nodes and which components can run on infra
1919
[id="creating-infrastructure-machinesets-production"]
2020
== Creating infrastructure machine sets for production environments
2121

22-
In a production deployment, it is recommended that you deploy at least three machine sets to hold infrastructure components. Both OpenShift Logging and {ProductName} deploy Elasticsearch, which requires three instances to be installed on different nodes. Each of these nodes can be deployed to different availability zones for high availability. A configuration like this requires three different machine sets, one for each availability zone.
22+
In a production deployment, it is recommended that you deploy at least three machine sets to hold infrastructure components. Both OpenShift Logging and {ProductName} deploy Elasticsearch, which requires three instances to be installed on different nodes. Each of these nodes can be deployed to different availability zones for high availability. A configuration like this requires three different machine sets, one for each availability zone. In global Azure regions that do not have multiple availability zones, you can use availability sets to ensure high availability.
2323

2424
[id="creating-infrastructure-machinesets-clouds"]
2525
=== Creating machine sets for different clouds

modules/machine-api-overview.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ Cluster autoscaler:: This resource is based on the upstream cluster autoscaler p
3232

3333
Machine health check:: The `MachineHealthCheck` resource detects when a machine is unhealthy, deletes it, and, on supported platforms, makes a new machine.
3434

35-
In {product-title} version 3.11, you could not roll out a multi-zone architecture easily because the cluster did not manage machine provisioning. Beginning with {product-title} version 4.1, this process is easier. Each machine set is scoped to a single zone, so the installation program sends out machine sets across availability zones on your behalf. And then because your compute is dynamic, and in the face of a zone failure, you always have a zone for when you must rebalance your machines. The autoscaler provides best-effort balancing over the life of a cluster.
35+
In {product-title} version 3.11, you could not roll out a multi-zone architecture easily because the cluster did not manage machine provisioning. Beginning with {product-title} version 4.1, this process is easier. Each machine set is scoped to a single zone, so the installation program sends out machine sets across availability zones on your behalf. And then because your compute is dynamic, and in the face of a zone failure, you always have a zone for when you must rebalance your machines. In global Azure regions that do not have multiple availability zones, you can use availability sets to ensure high availability. The autoscaler provides best-effort balancing over the life of a cluster.

modules/machine-health-checks-resource.adoc

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,19 @@ The `matchLabels` are examples only; you must map your machine groups based on y
5050
Short circuiting ensures that machine health checks remediate machines only when the cluster is healthy.
5151
Short-circuiting is configured through the `maxUnhealthy` field in the `MachineHealthCheck` resource.
5252

53-
If the user defines a value for the `maxUnhealthy` field,
54-
before remediating any machines, the `MachineHealthCheck` compares the value of `maxUnhealthy`
55-
with the number of machines within its target pool that it has determined to be unhealthy.
56-
Remediation is not performed if the number of unhealthy machines exceeds the `maxUnhealthy` limit.
53+
If the user defines a value for the `maxUnhealthy` field, before remediating any machines, the `MachineHealthCheck` compares the value of `maxUnhealthy` with the number of machines within its target pool that it has determined to be unhealthy. Remediation is not performed if the number of unhealthy machines exceeds the `maxUnhealthy` limit.
5754

5855
[IMPORTANT]
5956
====
6057
If `maxUnhealthy` is not set, the value defaults to `100%` and the machines are remediated regardless of the state of the cluster.
6158
====
6259

63-
The appropriate `maxUnhealthy` value depends on the scale of the cluster you deploy and how many machines the `MachineHealthCheck` covers. For example, you can use the `maxUnhealthy` value to cover multiple machine sets across multiple availability zones so that if you lose an entire zone, your `maxUnhealthy` setting prevents further remediation within the cluster.
60+
The appropriate `maxUnhealthy` value depends on the scale of the cluster you deploy and how many machines the `MachineHealthCheck` covers. For example, you can use the `maxUnhealthy` value to cover multiple machine sets across multiple availability zones so that if you lose an entire zone, your `maxUnhealthy` setting prevents further remediation within the cluster. In global Azure regions that do not have multiple availability zones, you can use availability sets to ensure high availability.
6461

6562
The `maxUnhealthy` field can be set as either an integer or percentage.
6663
There are different remediation implementations depending on the `maxUnhealthy` value.
6764

68-
=== Setting `maxUnhealthy` by using an absolute value
65+
=== Setting maxUnhealthy by using an absolute value
6966

7067
If `maxUnhealthy` is set to `2`:
7168

@@ -74,7 +71,7 @@ If `maxUnhealthy` is set to `2`:
7471

7572
These values are independent of how many machines are being checked by the machine health check.
7673

77-
=== Setting `maxUnhealthy` by using percentages
74+
=== Setting maxUnhealthy by using percentages
7875

7976
If `maxUnhealthy` is set to `40%` and there are 25 machines being checked:
8077

modules/machineset-yaml-azure.adoc

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,13 @@ endif::infra[]
7171
metadata:
7272
creationTimestamp: null
7373
labels:
74+
machine.openshift.io/cluster-api-machineset: <machineset_name> <4>
7475
ifndef::infra[]
7576
node-role.kubernetes.io/<role>: "" <2>
7677
endif::infra[]
7778
ifdef::infra[]
7879
node-role.kubernetes.io/infra: "" <2>
79-
taints: <4>
80+
taints: <5>
8081
- key: node-role.kubernetes.io/infra
8182
effect: NoSchedule
8283
endif::infra[]
@@ -95,10 +96,10 @@ endif::infra[]
9596
internalLoadBalancer: ""
9697
kind: AzureMachineProviderSpec
9798
ifndef::infra[]
98-
location: <region> <4>
99+
location: <region> <5>
99100
endif::infra[]
100101
ifdef::infra[]
101-
location: <region> <5>
102+
location: <region> <6>
102103
endif::infra[]
103104
managedIdentity: <infrastructure_id>-identity <1>
104105
metadata:
@@ -121,10 +122,10 @@ endif::infra[]
121122
vmSize: Standard_D4s_v3
122123
vnet: <infrastructure_id>-vnet <1>
123124
ifndef::infra[]
124-
zone: "1" <5>
125+
zone: "1" <6>
125126
endif::infra[]
126127
ifdef::infra[]
127-
zone: "1" <6>
128+
zone: "1" <7>
128129
endif::infra[]
129130
----
130131
<1> Specify the infrastructure ID that is based on the cluster ID that you set when you provisioned the cluster. If you have the OpenShift CLI installed, you can obtain the infrastructure ID by running the following command:
@@ -153,15 +154,17 @@ $ oc -n openshift-machine-api \
153154
ifndef::infra[]
154155
<2> Specify the node label to add.
155156
<3> Specify the infrastructure ID, node label, and region.
156-
<4> Specify the region to place machines on.
157-
<5> Specify the zone within your region to place machines on. Be sure that your region supports the zone that you specify.
157+
<4> Optional: Specify the machine set name to enable the use of availability sets. This setting only applies to new compute machines.
158+
<5> Specify the region to place machines on.
159+
<6> Specify the zone within your region to place machines on. Be sure that your region supports the zone that you specify.
158160
endif::infra[]
159161
ifdef::infra[]
160162
<2> Specify the `<infra>` node label.
161163
<3> Specify the infrastructure ID, `<infra>` node label, and region.
162-
<4> Specify a taint to prevent user workloads from being scheduled on infra nodes.
163-
<5> Specify the region to place machines on.
164-
<6> Specify the zone within your region to place machines on. Be sure that your region supports the zone that you specify.
164+
<4> Optional: Specify the machine set name to enable the use of availability sets. This setting only applies to new compute machines.
165+
<5> Specify a taint to prevent user workloads from being scheduled on infra nodes.
166+
<6> Specify the region to place machines on.
167+
<7> Specify the zone within your region to place machines on. Be sure that your region supports the zone that you specify.
165168

166169
endif::infra[]
167170

modules/migration-known-issues.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ spec:
3333
- 6666
3434
----
3535

36-
* If you perform direct volume migration with nodes that are in different availability zones, the migration might fail because the migrated pods cannot access the PVC. (link:https://bugzilla.redhat.com/show_bug.cgi?id=1947487[*BZ#1947487*])
36+
* If you perform direct volume migration with nodes that are in different availability zones or availability sets, the migration might fail because the migrated pods cannot access the PVC. (link:https://bugzilla.redhat.com/show_bug.cgi?id=1947487[*BZ#1947487*])

modules/nodes-scheduler-pod-affinity-about.adoc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
[id="nodes-scheduler-pod-affinity-about_{context}"]
77
= Understanding pod affinity
88

9-
_Pod affinity_ and _pod anti-affinity_ allow you to constrain which nodes your pod is eligible to be scheduled on based on the key/value labels on other pods.
9+
_Pod affinity_ and _pod anti-affinity_ allow you to constrain which nodes your pod is eligible to be scheduled on based on the key/value labels on other pods.
1010

1111
* Pod affinity can tell the scheduler to locate a new pod on the same node as other pods if the label selector on the new pod matches the label on the current pod.
1212
* Pod anti-affinity can prevent the scheduler from locating a new pod on the same node as pods with the same labels if the label selector on the new pod matches the label on the current pod.
1313
14-
For example, using affinity rules, you could spread or pack pods within a service or relative to pods in other services. Anti-affinity rules allow you to prevent pods of a particular service from scheduling on the same nodes as pods of another service that are known to interfere with the performance of the pods of the first service. Or, you could spread the pods of a service across nodes or availability zones to reduce correlated failures.
14+
For example, using affinity rules, you could spread or pack pods within a service or relative to pods in other services. Anti-affinity rules allow you to prevent pods of a particular service from scheduling on the same nodes as pods of another service that are known to interfere with the performance of the pods of the first service. Or, you could spread the pods of a service across nodes, availability zones, or availability sets to reduce correlated failures.
1515

1616
There are two types of pod affinity rules: _required_ and _preferred_.
1717

@@ -69,12 +69,12 @@ metadata:
6969
spec:
7070
affinity:
7171
podAntiAffinity: <1>
72-
preferredDuringSchedulingIgnoredDuringExecution: <2>
72+
preferredDuringSchedulingIgnoredDuringExecution: <2>
7373
- weight: 100 <3>
7474
podAffinityTerm:
7575
labelSelector:
7676
matchExpressions:
77-
- key: security <4>
77+
- key: security <4>
7878
operator: In <5>
7979
values:
8080
- S2
@@ -94,4 +94,3 @@ spec:
9494
====
9595
If labels on a node change at runtime such that the affinity rules on a pod are no longer met, the pod continues to run on the node.
9696
====
97-

post_installation_configuration/cluster-tasks.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ include::modules/nodes-scheduler-node-selectors-cluster.adoc[leveloffset=+2]
509509

510510
You can create a machine set to create machines that host only infrastructure components, such as the default router, the integrated container image registry, and components for cluster metrics and monitoring. These infrastructure machines are not counted toward the total number of subscriptions that are required to run the environment.
511511

512-
In a production deployment, it is recommended that you deploy at least three machine sets to hold infrastructure components. Both OpenShift Logging and {ProductName} deploy Elasticsearch, which requires three instances to be installed on different nodes. Each of these nodes can be deployed to different availability zones for high availability. A configuration like this requires three different machine sets, one for each availability zone.
512+
In a production deployment, it is recommended that you deploy at least three machine sets to hold infrastructure components. Both OpenShift Logging and {ProductName} deploy Elasticsearch, which requires three instances to be installed on different nodes. Each of these nodes can be deployed to different availability zones for high availability. A configuration like this requires three different machine sets, one for each availability zone. In global Azure regions that do not have multiple availability zones, you can use availability sets to ensure high availability.
513513

514514
For information on infrastructure nodes and which components can run on infrastructure nodes, see xref:../machine_management/creating-infrastructure-machinesets.adoc#creating-infrastructure-machinesets[Creating infrastructure machine sets].
515515

0 commit comments

Comments
 (0)