一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Container Canary在多個(gè)平臺(tái)上測(cè)試容器圖像

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Jacob Tomlinson ? 2022-05-13 17:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自帶容器模型在當(dāng)今的現(xiàn)代計(jì)算平臺(tái)上得到廣泛支持。換句話說,您可以在自定義軟件環(huán)境中提供自己的容器映像。

然而,用戶提供的容器必須滿足每個(gè)平臺(tái)的獨(dú)特要求,這可能因平臺(tái)而異。例如,您可能需要:

使用特定的非 root 用戶。

將主目錄放在某個(gè)位置。

安裝依賴軟件包。

在指定端口上運(yùn)行 web 應(yīng)用程序。

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

這在測(cè)試和持續(xù)集成( CI )環(huán)境中非常有用,可以避免容器中的回歸,同時(shí)允許容器開發(fā)人員快速移動(dòng)。

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

安裝集 Container Canary

Container Canary 是用 Golang 編寫的,并以靜態(tài)二進(jìn)制文件的形式分發(fā),使其易于移植,易于在 CI 環(huán)境中安裝。

要安裝它,請(qǐng)轉(zhuǎn)到 releases page 并下載適合您系統(tǒng)的發(fā)行版。例如,使用 x86 _ 64 處理器Linux 用戶將使用canary_linux_amd64二進(jìn)制文件。確保將以下命令中的VERSION替換為要安裝的版本。

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

Container Canary 還提供 sha256 總和來驗(yàn)證二進(jìn)制文件。

$ 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

現(xiàn)在,你可以把二進(jìn)制文件放在你的路徑上。

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

最后,驗(yàn)證它是否有效。

$ canary version
Container Canary Version: VERSION ...

用 Kubeflow 示例驗(yàn)證容器

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

Kubeflow 是設(shè)計(jì)、培訓(xùn)和推斷 machine learning 模型的流行平臺(tái)。 Kubeflow Notebooks 服務(wù)使您能夠在 Kubeflow 內(nèi)部啟動(dòng)基于 web 的開發(fā)環(huán)境。雖然 Kubeflow 社區(qū)為運(yùn)行 JupyterLab 、 RStudio 和 Visual Studio 代碼(代碼服務(wù)器) 等工具維護(hù)了默認(rèn)容器,但您也可以使用自己的軟件環(huán)境選擇自己的容器映像。

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

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

在端口 8888 上公開 HTTP 接口

kubeflow 在運(yùn)行時(shí)設(shè)置一個(gè)環(huán)境變量 NB _ PREFIX ,其中包含我們希望容器監(jiān)聽的 URL 路徑

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

以名為 jovyan 的用戶身份運(yùn)行:

jovyan 的主目錄應(yīng)該是/ home / jovyan

喬維安的 UID 應(yīng)該是 1000

在/ home / jovyan 安裝一個(gè)空 PVC ,成功啟動(dòng):

kubeflow 在/ home / jovyan 安裝了一個(gè) PVC ,以在 Pod 重啟期間保持狀態(tài)

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

該過程如以下示例所示:

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

既然有了清單,我就可以對(duì)容器進(jìn)行測(cè)試了。首先,我選擇了一個(gè)我知道不會(huì)通過要求的公共形象,比如流行的 web 服務(wù)器 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

毫不奇怪,這張圖片沒有通過驗(yàn)證。

接下來,我嘗試了一款設(shè)計(jì)用于 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

成功這張圖片通過了驗(yàn)證。

如果要在 Kubeflow 上創(chuàng)建圖像,可以用同樣的方法驗(yàn)證它們,并確信當(dāng)其他用戶來運(yùn)行它們時(shí),所做的更改不會(huì)導(dǎo)致問題。

編寫自己的驗(yàn)證清單

您還可以編寫自己的清單來驗(yàn)證容器。 Container Canary 可以幫助您確保您的容器清單將在您自己的部署和第三方平臺(tái)中運(yùn)行。它還幫助您在容器構(gòu)建上運(yùn)行單元測(cè)試。

每個(gè)清單都是一個(gè)以一些元數(shù)據(jù)開頭的 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

接下來,您可以為容器配置一些運(yùn)行時(shí)選項(xiàng)。當(dāng) Container Canary 啟動(dòng)圖像進(jìn)行驗(yàn)證時(shí),將使用這些選項(xiàng),并應(yīng)模仿在目標(biāo)平臺(tái)上設(shè)置的選項(xiàng)。其中包括環(huán)境變量、要公開的端口和要連接的卷。

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

然后,指定支票。檢查是針對(duì)容器運(yùn)行的測(cè)試,以確保其符合要求。每個(gè)檢查都包含一個(gè)與容器交互的探針。這些交互包括運(yùn)行命令、發(fā)出 HTTP 請(qǐng)求和 ping TCP 套接字。

Container Canary 中的探針是庫(kù)伯內(nèi)特斯的那些的超集,因此如果您以前使用過這些探針,應(yīng)該對(duì)它們很熟悉。

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檢查會(huì)在正在運(yùn)行的容器中運(yùn)行命令。如果命令以 0 退出,則檢查通過。

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

HTTP Get檢查對(duì)您的容器執(zhí)行HTTP GET請(qǐng)求。如果響應(yīng)代碼< 300 且可選響應(yīng)標(biāo)題匹配,則檢查通過。

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: "*"

有關(guān)更多信息,請(qǐng)參閱驗(yàn)證程序 API 參考。

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

$ 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 操作自動(dòng)化容器 Canary 的示例

現(xiàn)在,我已經(jīng)介紹了安裝 Container Canary、驗(yàn)證容器和編寫自己的清單,下面是一個(gè)快速的 CI 示例。

假設(shè)您想要構(gòu)建一個(gè)容器,該容器應(yīng)該在特定端口上運(yùn)行 web 應(yīng)用程序,并且還安裝了 fastapi 。在新的存儲(chǔ)庫(kù)中,您可以使用 Python 創(chuàng)建一個(gè)名為app.py的小型 Python web 應(yīng)用程序。

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")

然后可以創(chuàng)建Dockerfile將應(yīng)用程序打包到容器中。

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

現(xiàn)在,編寫一個(gè) Container Canary 驗(yàn)證器清單,測(cè)試容器映像,確保它在端口 5000 上運(yùn)行 web 服務(wù)器,并且安裝了 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"

最后,創(chuàng)建一個(gè)GitHub Actions配置來在 CI 中運(yùn)行它。我們?cè)诒纠羞x擇 GitHub Actions 是因?yàn)樗苁軞g迎、免費(fèi)且易于使用,但這種配置應(yīng)該適用于所有 CI 系統(tǒng)。

創(chuàng)建一個(gè)名為.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

現(xiàn)在,當(dāng)您將代碼推送到 GitHub 時(shí), Actions runner 會(huì)簽出代碼,安裝容器 Canary ,構(gòu)建容器映像,并使用canary validate對(duì)其進(jìn)行驗(yàn)證。

圖 1 在 GitHub 操作工作流中成功運(yùn)行 Canary 驗(yàn)證

工作流程已經(jīng)執(zhí)行,我們的集裝箱圖像已經(jīng)成功驗(yàn)證——而且很快!有關(guān)更多信息,請(qǐng)參閱 /jacobtomlinson/canary-ci-example GitHub repo 中此示例的所有代碼。

應(yīng)用你學(xué)到的東西

使用 Container Canary ,您可以為您的容器映像定義具體的接口,并驗(yàn)證它們,以確保您構(gòu)建的映像始終符合定義的規(guī)范。

如果您經(jīng)常構(gòu)建容器映像, Container Canary 在測(cè)試和 CI 環(huán)境中非常有用,因此它是測(cè)試工具包中的必備工具。容器開發(fā)人員可以成功地避免容器中的倒退,并更快地完成項(xiàng)目以節(jié)省時(shí)間。

關(guān)于作者

Jacob Tomlinson 是 NVIDIA 的高級(jí) Python 軟件工程師,專注于分布式系統(tǒng)的部署工具。他的工作包括維護(hù)開源項(xiàng)目,包括 RAPIDS 和 Dask 。 RAPIDS 是一套 GPU 加速開源 Python 工具,模擬 PyData 堆棧中的 API ,包括 NumPy 、 pandas 和 SciKit Learn 的 API 。 Dask 為分析提供了高級(jí)并行性,包括核心外計(jì)算、延遲計(jì)算和 PyData 堆棧的分布式執(zhí)行?,旣悺ず蓝驙柺?NVIDIA 全球云合作伙伴營(yíng)銷團(tuán)隊(duì)的成員。她參與了與合作伙伴的各種公司合作的規(guī)劃、物流和營(yíng)銷,最近重點(diǎn)關(guān)注 NVIDIA 和 Microsoft Azure 之間的工作?,旣愖≡谖餮艌D,在高科技市場(chǎng)工作了 10 多年。

審核編輯:郭婷


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19890

    瀏覽量

    235116
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9000

    瀏覽量

    153712
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213742
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    T113-i工業(yè)核心板支持Docker后,其性價(jià)比還將進(jìn)一步提升!圖2基于T113-i平臺(tái)實(shí)現(xiàn)Docker容器技術(shù) 如下為基于全志T113-i工業(yè)平臺(tái),演示Docker安裝、構(gòu)建鏡像
    發(fā)表于 07-17 11:05

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    性價(jià)比全志T113-i工業(yè)核心板支持Docker后,其性價(jià)比還將進(jìn)一步提升! 圖2基于T113-i平臺(tái)實(shí)現(xiàn)Docker容器技術(shù) 如下為基于全志T113-i工業(yè)平臺(tái),演示Docker安
    發(fā)表于 07-25 14:36

    想要學(xué)習(xí)DSP的平臺(tái)上進(jìn)行圖像處理,求推薦入門教材。

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

    求一種測(cè)試平臺(tái)上的阻抗測(cè)試方案

    求一種測(cè)試平臺(tái)上的阻抗測(cè)試方案
    發(fā)表于 05-06 09:13

    如何在嵌入式Linux系統(tǒng)平臺(tái)上設(shè)計(jì)建立圖像視頻?

    本文使用的系統(tǒng)硬件平臺(tái)采用Samsung公司的處理器S3C2410,并以此為基礎(chǔ),基于嵌入式Linux系統(tǒng)平臺(tái)上設(shè)計(jì)了建立圖像視頻的一種方法。
    發(fā)表于 06-08 06:10

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

    kata-container是目前比較熱門的安全容器項(xiàng)目,目前kata-container已經(jīng)支持arm64平臺(tái)上運(yùn)行。如果你想在arm6
    發(fā)表于 07-12 16:02

    虛擬儀器平臺(tái)上構(gòu)建便攜式車輛綜合測(cè)試系統(tǒng)

    虛擬儀器平臺(tái)上構(gòu)建便攜式車輛綜合測(cè)試系統(tǒng):摘 要:研究非接觸式測(cè)量系統(tǒng)在車輛道路實(shí)驗(yàn)中的應(yīng)用,提出了便攜式車輛運(yùn)動(dòng)參數(shù)綜合測(cè)試系統(tǒng)方案,對(duì)系統(tǒng)配置,
    發(fā)表于 07-09 23:30 ?12次下載

    虛擬儀器平臺(tái)上構(gòu)建便攜式車輛綜合測(cè)試系統(tǒng)

    虛擬儀器平臺(tái)上構(gòu)建便攜式車輛綜合測(cè)試系統(tǒng):􀁽研究非接觸式測(cè)量系統(tǒng)在車輛道路實(shí)驗(yàn)中的應(yīng)用,提出了便攜式車輛運(yùn)動(dòng)參數(shù)綜合測(cè)試系統(tǒng)方案,對(duì)系統(tǒng)配置,
    發(fā)表于 07-24 11:39 ?14次下載

    微軟的PowerShell 7.0多個(gè)平臺(tái)上都能用

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

    基于Arm的平臺(tái)上使用HALCON免費(fèi)下載

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

    蘋果M1芯片平臺(tái)上第二種惡意軟件曝光

    2月22日消息,據(jù)國(guó)外媒體報(bào)道,安全公司Red Canary發(fā)現(xiàn)了蘋果M1芯片平臺(tái)上第二種惡意軟件。
    的頭像 發(fā)表于 02-22 16:13 ?2645次閱讀

    智匯華云 | kata container virtiofs測(cè)試和技術(shù)分析

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

    Missing Container Metrics容器指標(biāo)收集工具

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

    AM335X平臺(tái)上運(yùn)行ubuntu系統(tǒng)和docker容器

    AM335X平臺(tái)上運(yùn)行ubuntu系統(tǒng)和docker容器
    發(fā)表于 11-01 08:26 ?1次下載
    <b class='flag-5'>在</b>AM335X<b class='flag-5'>平臺(tái)上</b>運(yùn)行ubuntu系統(tǒng)和docker<b class='flag-5'>容器</b>

    微軟發(fā)布Windows 11 Canary和Dev頻道照片應(yīng)用測(cè)試

    據(jù)報(bào)道,4月3日起,微軟正式Windows 11 Canary和Dev通道引入了基于Windows App SDK(WASDK)研發(fā)的圖片編輯器的測(cè)試版,實(shí)現(xiàn)了現(xiàn)代化的UI設(shè)計(jì)及全面升級(jí)的優(yōu)質(zhì)性能。
    的頭像 發(fā)表于 04-03 16:07 ?1076次閱讀