

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在專用執行個體上執行關鍵附加元件
<a name="critical-workload"></a>

在本主題中，您將了解如何部署具有 `CriticalAddonsOnly` 容差的工作負載，以便 EKS 自動模式將其排程到 `system` 節點集區上。

EKS 自動模式的內建 `system` 節點集區專為在專用執行個體上執行關鍵附加元件而設計。這種隔離確保了關鍵元件擁有專用資源，並與一般工作負載隔離開，從而提升了叢集的整體穩定性與效能。

本指南示範如何透過使用 `CriticalAddonsOnly` 容差和適當的節點選擇器，將附加元件部署到 `system` 節點集區。遵循這些步驟，您可以確保您的關鍵應用程式被排程到專用的 `system` 節點上，充分利用 EKS 自動模式的專用節點集區結構所帶來的隔離與資源分配優勢。

EKS 自動模式有兩個內建節點集區：`general-purpose` 和 `system`。如需詳細資訊，請參閱 [啟用或停用內建的 NodePool](set-builtin-node-pools.md)。

`system` 節點集區的用途是將關鍵附加元件隔離到不同的節點上。節點集區佈建的 `system` 節點帶有 `CriticalAddonsOnly` Kubernetes 污點。Kubernetes 只會將具有相應容差的 Pod 排程到這些節點上。如需詳細資訊，請參閱 Kubernetes 文件中的[污點和容差](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)。

## 先決條件
<a name="_prerequisites"></a>
+ 已啟用內建 `system` 節點集區的 EKS 自動模式叢集。如需詳細資訊，請參閱[啟用或停用內建的 NodePool](set-builtin-node-pools.md) 
+  `kubectl` 已安裝並已設定。如需詳細資訊，請參閱 [設定以使用 Amazon EKS](setting-up.md)。

## 程序
<a name="_procedure"></a>

請檢閱以下的範例 yaml。記下下列組態：
+  `nodeSelector`：這會將工作負載與內建的 `system` 節點集區建立關聯。此節點集區必須透過 AWS API 啟用。如需詳細資訊，請參閱 [啟用或停用內建的 NodePool](set-builtin-node-pools.md)。
+  `tolerations`：此容差用於克服 `system` 節點集區中節點上的 `CriticalAddonsOnly` 污點。

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      nodeSelector:
        karpenter.sh/nodepool: system
      tolerations:
      - key: "CriticalAddonsOnly"
        operator: "Exists"
      containers:
      - name: app
        image: nginx:latest
        resources:
          requests:
            cpu: "500m"
            memory: "512Mi"
```

要更新工作負載使其在 `system` 節點集區上執行，您需要：

1. 更新現有工作負載，以新增上述的下列組態：
   +  `nodeSelector` 
   +  `tolerations` 

1. 使用 `kubectl apply` 將更新後的工作負載部署到您的叢集 

更新工作負載之後，它將在專用節點上執行。