Dapr微服务电商:容器调试小技巧

摘要

分享一下我在k8s环境下的容器调节小技巧。在vs中启用docker可以F5运行,但在k8s中需要注意。其实原理是一样的,只需注意文件目录即可。详见文章。

正文

根据Dapr完成一个简易的根据.net的微服务架构电商系统(十四)——开发工具器皿调节小窍门

  以前有很多同学们提及怎样做器皿调节,尤其是k8s自然环境下的器皿调节,今日就讲下我是怎样调节的。大家都了解在vs内置的建立新项目模版里启用docker就可以根据F5运行docker器皿调节。可是针对运行在k8s则并不是那麼清晰。实际上二者基本原理上是一样的。

文件目录:
一、根据Dapr完成一个简易的根据.net的微服务架构电商系统

二、根据Dapr完成一个简易的根据.net的微服务架构电商系统(二)——通信架构解读

三、根据Dapr完成一个简易的根据.net的微服务架构电商系统(三)——一步一步教你如何撸Dapr

四、根据Dapr完成一个简易的根据.net的微服务架构电商系统(四)——一步一步教你如何撸Dapr之定阅公布

五、根据Dapr完成一个简易的根据.net的微服务架构电商系统(五)——一步一步教你如何撸Dapr之情况管理方法

六、根据Dapr完成一个简易的根据.net的微服务架构电商系统(六)——一步一步教你如何撸Dapr之Actor服务项目

七、根据Dapr完成一个简易的根据.net的微服务架构电商系统(七)——一步一步教你如何撸Dapr之服务项目过流保护

八、根据Dapr完成一个简易的根据.net的微服务架构电商系统(八)——一步一步教你如何撸Dapr之链路追踪

九、根据Dapr完成一个简易的根据.net的微服务架构电商系统(九)——一步一步教你如何撸Dapr之OAuth2受权 && 百度搜索版Oauth2

十、根据Dapr完成一个简易的根据.net的微服务架构电商系统(十)——一步一步教你如何撸Dapr之关联

十一、根据Dapr完成一个简易的根据.net的微服务架构电商系统(十一)——一步一步教你如何撸Dapr之全自动扩/缩容

十二、根据Dapr完成一个简易的根据.net的微服务架构电商系统(十二)——istio dapr搭建多运作时服务网格

十三、根据Dapr完成一个简易的根据.net的微服务架构电商系统(十三)——istio dapr搭建多运作时服务网格之工作环境布署

十四、根据Dapr完成一个简易的根据.net的微服务架构电商系统(十四)——开发工具器皿调节小窍门
附则:(如果你觉得对你有效,请给个star)
一、电子商务Demo详细地址

二、通信架构详细地址

  优选大家看一下在一般新项目上vs是怎样额外到器皿的,大家开启一个新webapi新项目,启用开启docker,挑选Linux自然环境,建立以后默认设置F5便会以器皿的方法运行开发者模式。大家开启輸出->来源于挑选“器皿专用工具”,能够 见到下边的日志輸出:

1    ========== 器皿必不可少项查验 ==========
2    已经认证是不是安裝了 Docker Desktop...
3    安裝了 Docker Desktop。
4    ========== 已经认证 Docker Desktop 是不是已经运作... ==========
5    已经认证 Docker Desktop 是不是已经运作...
6    Docker Desktop 已经运作。
7    ========== 已经认证 Docker OS ==========
8    已经认证 Docker Desktop 的电脑操作系统方式是不是配对新项目的总体目标电脑操作系统...
9    Docker Desktop 的电脑操作系统方式与新项目的总体目标电脑操作系统配对。
10    ========== 获取需要的印象 ==========
11    已经查验缺乏的 Docker 印象...
12    已经获取 Docker 印象。要撤销此免费下载,请关掉cmd对话框。
13    docker pull mcr.microsoft.com/dotnet/aspnet:5.0
14    Docker 印象就绪。
15    ========== 已经为 WebApplication5 加热器皿 ==========
16    已经运行器皿...
17    docker build -f "C:\Users\Administrator\source\repos\WebApplication5\WebApplication5\Dockerfile" --force-rm -t webapplication5:dev --target base  --label "com.microsoft.created-by=visual-studio" --label "com.microsoft.visual-studio.project-name=WebApplication5" "C:\Users\Administrator\source\repos\WebApplication5" 
18    #1 [internal] load build definition from Dockerfile
19    #1 sha256:7cebd8ea57035d67289d428d4ab16b9bd9f7b854cece45a7c8c5896f3e584db4
20    #1 transferring dockerfile: 768B done
21    #1 DONE 1.1s
22    
23    #2 [internal] load .dockerignore
24    #2 sha256:ae3807db44f6e2063162c294384e0741768014999eb51b124c29f912625db9d3
25    #2 transferring context: 382B done
26    #2 DONE 1.4s
27    
28    #3 [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:5.0
29    #3 sha256:3b35130338ebb888f84ec0aa58f64d182f10a676a625072200f5903996d93690
30    #3 DONE 0.0s
31    
32    #4 [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:5.0
33    #4 sha256:31acc33a1535ed7869167d21032ed94a0e9b41bbf02055dc5f04524507860176
34    #4 DONE 3.9s
35    
36    #5 [base 2/2] WORKDIR /app
37    #5 sha256:56abde746b4f39a24525b2b730b2dfb6d9688bcf704d367c86a4753aefff33f6
38    #5 DONE 3.7s
39    
40    #6 exporting to image
41    #6 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f6b4dc349fb57dc6b71dcab00
42    #6 exporting layers
43    #6 exporting layers 0.7s done
44    #6 writing image sha256:406f8da6d5c71bdc01379b493d135e99801857a3c4bdfc9b5899abda0a62d8a4 0.1s done
45    #6 naming to docker.io/library/webapplication5:dev 0.1s done
46    #6 DONE 1.1s
47    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\Administrator\AppData\Local\Temp\GetVsDbg.ps1" -Version vs2017u5 -RuntIMEID linux-x64 -InstallPath "C:\Users\Administrator\vsdbg\vs2017u5"
48    Info: Using vsdbg version '17.0.10413.12'
49    Info: Using Runtime ID 'linux-x64'
50    Info: C:\Users\Administrator\vsdbg\vs2017u5 exists, deleting.
51    Info: Successfully installed vsdbg at 'C:\Users\Administrator\vsdbg\vs2017u5'
52    C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\Administrator\AppData\Local\Temp\GetVsDbg.ps1" -Version vs2017u5 -RuntimeID linux-musl-x64 -InstallPath "C:\Users\Administrator\vsdbg\vs2017u5\linux-musl-x64"
53    Info: Using vsdbg version '17.0.10413.12'
54    Info: Using Runtime ID 'linux-musl-x64'
55    Info: Successfully installed vsdbg at 'C:\Users\Administrator\vsdbg\vs2017u5\linux-musl-x64'
56    docker run -dt -v "C:\Users\Administrator\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Users\Administrator\source\repos\WebApplication5\WebApplication5:/app" -v "C:\Users\Administrator\source\repos\WebApplication5:/src/" -v "C:\Users\Administrator\.nuget\packages\:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages" -P --name WebApplication5 --entrypoint tail webapplication5:dev -f /dev/null 
57    339a0e69705f04043b704fd4fc3a361c652c73caa95dbb1d1c14f9c4b4af596d
58    已取得成功运行器皿。
59    ========== 顺利完成 ==========

  这里边检好多个较为关键的点而言:

    1、17行,根据dockerfile建立了一个镜像系统

    2、47行实行了GetVsDbg.ps1,这是一个powershell脚本制作,根据这一会在将debug专用工具免费下载到51行相匹配的vs2017u5这一文件夹名称内(关键)

    3、56行,根据初始化文档的方法大家将debug专用工具及其nuget包根据-v的方法初始化到镜像系统内(关键)

  根据之上三点就可以了解一个器皿自然环境要调节实际上关键便是靠这几个方面就能完成,因此 无论是否k8s,实质全是器皿。如今大家讨论一下在k8s里大家怎样完成调节的,或是以电商系统为例子,大家拿accountservice做为调节总体目标。最先大家必须结构accountservice的调节版本号的镜像系统。这一镜像系统实际上便是一个空的aspnet镜像系统,dockerfile以下:

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["dotnet", "Host.dll"]

  实际上关键便是提升了一个ENTRYPOINT特定镜像系统运作时启用host.dll。也就是大家accountservice的那一个host。然后大家将这一dockerfile装包成镜像系统:docker build . -t accountservice:debug 。随后大家将accountservice的Deployment作以下改动:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: accountservice
  namespace: dapreshop
  labels:
    app: accountservice
spec: 
  replicas: 1
  selector:
    matchLabels:
      app: accountservice
  minReadySeconds: 5 
  strategy: 
    type: RollingUpdate 
    rollingUpdate:
      maxUnavailable: 1 
      maxSurge: 1
  template: 
    metadata:
      labels: 
        app: accountservice
      annotations:
        dapr.io/enabled: "true"
        dapr.io/app-id: "accountservice"
        dapr.io/app-port: "80"
        dapr.io/config: "zipkin"
    spec:
      containers:
        - name: web
          image: accountservice:debug
          imagePullPolicy: Never
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /app
              name: v1
            - mountPath: /remote_debugger:rw
              name: v2
      volumes:
        - name: v1
          hostPath:
            path: /run/desktop/mnt/host/e/Oxygen-Dapr.EshopSample/Services/AccountService/Host/bin/Debug/net5.0
        - name: v2
          hostPath:
            path: /run/desktop/mnt/host/c/Users/Administrator/vsdbg/vs2017u5

  留意红色字体一部分,最先大家更换了镜像系统,次之大家将accountservice的host下的bin/debug下的dll初始化到/app文件目录。第三大家将vsdbg专用工具初始化到器皿调节专用工具里。这儿/run/desktop/mnt/host/就是指docker的wsl2投射到我系统软件里的途径。由于docker for windwos在wsl2里是一个分系统,因此 务必根据这一途径来投射大家基本的cdef盘途径。好啦,如今大家将大家的解决方法鼠标右键再次转化成一次,随后apply 一下大家的yaml文档。并再度观查大家的pod,能够 见到debug版本号的accountservice早已恰当的runnging了。

  好啦,如今我们在vs里,挑选工具栏->调节->额外到过程,开启额外到过程对话框,联接种类挑选Docker(Linux器皿),联接总体目标挑选搜索。弹出来搜索框,会全自动将当地电子计算机的器皿案例展现出去,这个时候搜索到大家的accountservice器皿,挑选明确

  tips:查找名字的小窍门:全部k8s运作的器皿全是以k8s_开始然后是我们在deployment里声明的containers.name,随后是deployment的name。在后面便是转化成pod的任意串构成的key,这一能够 无需关注。因此 大家必须寻找k8s_web_accountservice开始的器皿就可以

  tips:远程控制额外小窍门:docker cli服务器能够 额外到远程控制调节,调节和当地类似,唯一差别便是大家必须在虚拟服务器初始化调节专用工具和debug转化成的dll,这一能够 copy以往还可以根据k8s的storageclass nfs等方法初始化到电脑共享文件目录,这儿也不进行了。

  然后挑选这一器皿后挑选大家器皿内的host过程,点一下额外,调节挑选代管

 

   然后就和一般调节没差别了,大家开启admin.dapreshop,默认设置login网页页面会启用/accountservice/accountquery/CheckRoleBasedAccessControler,查验系统软件复位,就切断点在这个方式上,再更新一下网页页面,就可以见到中断点击中成功了。

关注不迷路

扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!

温馨提示:如果您访问和下载本站资源,表示您已同意只将下载文件用于研究、学习而非其他用途。
文章版权声明 1、本网站名称:宇凡盒子
2、本站文章未经许可,禁止转载!
3、如果文章内容介绍中无特别注明,本网站压缩包解压需要密码统一是:yufanbox.com
4、本站仅供资源信息交流学习,不保证资源的可用及完整性,不提供安装使用及技术服务。点此了解
5、如果您发现本站分享的资源侵犯了您的权益,请及时通知我们,我们会在接到通知后及时处理!提交入口
0

评论0

请先

站点公告

🚀 【宇凡盒子】全网资源库转储中心

👉 注册即送VIP权限👈

👻 全站资源免费下载✅,欢迎注册!

记得 【收藏】+【关注】 谢谢!~~~

立即注册
没有账号?注册  忘记密码?

社交账号快速登录