• 应用远程调试


    在集群中的应用出现问题是,可通过 kubectl exec 进入容器命令行终端进行问题诊断:

    Pod 远程调试

    # Pod 中只有一个容器时
    kubectl exec -it pod-name /bin/bash
    
    # Pod中有多个容器时
    kubectl exec -it pod-name -c container-name /bin/bash
    

    Servic 远程调试

    service 的远程调试其实分为两个部分:

    • 第一个部分是说我想将一个服务暴露到远程的一个集群之内,让远程集群内的一些应用来去调用本地的一个服务,这是一条反向的一个链路;
    • 还有一种方式是我想让这个本地服务能够去调远程的服务,那么这是一条正向的链路。

    在反向列入上面有这样一个开源组件,叫做 Telepresence ,它可以将本地的应用代理到远程集群中的一个 service 上面,使用它的方式如下所示:

    telepresence --swap-deployment $Deployment_Name
    

    首先将 Telepresence 的一个 Proxy 应用部署到远程的 K8s 集群里面。然后将远程单一个 deployment swap 到本地的一个 application,使用的命令就是 Telepresence-swap-deployment 然后以及远程的 DEPLOYMENT_NAME。通过这种方式就可以将本地一个 application 代理到远程的 service 之上、可以将应用在远程集群里面进行本地调试,这个有兴趣的同学可以到 GitHub 上面来看一下这个插件的使用的方式。

    第二个是如果本地应用需要调用远程集群的服务时候,可以通过 port-forward 的方式将远程的应用调用到本地的端口之上。比如说现在远程的里面有一个 API server,这个 API server 提供了一些端口,本地在调试 Code 时候,想要直接调用这个 API server,那么这时,比较简单的一个方式就是通过 port-forward 的方式,使用它的方式如下所示:

    kubectl port-forward svc/app -n app-namespace
    

    它的使用方式是 kubectl port-forward,然后 service 加上远程的 service name,再加上相应的 namespace,后面还可以加上一些额外的参数,比如说端口的一个映射,通过这种机制就可以把远程的一个应用代理到本地的端口之上,此时通过访问本地端口就可以访问远程的服务。

    具体用法可以参考这个:使用port-forward访问集群中的应用程序,以Redis 为例,地址:https://www.cnblogs.com/sanduzxcvbnm/p/12988236.html

  • 相关阅读:
    mongodb协议透传
    [转]PyInstaller2的信息文件Version的生成
    [转]使用PyInstaller2将Python脚本转化为可执行文件(中使用部分)
    Cache应用(sql依赖缓存)
    关于Cookie与Session的疑问解答
    ADO.NET Entity Framework
    WPF中的画笔功能,实现直实线、弯实线、直虚线、弯虚线
    Singleton模式之多线程
    控件回发系列一(IPostBackEventHandler)
    使用VS2010创建EntityDataModel出错
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13426716.html
Copyright © 2020-2023  润新知