K8S调试利器:telepresence2使用文档
2021-06-22 本文已影响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
来源:掘金