色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Container Canary在多個平臺上測試容器圖像

星星科技指導員 ? 來源:NVIDIA ? 作者:Jacob Tomlinson ? 2022-05-13 17:05 ? 次閱讀

自帶容器模型在當今的現代計算平臺上得到廣泛支持。換句話說,您可以在自定義軟件環境中提供自己的容器映像。

然而,用戶提供的容器必須滿足每個平臺的獨特要求,這可能因平臺而異。例如,您可能需要:

使用特定的非 root 用戶。

將主目錄放在某個位置。

安裝依賴軟件包。

在指定端口上運行 web 應用程序。

保持容器圖像符合這些任意要求可能是一項挑戰。因此,我們迫切希望引入一個名為 Container Canary 的新開源工具來捕獲這些需求,并針對它們進行自動測試。 Container Canary 提供了一個規范,用于將這些需求記錄為可檢入版本控制的清單。然后,可以使用canary CLI 工具根據該清單驗證容器。

這在測試和持續集成( CI )環境中非常有用,可以避免容器中的回歸,同時允許容器開發人員快速移動。

$ canary validate --file somespec.yaml foo/bar:latest
Validating foo/bar: latest against somespec 

安裝集 Container Canary

Container Canary 是用 Golang 編寫的,并以靜態二進制文件的形式分發,使其易于移植,易于在 CI 環境中安裝。

要安裝它,請轉到 releases page 并下載適合您系統的發行版。例如,使用 x86 _ 64 處理器Linux 用戶將使用canary_linux_amd64二進制文件。確保將以下命令中的VERSION替換為要安裝的版本。

$ curl -L https://github.com/NVIDIA/container-canary/releases/download/VERSION/canary_linux_amd64 > canary_linux_amd64

Container Canary 還提供 sha256 總和來驗證二進制文件。

$ curl -L https://github.com/NVIDIA/container-canary/releases/download/VERSION/canary_linux_amd64.sha256sum > canary_linux_amd64.sha256sum $ sha256sum --check --status canary_linux_amd64.sha256sum

現在,你可以把二進制文件放在你的路徑上。

$ chmod +x canary_linux_amd64 $ mv canary_linux_amd64 /usr/local/bin/canary

最后,驗證它是否有效。

$ canary version
Container Canary Version: VERSION ...

用 Kubeflow 示例驗證容器

安裝了 Container Canary 之后,就可以開始驗證容器了。 /examples/ GitHub 目錄包含一些流行容器平臺的清單,包括 Kubeflow example 。您可以使用這些清單立即開始。

Kubeflow 是設計、培訓和推斷 machine learning 模型的流行平臺。 Kubeflow Notebooks 服務使您能夠在 Kubeflow 內部啟動基于 web 的開發環境。雖然 Kubeflow 社區為運行 JupyterLab 、 RStudio 和 Visual Studio 代碼(代碼服務器) 等工具維護了默認容器,但您也可以使用自己的軟件環境選擇自己的容器映像。

要求清單 指定自定義容器必須滿足哪些條件才能在 Kubeflow 筆記本上正確運行。該列表如下所示:

Kubeflow 筆記本電腦要使用容器映像,映像必須:

在端口 8888 上公開 HTTP 接口

kubeflow 在運行時設置一個環境變量 NB _ PREFIX ,其中包含我們希望容器監聽的 URL 路徑

kubeflow 使用 iFrame ,因此請確保您的應用程序集訪問控制允許源代碼:*在 HTTP 響應頭中

以名為 jovyan 的用戶身份運行:

jovyan 的主目錄應該是/ home / jovyan

喬維安的 UID 應該是 1000

在/ home / jovyan 安裝一個空 PVC ,成功啟動:

kubeflow 在/ home / jovyan 安裝了一個 PVC ,以在 Pod 重啟期間保持狀態

對于 Container Canary ,我們已經在示例清單中列出了這些要求。如果您曾經編寫過 Kubernetes 吊艙清單,那么您應該很熟悉這種語法。您可以看到,每個需求都以探針的形式寫出來,Container Canary 對著您的容器運行,以檢查是否滿足了需求。

該過程如以下示例所示:

apiVersion: container-canary.nvidia.com/v1
kind: Validator
name: kubeflow
description: Kubeflow notebooks
documentation: https://www.kubeflow.org/docs/components/notebooks/container-images/#custom-images
env: - name: NB_PREFIX value: /hub/jovyan/
ports: - port: 8888 protocol: TCP
volumes: - mountPath: /home/jovyan
checks: - name: user description: User is jovyan probe: exec: command: - /bin/sh - -c - "[ $(whoami) = jovyan ]" - name: uid description: User ID is 1000 probe: exec: command: - /bin/sh - -c - "id | grep uid=1000" - name: home description:  Home directory is /home/jovyan probe: exec: command: - /bin/sh - -c - "[ $HOME = /home/jovyan ]" - name: http description: Exposes an HTTP interface on port 8888 probe: httpGet: path: / port: 8888 initialDelaySeconds: 10 - name: NB_PREFIX description: Correctly routes the NB_PREFIX probe: httpGet: path: /hub/jovyan/lab port: 8888 initialDelaySeconds: 10 - name: allow-origin-all description: " Sets 'Access-Control-Allow-Origin: *' header" probe: httpGet: path: / port: 8888 responseHttpHeaders: - name: Access-Control-Allow-Origin value: "*" initialDelaySeconds: 10

既然有了清單,我就可以對容器進行測試了。首先,我選擇了一個我知道不會通過要求的公共形象,比如流行的 web 服務器 NGINX

$ canary validate --file https://github.com/NVIDIA/container-canary/raw/main/examples/kubeflow.yaml nginx:latest Cannot find nginx:latest, pulling…
Validating nginx:latest against kubeflow Home directory is /home/jovyan [failed]  User is jovyan [failed] User ID is 1000 [failed]  Exposes an HTTP interface on port 8888 [failed]  Sets 'Access-Control-Allow-Origin: *' header [failed]  Correctly routes the NB_PREFIX [failed]
validation failed

毫不奇怪,這張圖片沒有通過驗證。

接下來,我嘗試了一款設計用于 Kubeflow 筆記本電腦的官方 Kubeflow 圖片

$ canary validate --file https://github.com/NVIDIA/container-canary/raw/main/examples/kubeflow.yaml public.ecr.aws/j1r0q0g6/notebooks/notebook-servers/jupyter-pytorch-cuda:v1.5.0 Cannot find public.ecr.aws/j1r0q0g6/notebooks/notebook-servers/jupyter-pytorch-cuda:v1.5.0, pulling…
Validating public.ecr.aws/j1r0q0g6/notebooks/notebook-servers/jupyter-pytorch-cuda:v1.5.0 against kubeflow Home directory is /home/jovyan [passed]  User is jovyan [passed]  User ID is 1000 [passed]  Sets 'Access-Control-Allow-Origin: *' header [passed]  Correctly routes the NB_PREFIX [passed]  Exposes an HTTP interface on port 8888 [passed]
validation passed

成功這張圖片通過了驗證。

如果要在 Kubeflow 上創建圖像,可以用同樣的方法驗證它們,并確信當其他用戶來運行它們時,所做的更改不會導致問題。

編寫自己的驗證清單

您還可以編寫自己的清單來驗證容器。 Container Canary 可以幫助您確保您的容器清單將在您自己的部署和第三方平臺中運行。它還幫助您在容器構建上運行單元測試。

每個清單都是一個以一些元數據開頭的 YAML 文件。

# Manifest versioning
apiVersion: container-canary.nvidia.com/v1
kind: Validator # Metadata
name: foo # The name of the platform that this manifest validates for
description: Foo runs containers for you # Optional, A description of that platform
documentation: https://example.com # Optional, A link to the documentation that defines the container requirements in prose

接下來,您可以為容器配置一些運行時選項。當 Container Canary 啟動圖像進行驗證時,將使用這些選項,并應模仿在目標平臺上設置的選項。其中包括環境變量、要公開的端口和要連接的卷。

env: - name: NB_PREFIX value: /hub/jovyan/
ports: - port: 8888 protocol: TCP
volumes: - mountPath: /home/jovyan

然后,指定支票。檢查是針對容器運行的測試,以確保其符合要求。每個檢查都包含一個與容器交互的探針。這些交互包括運行命令、發出 HTTP 請求和 ping TCP 套接字。

Container Canary 中的探針是庫伯內特斯的那些的超集,因此如果您以前使用過這些探針,應該對它們很熟悉。

checks: - name: mycheck # Name of the check description: Ensuring a thing # Description of what is being checked (will be used in output) probe: ... # A probe to run

exec檢查會在正在運行的容器中運行命令。如果命令以 0 退出,則檢查通過。

checks: - name: uid description: User ID is 1234 probe: exec: command: - /bin/sh - -c - "id | grep uid=1234"

HTTP Get檢查對您的容器執行HTTP GET請求。如果響應代碼< 300 且可選響應標題匹配,則檢查通過。

checks: - name: http description: Exposes an HTTP interface on port 80 probe: httpGet: path: / port: 80 httpHeaders: # Optional, headers to set in the request - name: Foo-Header value: "myheader" responseHttpHeaders: # Optional, headers that you expect to see in the response - name: Access-Control-Allow-Origin value: "*"

有關更多信息,請參閱驗證程序 API 參考

編寫清單后,可以使用canary來測試帶有清單的容器。

$ canary validate --file examples/awesome.yaml your/container:latest
Validating your/container:latest against awesome Required packages are installed [passed]  Expected services are running [passed]  Your container is awesome [passed]
validation passed

使用 GitHub 操作自動化容器 Canary 的示例

現在,我已經介紹了安裝 Container Canary、驗證容器和編寫自己的清單,下面是一個快速的 CI 示例。

假設您想要構建一個容器,該容器應該在特定端口上運行 web 應用程序,并且還安裝了 fastapi 。在新的存儲庫中,您可以使用 Python 創建一個名為app.py的小型 Python web 應用程序。

from fastapi import FastAPI
import uvicorn app = FastAPI() @app.get("/")
def read_root(): return {"Hello": "World"} @app.get("/foo")
def foo(): return {"foo": "bar"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=5000, log_level="info")

然后可以創建Dockerfile將應用程序打包到容器中。

FROM python COPY app.py /app.py RUN pip install fastapi uvicorn[standard] EXPOSE 5000 CMD python /app.py

現在,編寫一個 Container Canary 驗證器清單,測試容器映像,確保它在端口 5000 上運行 web 服務器,并且安裝了 Python 。叫它canary-validator.yaml

apiVersion: container-canary.nvidia.com/v1
kind: Validator
name: example
description: Container Canary CI Example
env: []
ports: - port: 5000 protocol: TCP
volumes: []
checks: - name: http description: Exposes an HTTP interface on port 5000 probe: httpGet: path: /foo port: 5000 failureThreshold: 30 - name: python description: Has Python installed probe: exec: command: - /bin/sh - -c - "which python"

最后,創建一個GitHub Actions配置來在 CI 中運行它。我們在本例中選擇 GitHub Actions 是因為它很受歡迎、免費且易于使用,但這種配置應該適用于所有 CI 系統。

創建一個名為.github/workflows/ci.yaml的文件。

name: ci on: push: pull_request: jobs: canary: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Install Container Canary run: | curl -L https://github.com/NVIDIA/container-canary/releases/download/v0.2.0/canary_linux_amd64 > /usr/local/bin/canary chmod +x /usr/local/bin/canary - name: Build Container run: docker build -t foo/canary-ci-example:latest . - name: Validate container run: canary validate --file canary-validator.yaml foo/canary-ci-example:latest

現在,當您將代碼推送到 GitHub 時, Actions runner 會簽出代碼,安裝容器 Canary ,構建容器映像,并使用canary validate對其進行驗證。

圖 1 在 GitHub 操作工作流中成功運行 Canary 驗證

工作流程已經執行,我們的集裝箱圖像已經成功驗證——而且很快!有關更多信息,請參閱 /jacobtomlinson/canary-ci-example GitHub repo 中此示例的所有代碼。

應用你學到的東西

使用 Container Canary ,您可以為您的容器映像定義具體的接口,并驗證它們,以確保您構建的映像始終符合定義的規范。

如果您經常構建容器映像, Container Canary 在測試和 CI 環境中非常有用,因此它是測試工具包中的必備工具。容器開發人員可以成功地避免容器中的倒退,并更快地完成項目以節省時間。

關于作者

Jacob Tomlinson 是 NVIDIA 的高級 Python 軟件工程師,專注于分布式系統的部署工具。他的工作包括維護開源項目,包括 RAPIDS 和 Dask 。 RAPIDS 是一套 GPU 加速開源 Python 工具,模擬 PyData 堆棧中的 API ,包括 NumPy 、 pandas 和 SciKit Learn 的 API 。 Dask 為分析提供了高級并行性,包括核心外計算、延遲計算和 PyData 堆棧的分布式執行。瑪麗·豪厄爾是 NVIDIA 全球云合作伙伴營銷團隊的成員。她參與了與合作伙伴的各種公司合作的規劃、物流和營銷,最近重點關注 NVIDIA 和 Microsoft Azure 之間的工作。瑪麗住在西雅圖,在高科技市場工作了 10 多年。

審核編輯:郭婷


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19396

    瀏覽量

    230718
  • 接口
    +關注

    關注

    33

    文章

    8685

    瀏覽量

    151652
  • Linux
    +關注

    關注

    87

    文章

    11336

    瀏覽量

    210100
收藏 人收藏

    評論

    相關推薦

    ARM平臺實現Docker容器技術

    T113-i工業核心板支持Docker后,其性價比還將進一步提升!圖2基于T113-i平臺實現Docker容器技術 如下為基于全志T113-i工業平臺,演示Docker安裝、構建鏡像
    發表于 07-17 11:05

    ARM平臺實現Docker容器技術

    性價比全志T113-i工業核心板支持Docker后,其性價比還將進一步提升! 圖2基于T113-i平臺實現Docker容器技術 如下為基于全志T113-i工業平臺,演示Docker安
    發表于 07-25 14:36

    想要學習DSP的平臺上進行圖像處理,求推薦入門教材。

    各位大神,本人想要學習DSP的平臺上進行圖像處理,但基礎比較差。圖像處理的算法是有基礎的,但是總覺得這兩者結合很困難,希望大神告訴我下有什么好方法入門,或者看哪些教材
    發表于 05-20 10:29

    求一種測試平臺上的阻抗測試方案

    求一種測試平臺上的阻抗測試方案
    發表于 05-06 09:13

    如何在嵌入式Linux系統平臺上設計建立圖像視頻?

    本文使用的系統硬件平臺采用Samsung公司的處理器S3C2410,并以此為基礎,基于嵌入式Linux系統平臺上設計了建立圖像視頻的一種方法。
    發表于 06-08 06:10

    arm的云服務器外樹莓派4上安裝kata-container

    kata-container是目前比較熱門的安全容器項目,目前kata-container已經支持arm64平臺上運行。如果你想在arm6
    發表于 07-12 16:02

    如何在Layerscape平臺上啟用5G模塊?

    想在 Layerscape 平臺上使用 5G 模組?隨附的應用說明將幫助您做到這一點。 該 AN 將幫助您: 1.Layerscape平臺上設置5G環境 2. 將 5G 模塊連接
    發表于 05-17 06:24

    虛擬儀器平臺上構建便攜式車輛綜合測試系統

    虛擬儀器平臺上構建便攜式車輛綜合測試系統:摘 要:研究非接觸式測量系統在車輛道路實驗中的應用,提出了便攜式車輛運動參數綜合測試系統方案,對系統配置,
    發表于 07-09 23:30 ?12次下載

    虛擬儀器平臺上構建便攜式車輛綜合測試系統

    虛擬儀器平臺上構建便攜式車輛綜合測試系統:􀁽研究非接觸式測量系統在車輛道路實驗中的應用,提出了便攜式車輛運動參數綜合測試系統方案,對系統配置,
    發表于 07-24 11:39 ?14次下載

    微軟的PowerShell 7.0多個平臺上都能用

    從早期的MS-DOS到后來的Windows CMD再到如今的PowerShell,微軟終端工具方面不斷精進,現在又發布了全新的PowerShell 7.0,開源跨平臺,可在Windows、Linux、macOS各個平臺上管理異
    的頭像 發表于 03-06 08:46 ?2067次閱讀

    基于Arm的平臺上使用HALCON免費下載

    基于Arm的平臺上使用HALCON免費下載
    發表于 12-08 17:28 ?0次下載
    <b class='flag-5'>在</b>基于Arm的<b class='flag-5'>平臺上</b>使用HALCON免費下載

    智匯華云 | kata container virtiofs測試和技術分析

    云原生技術已經成為加快企業數字化轉型的一個不折不扣的風向標。而以容器為代表的云原生技術正在成為釋放云價值的最短路徑。本期智匯華云,帶大家一起了解和體驗安全容器kata container的?些特性
    的頭像 發表于 07-15 14:07 ?1503次閱讀
    智匯華云 | kata <b class='flag-5'>container</b> virtiofs<b class='flag-5'>測試</b>和技術分析

    Missing Container Metrics容器指標收集工具

    ./oschina_soft/missing-container-metrics.zip
    發表于 05-12 14:24 ?1次下載
    Missing <b class='flag-5'>Container</b> Metrics<b class='flag-5'>容器</b>指標收集工具

    AM335X平臺上運行ubuntu系統和docker容器

    AM335X平臺上運行ubuntu系統和docker容器
    發表于 11-01 08:26 ?1次下載
    <b class='flag-5'>在</b>AM335X<b class='flag-5'>平臺上</b>運行ubuntu系統和docker<b class='flag-5'>容器</b>

    微軟發布Windows 11 Canary和Dev頻道照片應用測試

    據報道,4月3日起,微軟正式Windows 11 Canary和Dev通道引入了基于Windows App SDK(WASDK)研發的圖片編輯器的測試版,實現了現代化的UI設計及全面升級的優質性能。
    的頭像 發表于 04-03 16:07 ?824次閱讀
    主站蜘蛛池模板: 久久亚洲网站| poronovideos动物狗猪| 亚洲国产精品一区二区久久第| 亚洲精品蜜夜内射| 99re这里只有精品视频| 国产亚洲精品视频在线网| 年轻的的小婊孑2中文字幕| 翁公吮她的花蒂和奶水| 3344永久在线观看视频免费| 国产精品久久国产三级国不卡顿| 久久AV国产麻豆HD真实乱| 日韩国产精品欧美一区二区| 在线看片成人免费视频| 国产成人精品久久一区二区三区| 么公一夜要了我一八次视频HD| 亚州精品永久观看视频| 成人高清网站| 免费。色婬网站| 亚洲一区在线视频观看| 国产精品久久久久久熟妇吹潮软件| 免费可以看黄的视频s色| 亚洲一日韩欧美中文字幕在线| 岛国片在线看| 欧美伦理片第7页| 用震蛋调教女性下面视频| 国产午夜精品一区二区| 色哟哟tv| 德国xxxx| 色婷婷AV99XX| 超碰视频97av| 青青娱乐网| 999久久久国产| 久久婷婷五月综合色情| 亚洲精品无码久久久久A片空| 国产传媒在线播放| 日韩亚洲国产欧美免费观看| jizz黑丝| 日本高清免费在线观看| bt成人种子| 欧美美女性生活| 扒开老师大腿猛进AAA片邪恶|