如何在 Amazon ECS 中將記憶體配置給任務?

2 分的閱讀內容
0

我想要使用 Amazon Elastic Container Service (Amazon ECS) 將記憶體配置給任務。

簡短說明

在 Amazon ECS 中,可以在任務層級和每個容器層級定義記憶體。在任務層級定義的記憶體是任務的記憶體硬性限制。在容器層級,有兩個參數可用來將記憶體配置給任務:memoryReservation (軟性限制) 和 memory (硬性限制)。對於 Amazon EC2 執行個體上託管的任務,任務層級記憶體欄位是選用欄位,可以使用任何值。如果指定了任務層級記憶體值,則容器層級記憶體值是選用項目。任務執行時,會從 Amazon ECS 容器執行個體的可用記憶體單元中減去每個參數的值。此計算是根據任務定義的軟性限制、硬性限制或任務層級記憶體進行。如需詳細資訊,請參閱叢集保留

**注意:**memorymemoryReservation 參數會設定為 Amazon ECS 任務定義的容器定義參數。如果您同時為容器層級的 memorymemoryReservation 指定值,則 memory 必須大於 memoryReservation。如果您指定 memoryReservation,則會從容器所在容器執行個體的可用記憶體資源減去該值。否則,將使用 memory 的值。如需詳細資訊,請參閱記憶體

解決方法

開始之前,請檢查您是否擁有包含 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的 Amazon ECS 叢集。如需建立叢集的詳細資訊,請參閱使用傳統主控台建立叢集。如需設定叢集和容器執行個體的詳細資訊,請參閱容器執行個體記憶體管理

檢視容器執行個體的記憶體配置

  1. 開啟 Amazon ECS 主控台
  2. 在導覽窗格中,選擇叢集
  3. 選擇您建立的叢集。
  4. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄選擇您建立的叢集所包含的容器執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體等於已註冊資料欄中的記憶體。
  5. 如需執行個體資源用量的統計資料,請使用 SSH 連線到執行個體,然後執行 docker stats 命令。

建立含有軟性限制的任務定義

  1. Amazon ECS 主控台的導覽窗格中,選擇任務定義
  2. 選擇建立新任務定義
  3. 針對啟動類型,選擇 EC2,然後選擇下一步
  4. 任務定義名稱中輸入名稱。
  5. 容器定義區段中,選擇新增容器
  6. 容器名稱中輸入名稱。
  7. 對於映像,輸入 nginx 或適合您環境的 Docker 映像。
  8. 對於記憶體限制 (MiB),選擇軟性限制,然後輸入 700
  9. 選擇新增,然後選擇建立

執行含有軟性限制的任務定義

  1. Amazon ECS 主控台的導覽窗格中,選擇叢集,然後選擇您建立的叢集。
  2. 選擇任務視圖,然後選擇執行新的任務
  3. 選擇啟動類型為 EC2,選擇您使用軟性限制建立的任務定義,然後選擇執行任務注意事項: 如果您是第一次使用 ECS,則可以使用先前建立的任務定義和叢集的名稱預先填入任務定義叢集
  4. 含有軟性限制的任務若上次狀態資料欄顯示為執行中時,請移至下一個步驟。
    注意:若要將任務狀態更新為執行中,請重新整理頁面。
  5. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體小於已註冊資料欄中的記憶體。
  6. 如需執行個體資源用量的統計資料,請使用 SSH 連線到執行個體,然後執行 docker stats 命令。
  7. 從導覽窗格中選擇叢集,然後選擇叢集。
  8. 選擇任務視圖,選取含有軟性限制的任務,然後選擇停止
  9. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體等於已註冊資料欄中的記憶體。

建立含有硬性限制的任務定義的新修訂版本

  1. Amazon ECS 主控台的導覽窗格中,選擇任務定義
  2. 選取您使用軟性限制建立的任務定義,然後選擇建立新修訂版本
  3. 容器定義區段的容器名稱資料欄中,選擇您為含有軟性限制的任務定義新增的容器。
  4. 對於記憶體限制 (MiB),選擇硬性限制,然後輸入 1000
  5. 選擇更新,然後選擇建立

執行含有硬性限制的修訂後任務定義

  1. Amazon ECS 主控台的導覽窗格中,選擇叢集,然後選擇您建立的叢集。
  2. 選擇任務視圖,然後選擇執行新的任務
  3. 選擇啟動類型為 EC2
  4. 對於任務定義,選擇含有您建立的硬性限制的任務定義,然後選擇執行任務
  5. 含有硬性限制的修訂後任務若上次狀態資料欄顯示為執行中時,請移至下一個步驟。
    注意:若要將任務狀態更新為執行中,請重新整理頁面。
  6. 選擇 ECS 執行個體視圖,然後從容器****執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的可用記憶體小於已註冊資料欄中的記憶體。
  7. 如需執行個體資源用量的統計資料,請使用 SSH 連線到執行個體,然後執行 docker stats 命令。
  8. 從導覽窗格中選擇叢集,然後選擇叢集。
  9. 選擇任務視圖,選取含有硬性限制的任務,然後選擇停止
  10. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體等於已註冊資料欄中的記憶體。

建立同時含有軟性限制和硬性限制的任務定義的新修訂版本

  1. Amazon ECS 主控台的導覽窗格中,選擇任務定義
  2. 選取您使用硬性限制建立的任務定義,然後選擇建立新修訂版本
  3. 容器定義區段的容器名稱資料欄中,選擇您為含有硬性限制的任務定義新增的容器。
  4. 對於記憶體限制 (MiB),選擇軟性限制,然後輸入 700
  5. 選擇新增硬性限制,然後輸入 1200
  6. 選擇更新,然後選擇建立

執行同時含有軟性限制和硬性限制的修訂後任務定義

  1. Amazon ECS 主控台的導覽窗格中,選擇叢集,然後選擇您建立的叢集。
  2. 選擇任務視圖,然後選擇執行新的任務
  3. 選擇啟動類型為 EC2
  4. 對於任務定義,選擇您同時使用軟性限制和硬性限制建立的任務定義,然後選擇執行任務
  5. 當任務的上次狀態資料欄顯示為執行中時,請移至下一個步驟。
    注意:若要將任務狀態更新為執行中,請重新整理頁面。
  6. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體小於已註冊資料欄中的記憶體。
  7. 如需執行個體資源用量的統計資料,請使用 SSH 連線到執行個體,然後執行 docker stats 命令。
  8. 從導覽窗格中選擇叢集,然後選擇叢集。
  9. 選擇任務視圖,選取同時含有軟性限制和硬性限制的任務,然後選擇停止
  10. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體等於已註冊資料欄中的記憶體。

建立含有任務層級記憶體限制的任務定義的新修訂版本

  1. Amazon ECS 主控台的導覽窗格中,選擇任務定義
  2. 選取您使用硬性和軟性限制建立的任務定義,然後選擇建立新修訂版本
  3. 任務大小區段下,針對**任務記憶體 (MiB)**輸入 1000
  4. 容器定義區段的容器名稱資料欄中,選擇您為含有硬性和軟性限制的任務定義新增的容器。
  5. 對於記憶體限制 (MiB),透過選擇右側的 x 圖示來移除軟性限制
  6. 接下來,對於硬性限制,透過選取值並予以刪除來移除值 1200
  7. 選擇更新,然後選擇建立

執行含有任務層級記憶體限制的修訂後任務定義

  1. Amazon ECS 主控台的導覽窗格中,選擇叢集,然後選擇您建立的叢集。
  2. 選擇任務視圖,然後選擇執行新的任務
  3. 選擇啟動類型EC2
  4. 對於任務定義,選擇您使用任務層級記憶體建立的任務定義,然後選擇執行任務
  5. 當任務的上次狀態資料欄顯示為執行中時,請移至下一個步驟。
    注意:若要將任務狀態更新為執行中,請重新整理頁面。
  6. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體小於已註冊資料欄中的記憶體。
  7. 如需執行個體資源用量的統計資料,請使用 SSH 連線到執行個體,然後執行 docker stats 命令。
    注意:您可能會發現 docker stats 命令顯示的記憶體限制可能不是容器的 1000 MiB。這是因為任務層級記憶體是由 ECS Agent 管理,而不是由 Docker 常駐程式管理。
  8. 從導覽窗格中選擇叢集,然後選擇叢集。
  9. 選擇任務視圖,選取含有任務層級記憶體的任務,然後選擇停止
  10. 選擇 ECS 執行個體視圖,然後從容器執行個體資料欄中選擇執行個體。
    注意:****詳細資料窗格會顯示可用資料欄中的記憶體等於已註冊資料欄中的記憶體。

相關資訊

Amazon ECS CloudWatch 指標

Amazon EC2 執行個體類型

限制容器對記憶體的存取

任務大小

AWS 官方
AWS 官方已更新 2 年前