美文网首页Java 程序员k8sJava
K8S调试利器:telepresence2使用文档

K8S调试利器:telepresence2使用文档

作者: 程序花生 | 来源:发表于2021-06-22 15:24 被阅读0次

    telepresence2主要解决的问题

    • 帮助开发人员对kubernetes进行调试以及问题分析;
    • 开发人员无需再将本地开发运行到Kubernetes内部;
    • 可以提高团队间的实时协作,以及对环境创建进行预览;

    telepresence能够将本地的开发程序插入到kubernetes集群内部,使得程序的环境看起来像在pod内部;并且在本地开发过程中,可以使用k8s内部所有的网络服务以及DNS名称;

    工作原理

    在使用telepresence后,其会在集群内部创建一个小型代理,路由流量会在一个安全网络隧道之间来回;

    在kubernetes内部可以使用命令查看到代理名称;

    [root@k8s-master-0 ~]# kubectl get ns
    NAME              STATUS   AGE
    ambassador        Active   30d
    [root@k8s-master-0 ~]# kubectl get all -n ambassador
    NAME                                   READY   STATUS    RESTARTS   AGE
    pod/traffic-manager-85cb46d955-nhlfr   1/1     Running   0          26h
    
    NAME                      TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)             AGE
    service/traffic-manager   ClusterIP   None         <none>        8022/TCP,8081/TCP   26h
    1
    NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/traffic-manager   1/1     1            1           26h
    
    NAME                                         DESIRED   CURRENT   READY   AGE
    replicaset.apps/traffic-manager-85cb46d955   1         1         1       26h
    

    快速入门

    PS:可以自行查看官方文档

    安装

    从github上可以下载最新版,目前使用的最新版为:2.2.2

    # 解压
    tar -zxvf telepresence-2.2.2.tar.gz
    cd telepresence-2.2.2
    # 设置环境变量
    export TELEPRESENCE_VERSION=v2.2.2
    make build 
    mv ./telepresence $GOBIN/telepresence
    

    安装kubectl

    telepresence需要往集群内部安装代理,所以在开发及其上需要安装kubectl;

    安装完成后,从kubenetes集群内拷贝配置文件;

    scp -r root@10.222.222.11:/root/.kube/config /root/.kube/config
    # 执行kubectl 
    kubectl get pod
    

    实战

    在集群内部创建测试pod:

    # 创建deploy
    kubectl create deploy hello --image=luksa/kubia
    # 暴露服务
    kubectl expose deploy hello --port 80 --target-port 8080
    

    telepresence2的命令包括:

    Available Commands:
      Session Commands:
        connect              连接集群
        login                登录Ambassador Cloud #无需用到
        logout               退出Ambassador Cloud #无需用到
        license              获取版本信息Ambassador Cloud#无需用到
        status               查看连接状态
        quit                 退出
      Traffic Commands:
        list                 列举当前可以拦截的服务
        intercept            拦截一个服务
        leave                退出拦截服务
        preview              
      Other Commands:
        version              查看版本
        uninstall            卸载集群中的代理插件
        dashboard            打开一个dashboard(需要联网)
        current-cluster-id  
    

    连接集群

    telepresence connect
    Launching Telepresence Daemon v2.3.2 (api v3)
    Connecting to traffic manager...
    Connected to context kubernetes-admin@kubernetes (https://<clusterip>:6443)
    

    查看连接状态

    # telepresence status
    Root Daemon: Running
      Version     : v2.3.2 (api 3)
      DNS : ""
    User Daemon: Running
      Version           : v2.3.2 (api 3)
      Ambassador Cloud  : Logged out
      Status            : Connected
      Kubernetes server : https://cluster-ip:6443
      Kubernetes context: kubernetes-admin@kubernetes
      Telepresence proxy: ON (networking to the cluster is enabled)
      Intercepts        : 0 total
    

    查看当前可以拦截服务

    # telepresence list --namespace default
    nginx-demo: ready to intercept (traffic-agent not yet installed)
    

    tips: --namespace可以指定k8s的命名空间;

    其默认是根据kubectl的配置进行展示的;

    访问集群内部的服务

    [root@localhost bin]# curl hello.platform/
    You've hit hello-66cff46dc-khm9q
    

    在本机拦截服务

    【存在问题,后续更新】

    FAQ

    • 在安装过程中,可能存在某些操作超时的情况,如:
    telepresence: error: connector.Connect: the traffic manager gRPC API timed out.  The current timeout 15s can be configured as "timeouts.trafficManagerAPI" in "/root/.config/telepresence/config.yml"
    rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix /tmp/telepresence-connector.socket: connect: connection refused"
    

    通过查看消息可知,请求代理的API超时,可以通过提示修改超时时间;

    • 访问应用过程中,出现如下错误:
    [root@localhost telepresence-2.2.2]# curl http://hello.platform
    curl: (56) Recv failure: Connection reset by peer
    

    可查看svc资源是否运行正确;

    作者:TangLyan
    链接:https://juejin.cn/post/6976246800566976549
    来源:掘金

    相关文章

      网友评论

        本文标题:K8S调试利器:telepresence2使用文档

        本文链接:https://www.haomeiwen.com/subject/neqmyltx.html