tnblog
首页
视频
资源
登录

Visual Studio 连接 Kubernetes 调试

5623人阅读 2022/5/19 16:52 总访问:3470442 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes

Visual Studio 连接 Kubernetes 调试


Bridge to Kubernetes是一种迭代开发工具,用于编写以 Kubernetes 为目标的微服务应用程序。
可以帮助我们调试线上 Kubernetes 运行的项目与代码。

前提条件


需要一个k8s集群。
需要安装vs2019以上的Kubernetes。
可以通过kubectl cluster-info命令查看集群信息。

建立连接


当 Bridge to Kubernetes 与您的集群建立连接时,它会执行以下操作:

提示您配置要在集群上替换的服务、开发计算机上用于代码的端口以及代码的启动任务作为一次性操作。
将集群上 pod 中的容器替换为将流量重定向到您的开发计算机的远程代理容器。
在您的开发计算机上运行kubectl port-forward以将流量从您的开发计算机转发到集群中运行的远程代理。
使用远程代理从您的集群收集环境信息。此环境信息包括环境变量、可见服务、卷挂载和秘密挂载。
在 Visual Studio 中设置环境,以便开发计算机上的服务可以访问相同的变量,就像它在群集上运行一样。
更新主机文件以将集群上的服务映射到开发计算机上的本地 IP 地址。这些主机文件条目允许在您的开发计算机上运行的代码向集群中运行的其他服务发出请求。要更新您的hosts文件,Bridge to Kubernetes 需要您的开发计算机上的管理员访问权限。
开始在您的开发计算机上运行和调试您的代码。如有必要,Bridge to Kubernetes 通过停止当前正在使用这些端口的服务或进程来释放开发计算机上所需的端口。

创建API


我们创建一个环境为.Net6的API项目,不要https,勾选Docker支持,launchSettings.json的配置如下。

  1. {
  2. "profiles": {
  3. "API1": {
  4. "commandName": "Project",
  5. "launchBrowser": true,
  6. "launchUrl": "weatherforecast",
  7. "environmentVariables": {
  8. "ASPNETCORE_ENVIRONMENT": "Development"
  9. },
  10. "applicationUrl": "http://localhost:5190",
  11. "dotnetRunMessages": true
  12. },
  13. "Docker": {
  14. "commandName": "Docker",
  15. "launchBrowser": true,
  16. "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/weatherforecast",
  17. "publishAllPorts": true
  18. },
  19. "Bridge to Kubernetes": {
  20. "commandName": "AzureDevSpacesLocal",
  21. "launchBrowser": true
  22. }
  23. }
  24. }


然后我们编写我们的api.yml。偷了个懒没定义名称空间,大家自己定义一下。

注意我这里设置的端口是5190。

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: ocelotapi
  5. namespace: dev
  6. labels:
  7. name: ocelotapi
  8. spec:
  9. replicas: 2
  10. selector:
  11. matchLabels:
  12. name: ocelotapi
  13. template:
  14. metadata:
  15. labels:
  16. name: ocelotapi
  17. spec:
  18. containers:
  19. - name: ocelotapi
  20. image: aidasi/ocelotapi:v1
  21. ports:
  22. - containerPort: 5190
  23. imagePullPolicy: Always
  24. ---
  25. kind: Service
  26. apiVersion: v1
  27. metadata:
  28. name: ocelotapi
  29. namespace: dev
  30. spec:
  31. ports:
  32. - port: 5190
  33. targetPort: 5190
  34. selector:
  35. name: ocelotapi


这里我就不在本地测试了(浪费时间),直接Build一下。在所在的项目解决方案下,打开cmd,执行下列命令进行构建,当然名字你们自己取;随后上传到公共镜像站上(DockerHub)。

  1. docker build -t aidasi/ocelotapi:v1 -f ./API1/Dockerfile .


这里我都给你们上传好了,直接拉取就可以了。(代码待会会上传。。。)

  1. docker pull aidasi/ocelotapi:v1

启动服务


创建dev名称空间与我们API服务。

  1. kubectl create ns dev
  2. kubectl apply -f .\api.yml


查看Pod创建情况。

  1. kubectl get pod -n dev

安装Bridge to Kubernetes 2022


在我们的VS上方点击Extensions—>Manage Extensions,找到 Bridge to Kubernetes 2022 并安装。这里我已经安装好了。
安装好后需要重启一下VS。


然后我们的API1就可以选择使用Bridge to Kubernetes,进行运行。
然后它会自动去识别本机所拥有的集群,其实就是去检查你的.kube目录。
然后我们这里选择我们的dev名称空间,以及我们的ocelotapi服务。

启动路由隔离(Enable routing isolation)


默认情况下,Bridge to Kubernetes 会将服务的所有流量重定向到您的开发计算机。您可以改为使用路由功能仅将请求从子域重定向到您的开发计算机。这些路由功能允许您使用 Bridge to Kubernetes 进行隔离开发,并避免中断集群中的其他流量。
(相当于下图所展示的情况)

如果是多人开发这个项目,或者是微服务开发建议开启它。(这里我就不开启了,开启了之后会多几个容器)


好接下来可以设置一下应用的地址,但我感觉没什么用。然后点一下OK就可以了。(你们的可能是save什么的)
好接下来我们就可以进行启动了。


我们可以发现它一直在转圈圈。但是我们知道当Bridge to Kubernetes它是有启动kubectl port-forward的,所以我们直接请求服务名或者Pod的地址,它会收到请求。我们请求的服务试试看:http://ocelotapi:5190/weatherforecast


我们后台已经收到断点了。所以也是可以返回数据的。


好,到这里我们就演示完了。

其他


请参考:
https://docs.microsoft.com/en-us/visualstudio/bridge/overview-bridge-to-kubernetes?view=vs-2019#using-routing-capabilities-for-developing-in-isolation
https://docs.microsoft.com/en-us/visualstudio/bridge/bridge-to-kubernetes-vs?view=vs-2019


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Visual Studio远程调试

因某些需求需要调试发布到外网的程序;vs提供了远程调试的功能,vs15举例。 需满足:发布的程序和本地调试程序一样;项目需...

Visual Studio小技巧

一.快捷键:按住Ctrl点击 选中当前这个词组,或者结合删除键,删除一整个词Ctrl+M+O:折叠当前窗口所有代码(注释,方法)C...

推荐Visual Studio好用的扩展插件(不定时更新)

嗨咯,大家好。什么是扩展?扩展是可以允许你在 Visual Studio 中进行自定义并增强在其中的体验的附加项,通过添加新功能或...

Visual Studio 2019 正式版注册码秘钥

随着微软的更新,vs的进步,现在已经更新到2019版本,很多开发者已经融入2019开发环境,所以可能要有2019版本的产品密钥来...

需要更新的以前的Visual Studio2010实例

电脑中安装过Visual Studio比较低版本的软件的时候,将原本的Microsoft Visual Studio 2010 Service Pack 1进行了更改,导...

Visual Studio默认管理员权限打开

右键vs ,打开文件所在路径,找到devenv.exe。右键。兼容性解答看图操作注意在点击测试程序后,程序会管理员权限运行,可以...

使用OLEDB读取不同版本Excel的连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///<summary> ///读取excel ///</su...

Service-stack.redis配置连接池与读写分离(处理并发相关等)

配置连接池与读写分类 //写节点(主节点) List<string>writes=newList<string>(); writes.Add("123456a...

sqlserver保障远程连接的安全性

如果是只读的话建个视图,建个普通用户只对该视图进行读。读写的话就只能自己在加一层代理服务,由代理来进行读写,各客户...

net core配置EF连接字符串。windows验证的连接字符串配置

在appsettings.json中配置好连接字符串{"ConnectionStrings":{ "BloggingDatabase":"Server=(lo...

修改rabbitmq的连接端口

rabbitmq的默认连接端口是5672,如果要修改的话,可以通过配置文件修改当然一般情况下都会遇到坑默认配置文件地址:安装目...

javaandroid 使用socket.io-client连接nodejs websocket

socket.io-client相比SocketIO.jar使用起来更方便一点publicvoidconnection(finalMapAction_action){ try{ IO.Optionsopt...

javaandroid 使用SocketIO.jar连接nodejs websocket

socket.io-client版连接nodejs websockethttp://www.tnblog.net/aojiancc2/article/details/2562一:更具url建立连接,调用...

EF连接MySQL连接MySQL数据库操作中文数据乱码解决方法

修改数据库的连接字符器在连接字符器添加charset=gb2312。注意事项:(1)字符编码不支持UTF8。(2)必须使用规定编码。示例:&...

EF连接MySQL数据库

注意事项准备工作(1)下载MySQL数据库软件6.6.6版本。 (2)下载MySQL数据库mysql-connector-net-6.6.6两者不一样都不能少。(...
这一世以无限游戏为使命!
排名
2
文章
635
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术