Skip to content

Commit 71d6177

Browse files
author
Manika Dhiman
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-stack-docs-pr into md-collect-logs-portal
2 parents f4f2414 + 89bd167 commit 71d6177

File tree

360 files changed

+6873
-2446
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

360 files changed

+6873
-2446
lines changed

.openpublishing.redirection.aks.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,13 +1371,18 @@
13711371
"redirect_document_id": false
13721372
},
13731373
{
1374-
"source_path": "AKS-Hybrid/offline-download.md",
1375-
"redirect_url": "/azure/aks/hybrid/aks-overview",
1374+
"source_path": "AKS-Hybrid/deploy-load-balancer.md",
1375+
"redirect_url": "/azure/aks/hybrid/deploy-load-balancer-cli",
13761376
"redirect_document_id": false
13771377
},
13781378
{
1379-
"source_path": "AKS-Hybrid/deploy-load-balancer.md",
1380-
"redirect_url": "/azure/aks/hybrid/deploy-load-balancer-cli",
1379+
"source_path": "AKS-Hybrid/kubernetes-rbac-azure-ad.md",
1380+
"redirect_url": "/azure/aks/hybrid/kubernetes-rbac-entra-id",
1381+
"redirect_document_id": false
1382+
},
1383+
{
1384+
"source_path": "AKS-Hybrid/infrastructure-components.md",
1385+
"redirect_url": "/azure/aks/hybrid/cluster-architecture",
13811386
"redirect_document_id": false
13821387
}
13831388
]

.openpublishing.redirection.json

Lines changed: 346 additions & 336 deletions
Large diffs are not rendered by default.

AKS-Hybrid/TOC.yml

Lines changed: 59 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,23 @@
99
href: supported-kubernetes-versions.md
1010
- name: Data collection
1111
href: data-collection.md
12-
- name: AKS enabled by Azure Arc
12+
- name: AKS on Azure Stack HCI 23H2
1313
expanded: true
1414
items:
1515
- name: What's new in AKS on Azure Stack HCI 23H2
1616
href: aks-whats-new-23h2.md
1717
- name: Concepts
1818
items:
19+
- name: Architecture
20+
href: cluster-architecture.md
1921
- name: Networking
2022
items:
2123
- name: Networking concepts
2224
href: aks-hci-network-system-requirements.md
2325
- name: Load balancer
24-
href: load-balancer-overview.md
25-
- name: Infrastructure component updates
26-
href: infrastructure-components.md
27-
- name: Cluster architecture
28-
href: cluster-architecture.md
26+
href: load-balancer-overview.md
27+
- name: Access and identity
28+
href: concepts-security-access-identity.md
2929
- name: Supported scale requirements
3030
href: scale-requirements.md
3131
- name: Azure Hybrid Benefit
@@ -47,7 +47,9 @@
4747
- name: Azure CLI
4848
href: aks-create-clusters-cli.md
4949
- name: Azure portal
50-
href: aks-create-clusters-portal.md
50+
href: aks-create-clusters-portal.md
51+
- name: Deploy to Azure using a quickstart template
52+
href: /samples/azure/azure-quickstart-templates/aks-on-ashci
5153
- name: Azure Resource Manager template
5254
href: resource-manager-quickstart.md
5355
- name: Networking
@@ -62,6 +64,18 @@
6264
href: deploy-load-balancer-portal.md
6365
# - name: Troubleshoot issues
6466
# href: load-balancer-troubleshoot.md
67+
- name: Download Kubernetes VHDs manually
68+
href: offline-download.md
69+
- name: Security and authentication
70+
items:
71+
- name: Use Azure RBAC for Kubernetes authorization
72+
href: azure-rbac-23h2.md
73+
- name: Use Kubernetes RBAC with Microsoft Entra ID
74+
href: kubernetes-rbac-23h2.md
75+
- name: Retrieve certificate-based admin kubeconfig
76+
href: retrieve-admin-kubeconfig.md
77+
- name: Restrict SSH access
78+
href: restrict-ssh-access.md
6579
- name: Storage
6680
items:
6781
- name: CSI storage drivers
@@ -76,28 +90,28 @@
7690
href: manage-node-pools.md
7791
- name: Use GPUs
7892
href: deploy-gpu-node-pool.md
79-
- name: Use labels in a Kubernetes cluster
93+
- name: Cluster management
94+
items:
95+
- name: Labels
8096
href: cluster-labels.md
97+
- name: Taints
98+
href: aks-arc-use-node-taints.md
8199
- name: Scale a Kubernetes cluster
82100
href: auto-scale-aks-arc.md
83101
- name: Upgrade Kubernetes clusters
84102
href: cluster-upgrade.md
85103
- name: Create Windows Server containers
86104
href: aks-create-containers.md
87-
- name: Deploy container images using Azure Container Registry
105+
- name: Integrate Azure Container Registry with a Kubernetes cluster
88106
href: deploy-container-registry.md
89-
- name: Security and authentication
90-
items:
91-
- name: Retrieve certificate-based admin kubeconfig
92-
href: retrieve-admin-kubeconfig.md
93-
- name: Restrict SSH access
94-
href: restrict-ssh-access.md
95107
- name: Monitoring and logging
96108
items:
97109
- name: Monitor Kubernetes object events
98110
href: kubernetes-monitor-object-events.md
99111
- name: Monitor Kubernetes audit events
100112
href: kubernetes-monitor-audit-events.md
113+
- name: Monitor logs reference
114+
href: kubernetes-monitor-metrics.md
101115
- name: Enable Container Insights
102116
href: /azure/azure-monitor/containers/kubernetes-monitoring-enable
103117
- name: Use on-premises monitoring
@@ -112,26 +126,24 @@
112126
href: aks-known-issues.md
113127
- name: Troubleshoot
114128
href: aks-troubleshoot.md
129+
- name: KubeAPIServer unreachable error
130+
href: kube-api-server-unreachable.md
115131
- name: Reference
116132
items:
117133
- name: Azure CLI
118134
href: /cli/azure/aksarc
119135
- name: REST API reference
120136
href: /rest/api/hybridcontainer/operation-groups
137+
- name: Resources
138+
items:
121139
- name: Azure Stack HCI
122140
href: /azure-stack/hci/index
123-
- name: Windows Admin Center (WAC)
124-
href: /windows-server/manage/windows-admin-center/understand/windows-admin-center
125141
- name: Azure hybrid cloud
126142
href: /hybrid
127-
- name: Windows Server
128-
href: /windows-server/
129-
- name: Release notes
130-
href: https://aka.ms/AKS-hybrid-Releasenotes
131-
- name: AKS Arc PowerShell
132-
href: ./reference/ps/index.md
133-
- name: Add-ons, extensions, and integrations
134-
href: add-ons.md
143+
- name: Azure Arc Jumpstart
144+
href: https://azurearcjumpstart.com/azure_arc_jumpstart/azure_arc_k8s/aks_stack_hci/
145+
- name: Azure roadmap
146+
href: https://azure.microsoft.com/roadmap/
135147
- name: AKS Edge Essentials
136148
items:
137149
- name: Overview
@@ -218,7 +230,7 @@
218230
href: aks-edge-licensing.md
219231
- name: Microsoft Software License Terms
220232
href: aks-edge-software-license-terms.md
221-
- name: AKS enabled by Azure Arc on VMware
233+
- name: AKS on VMware
222234
items:
223235
- name: Overview
224236
href: aks-vmware-overview.md
@@ -252,6 +264,20 @@
252264
href: aks-vmware-known-issues.md
253265
- name: Troubleshooting guide
254266
href: aks-vmware-troubleshooting-guide.md
267+
- name: Reference
268+
items:
269+
- name: aksarc CLI version 1.0.0b1
270+
items:
271+
- name: Commands
272+
href: aksarc.yml
273+
- name: logs
274+
href: logs.yml
275+
- name: nodepool
276+
href: nodepool.yml
277+
- name: vmsize
278+
href: vmsize.yml
279+
- name: vnet
280+
href: vnet.yml
255281
- name: AKS on Windows Server
256282
items:
257283
- name: Overview
@@ -434,7 +460,7 @@
434460
- name: Use Active Directory single sign-on
435461
href: ad-sso.md
436462
- name: Use Kubernetes RBAC with Microsoft Entra ID
437-
href: kubernetes-rbac-azure-ad.md
463+
href: kubernetes-rbac-entra-id.md
438464
- name: Use Azure RBAC with AKS clusters
439465
href: azure-rbac-aks-hybrid.md
440466
- name: Update certificate bundle on container hosts
@@ -525,19 +551,15 @@
525551
href: help-support.md
526552
- name: File bugs
527553
href: https://aka.ms/AKS-hybrid-issues
554+
- name: Release notes
555+
href: https://aka.ms/AKS-hybrid-Releasenotes
556+
- name: AKS Arc PowerShell
557+
href: ./reference/ps/index.md
558+
- name: Add-ons, extensions, and integrations
559+
href: add-ons.md
528560
- name: Architecture
529561
items:
530562
- name: Baseline architecture for AKS
531563
href: /azure/architecture/example-scenario/hybrid/aks-baseline
532564
- name: Network architecture for AKS
533565
href: /azure/architecture/example-scenario/hybrid/aks-network
534-
- name: Resources
535-
items:
536-
- name: Azure Arc Jumpstart
537-
href: https://azurearcjumpstart.com/azure_arc_jumpstart/azure_arc_k8s/aks_stack_hci/
538-
- name: Azure roadmap
539-
href: https://azure.microsoft.com/roadmap/
540-
- name: AKS roadmap
541-
href: https://aka.ms/k8sroadmap
542-
- name: AKS enabled Arc roadmap
543-
href: https://aka.ms/AKS-hybrid-roadmap

AKS-Hybrid/aks-arc-use-node-taints.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
title: Manage node taints for an AKS cluster
3+
description: Learn how to manage node taints in AKS on Azure Stack HCI 23H2
4+
ms.topic: how-to
5+
ms.custom: devx-track-azurecli
6+
ms.date: 06/03/2024
7+
author: sethmanheim
8+
ms.author: sethm
9+
ms.reviewer: abha
10+
ms.lastreviewed: 01/30/2024
11+
12+
---
13+
14+
# Use node taints in an AKS enabled by Azure Arc cluster
15+
16+
[!INCLUDE [hci-applies-to-23h2](includes/hci-applies-to-23h2.md)]
17+
18+
This article describes how to use node taints in an AKS cluster.
19+
20+
## Overview
21+
22+
The AKS scheduling mechanism is responsible for placing pods onto nodes and is based on the upstream Kubernetes scheduler, [kube-scheduler](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/). You can constrain a pod to run on particular nodes by instructing the node to reject a set of pods using [node taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/), which interact with the AKS scheduler.
23+
24+
Node taints work by marking a node so that the scheduler avoids placing certain pods on the marked nodes. You can place [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) on a pod to allow the scheduler to schedule that pod on a node with a matching taint. Taints and tolerations work together to help you control how the scheduler places pods onto nodes. For more information, see [example use cases of taints and tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#example-use-cases:~:text=not%20be%20evicted.-,Example%20Use%20Cases,-Taints%20and%20tolerations).
25+
26+
Taints are key-value pairs with an [effect](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/). There are three values for the effect field when using node taints: `NoExecute`, `NoSchedule`, and `PreferNoSchedule`.
27+
28+
- `NoExecute`: Pods already running on the node are immediately evicted if they don't have a matching toleration. If a pod has a matching toleration, it might be evicted if `tolerationSeconds` are specified.
29+
- `NoSchedule`: Only pods with a matching toleration are placed on this node. Existing pods aren't evicted.
30+
- `PreferNoSchedule`: The scheduler avoids placing any pods that don't have a matching toleration.
31+
32+
### Before you begin
33+
34+
- This article assumes you have an existing AKS cluster. If you need an AKS cluster, you can create one using [Azure CLI](aks-create-clusters-cli.md), Azure PowerShell, or the [Azure portal](aks-create-clusters-portal.md).
35+
- When you create a node pool, you can add taints to it. When you add a taint, all nodes within that node pool also get that taint.
36+
37+
> [!IMPORTANT]
38+
> You should add taints or labels to nodes for the entire node pool using `az aksarc nodepool`. We don't recommend using `kubectl` to apply taints or labels to individual nodes in a node pool.
39+
40+
### Set node pool taints
41+
42+
Create a node pool with a taint using the [`az aksarc nodepool add`](/cli/azure/aksarc/nodepool#az-aksarc-nodepool-add) command. Specify the name `taintnp` and use the `--node-taints` parameter to specify `sku=gpu:NoSchedule` for the taint:
43+
44+
```azurecli
45+
az aksarc nodepool add \
46+
--resource-group myResourceGroup \
47+
--cluster-name myAKSCluster \
48+
--name taintnp \
49+
--node-count 1 \
50+
--node-taints sku=gpu:NoSchedule \
51+
--no-wait
52+
```
53+
54+
Check the status of the node pool using the [`az aksarc nodepool list`](/cli/azure/aksarc/nodepool#az-aksarc-nodepool-list) command:
55+
56+
```azurecli
57+
az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
58+
```
59+
60+
The following example output shows that the `taintnp` node pool creates nodes with the specified `nodeTaints`:
61+
62+
```output
63+
[
64+
{
65+
...
66+
"count": 1,
67+
...
68+
"name": "taintnp",
69+
...
70+
"provisioningState": "Succeeded",
71+
...
72+
"nodeTaints": [
73+
"sku=gpu:NoSchedule"
74+
],
75+
...
76+
},
77+
...
78+
]
79+
```
80+
81+
The taint information is visible in Kubernetes for handling scheduling rules for nodes. The Kubernetes scheduler can use taints and tolerations to restrict which workloads can run on nodes.
82+
83+
- A *taint* is applied to a node that indicates only specific pods can be scheduled on them.
84+
- A *toleration* is then applied to a pod that allows them to "tolerate" a node's taint.
85+
86+
### Set node pool tolerations
87+
88+
In the previous step, you applied the `sku=gpu:NoSchedule` taint when you created the node pool. The following example YAML manifest uses a toleration to allow the Kubernetes scheduler to run an NGINX pod on a node in that node pool:
89+
90+
Create a file named **nginx-toleration.yaml** and copy/paste the following example YAML:
91+
92+
```yaml
93+
apiVersion: v1
94+
kind: Pod
95+
metadata:
96+
name: mypod
97+
spec:
98+
containers:
99+
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
100+
name: mypod
101+
resources:
102+
requests:
103+
cpu: 100m
104+
memory: 128Mi
105+
limits:
106+
cpu: 1
107+
memory: 2G
108+
tolerations:
109+
- key: "sku"
110+
operator: "Equal"
111+
value: "gpu"
112+
effect: "NoSchedule"
113+
```
114+
115+
Schedule the pod using the `kubectl apply` command:
116+
117+
```azurecli
118+
kubectl apply -f nginx-toleration.yaml
119+
```
120+
121+
It takes a few seconds to schedule the pod and pull the NGINX image.
122+
123+
Check the status using the [`kubectl describe pod`](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_describe/) command:
124+
125+
```azurecli
126+
kubectl describe pod mypod
127+
```
128+
129+
The following condensed example output shows that the `sku=gpu:NoSchedule` toleration is applied. In the **Events** section, the scheduler assigned the pod to the `moc-lbeof1gn6x3` node:
130+
131+
```output
132+
[...]
133+
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
134+
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
135+
sku=gpu:NoSchedule
136+
Events:
137+
Type Reason Age From Message
138+
---- ------ ---- ---- -------
139+
Normal Scheduled 54s default-scheduler Successfully assigned default/mypod to moc-lbeof1gn6x3
140+
Normal Pulling 53s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
141+
Normal Pulled 48s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting)
142+
Normal Created 48s kubelet Created container
143+
Normal Started 48s kubelet Started container
144+
```
145+
146+
Only pods that have this toleration applied can be scheduled on nodes in `taintnp`. Any other pods are scheduled in the **nodepool1** node pool. If you create more node pools, you can use taints and tolerations to limit what pods can be scheduled on those node resources.
147+
148+
### Update a cluster node pool to add a node taint
149+
150+
Update a cluster to add a node taint using the [`az aksarc update`](/cli/azure/aksarc/nodepool#az-aksarc-nodepool-update) command and the `--node-taints` parameter to specify `sku=gpu:NoSchedule` for the taint. All existing taints are replaced with the new values. The old taints are deleted:
151+
152+
```azurecli
153+
az aksarc update -g myResourceGroup --cluster-name myAKSCluster --name taintnp --node-taints "sku=gpu:NoSchedule"
154+
```
155+
156+
## Next steps
157+
158+
- [Use labels in an Azure Arc-enabled AKS cluster](cluster-labels.md).

AKS-Hybrid/aks-edge-howto-access-tpm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: rcheeran
55
ms.author: rcheeran
66
ms.topic: how-to
77
ms.date: 10/10/2023
8-
ms.custom: template-how-to
8+
ms.custom: template-how-to, linux-related-content
99
---
1010

1111
# TPM access for AKS Edge Essentials

AKS-Hybrid/aks-edge-howto-deploy-app.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: rcheeran
55
ms.author: rcheeran
66
ms.topic: how-to
77
ms.date: 05/01/2024
8-
ms.custom: template-how-to
8+
ms.custom: template-how-to, linux-related-content
99
---
1010

1111
# Deploy an application

0 commit comments

Comments
 (0)