日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

发布dotNetCore程序到Kubernetes

發(fā)布時(shí)間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 发布dotNetCore程序到Kubernetes 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇《Mac中搭建Kubernetes》介紹了怎樣在Mac中搭建單節(jié)點(diǎn)的Kubernetes,本文將編寫一個(gè)dotNetCore的示例程序,并發(fā)布到Kubernetes中。

環(huán)境

基本步驟

  • 創(chuàng)建dotnetCore示例項(xiàng)目;

  • 本地搭建私有registry,或者使用DockerHub,本文采用搭建私有倉庫的方式;

  • 將dotnetCore示例項(xiàng)目發(fā)布到私有倉庫中;

  • 發(fā)布私有倉庫鏡像到Kubernetes

  • 創(chuàng)建示例項(xiàng)目

    1、在命令行執(zhí)行命令創(chuàng)建一個(gè)名為k8s-netcore-demo的項(xiàng)目

    dotnet?new?webApp?-o?k8s-netcore-demo?--no-httpsno-https

    2、將示例程序運(yùn)行起來

    cd?k8s-netcore-demodotnet?run
    dotnet?run

    運(yùn)行正常的話,訪問http://localhost:5000會(huì)出現(xiàn)下圖界面

    搭建私有倉庫

    docker?pull?registrydocker?run?-d?-p?8888:5000?--restart=always?registry
    docker?run?-d?-p?8888:5000?--restart=always?registry

    發(fā)布netcore程序到私有倉庫

    1、發(fā)布netcore程序

    dotnet?publish

    2、在publish目錄中創(chuàng)建Dockfile文件,文件內(nèi)容如下:

    FROM?microsoft/dotnet:2.1-aspnetcore-runtimeCOPY?.?/appWORKDIR?/appEXPOSE?80/tcpENTRYPOINT?["dotnet",?"k8s-netcore-demo.dll"]2.1-aspnetcore-runtime
    COPY?.?/app
    WORKDIR?/app
    EXPOSE?80/tcp
    ENTRYPOINT?["dotnet",?"k8s-netcore-demo.dll"]

    3、將netcore程序編譯成Docker鏡像

    docker?build?-t?k8s-netcore-demo?.

    4、將鏡像發(fā)布到私有倉庫

    docker?tag?k8s-netcore-demo?localhost:8888/k8s-netcore-demodocker?push?localhost:8888/k8s-netcore-demo8888/k8s-netcore-demo
    docker?push?localhost:8888/k8s-netcore-demo

    默認(rèn)情況下,你執(zhí)行docker push時(shí)會(huì)出現(xiàn)下面錯(cuò)誤

    在Mac中的Docker中做如下設(shè)置即可解決

    設(shè)置好重啟Docker之后,再次執(zhí)行docker push,可以正常將鏡像推送到私有倉庫中。

    推送完成后,瀏覽器中訪問http://localhost:8888/v2/_catalog,如果如下圖所示,說明推送成功了。

    發(fā)布鏡像到Kubernetes

    1、創(chuàng)建Kubernetes的部署文件deploy.yaml,部署文件為yaml文件格式。文件內(nèi)容如下:

    apiVersion:?apps/v1kind:?Deploymentmetadata:??name:?k8s-netcore-demo??namespace:?k8s-netcore??labels:????k8s-app:?k8s-netcore-demospec:??replicas:?2??selector:????matchLabels:??????k8s-app:?k8s-netcore-demo??template:????metadata:??????labels:????????k8s-app:?k8s-netcore-demo????spec:??????containers:??????-?name:?k8s-netcore-demo????????image:?localhost:8888/k8s-netcore-demo????????ports:????????-?containerPort:?80??---#?-------------------?Service?-------------------?#kind:?ServiceapiVersion:?v1metadata:??labels:????k8s-app:?k8s-netcore-demo??name:?k8s-netcore-demo??namespace:?k8s-netcorespec:??type:?NodePort??ports:????-?port:?80??????targetPort:?80??selector:????k8s-app:?k8s-netcore-demo
    kind:?Deployment
    metadata:
    ??name:?k8s-netcore-demo
    ??namespace:?k8s-netcore
    ??labels:
    ????k8s-app:?k8s-netcore-demo
    spec:
    ??replicas:?2
    ??selector:
    ????matchLabels:
    ??????k8s-app:?k8s-netcore-demo
    ??template:
    ????metadata:
    ??????labels:
    ????????k8s-app:?k8s-netcore-demo
    ????spec:
    ??????containers:
    ??????-?name:?k8s-netcore-demo
    ????????image:?localhost:8888/k8s-netcore-demo
    ????????ports:
    ????????-?containerPort:?80??
    ---
    #?-------------------?Service?-------------------?#
    kind:?Service
    apiVersion:?v1
    metadata:
    ??labels:
    ????k8s-app:?k8s-netcore-demo
    ??name:?k8s-netcore-demo
    ??namespace:?k8s-netcore
    spec:
    ??type:?NodePort
    ??ports:
    ????-?port:?80
    ??????targetPort:?80
    ??selector:
    ????k8s-app:?k8s-netcore-demo

    上面配置文件中屬性的含義不用先去弄清楚,保證程序能夠正常跑起來是關(guān)鍵。

    2、因?yàn)樵赿eploy.yaml文件中指定了namespace,所以先創(chuàng)建一個(gè)名為k8s-netcore的namespace

    kubectl?create?namespace?k8s-netcore

    3、執(zhí)行deploy.yaml文件

    kubectl?create?-f?deploy.yaml?--validate#加上?--validate?參數(shù),當(dāng)yaml文件有錯(cuò)誤時(shí),會(huì)給出提示--validate
    #加上?--validate?參數(shù),當(dāng)yaml文件有錯(cuò)誤時(shí),會(huì)給出提示

    4、使用kubectl get命令查看創(chuàng)建情況

    kubectl?get?deploy?-n?k8s-netcore


    5、查看資源情況

    kubectl?get?svc?-n?k8s-netcore


    上圖中可以看出,暴露出來的端口為32527,瀏覽器中訪問http://localhost:32527,如下圖:

    6、啟動(dòng)代理,在Dashboard中查看運(yùn)行情況

    kubectl?proxy


    怎樣訪問Dashboard,可以查看《Mac中搭建Kubernetes》中相關(guān)介紹。

    本文中用到的命令

    #創(chuàng)建dotNetCore項(xiàng)目dotnet?new?webApp?-o?k8s-netcore-demo?--no-https#將dotNetCore程序構(gòu)建為鏡像docker?build?-t?k8s-netcore-demo?.#創(chuàng)建namespacekubectl?create?namespace?k8s-netcore#部署Kuberneteskubectl?create?-f?deploy.yaml?--validate#查看指定命名空間的部署情況kubectl?get?deploy?-n?k8s-netcore#查看指定命名空間的資源情況kubectl?get?svc?-n?k8s-netcore
    dotnet?new?webApp?-o?k8s-netcore-demo?--no-https
    #將dotNetCore程序構(gòu)建為鏡像
    docker?build?-t?k8s-netcore-demo?.
    #創(chuàng)建namespace
    kubectl?create?namespace?k8s-netcore
    #部署Kubernetes
    kubectl?create?-f?deploy.yaml?--validate
    #查看指定命名空間的部署情況
    kubectl?get?deploy?-n?k8s-netcore
    #查看指定命名空間的資源情況
    kubectl?get?svc?-n?k8s-netcore

    總結(jié)

  • 命令不用刻意去記,練習(xí)多了自然就記住了;

  • 部署程序Kubernetes中,先需要將鏡像發(fā)布到倉庫中,自己部署的私有倉庫和公有云倉庫都可以;

  • 通過本文的操作步驟,可以將程序發(fā)布到Kubernetes中運(yùn)行起來,這樣可以對Kubernetes有一個(gè)主觀的認(rèn)識(shí),接下來就可以循序漸進(jìn)的對Kubernetes進(jìn)行深入的學(xué)習(xí)。

  • 總結(jié)

    以上是生活随笔為你收集整理的发布dotNetCore程序到Kubernetes的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。