腾讯云 TKE 默认自带的查看日志功能比较薄弱,日志刷新缓慢,有延迟,查看费劲。腾讯云 TKE 支持 K8S 标准协议,我们可以自已安装 kubectl
,连上线上环境 K8S 集群,直接看日志分析问题(其它厂商 K8S 集群同理)。主要方法如下:
注,以下都是在 Mac 系统中操作,其它系统自行搜索解决
1. 安装 kubectl
1.1 下载 kubectl
二进制文件
1 | curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/darwin/amd64/kubectl |
会下载一个单独的二进制文件 kubectl
到下载目录 (要翻墙,其中版本号信息在路径中可以改成自已想要的)
1.2 给 kubectl
添加执行权限
1 | chmod +x ./kubectl |
1.3 复制到你系统的 PATH
环境变量目录中,这样你就可以在任意地方调用
1 | sudo mv ./kubectl /usr/local/bin/kubectl |
1.4 测试安装成功没有
1 | kubectl version |
会输出一些基本信息
2. 连接集群 (!!#ff0000 内容已过期,连接集群请参考 TKE 集群基本信息里的步骤!!)
2.1 选好你要操作的集群,准备好集群配置信息,主要有
- 用户名
- token/密码
- 集群 CA 证书(要下载)
- 集群外网访问地址
配置信息在这里找
2.2 设置 kubectl
全局配置信息
1 | 注意,新版 TKE,已经没有用户名密码方式登录了,要换用证书 |
以上配置信息会写入 ${HOME}/.kube/config 下,设置错了,或想切别的环境的集群,可以直接去改配置文件
其中 see-xdb-prod、see-xdb-prod-cluster、see-xdb-prod-admin 分别是本地配置的 K8S 集群的 context、cluster、credentials 的名字,可以取任何名,只要能和其它 K8S 集群的配置区分开就行,此处可替换成自已组织的名字
2.3 测试是否生效
1 | kubectl get pods --all-namespaces |
会输出当前部署的pod,例如
3. 使用 kubectl
查看日志
3.1 先列出所有 pod
,找出自已想看日志的 pod
,把名字记下来
1 | kubectl get pods --all-namespaces |
3.2 查看日志,例如我想看 mapi
的日志,其它例如 prisma
的日志同理
1 | kubectl logs -f mapi-db74bc5ff-25brz --namespace=production |
注意,要加命名空间名
kubectl
更多用法请查看相关文档。
3.3 kubectl
查看日志的缺点
- 每次只能查看一个 pod 的日志,我们在线上每个应用往往要起多个 pod,例如 mapi 就起了 8 个
- 要查看 pod 的日志,只能用 pod 全名查看,而 pod 每次部署,名字会变,不支持通配符或按 label 查看
所以推荐一个第三方的脚本工具 kubetail
,用 shell 写的,支持多个 pod 同时查看,还支持不同 pod 日志颜色不同,方便区分,安装方法如下
4. 安装查看日志工具 kubetail
1 | brew tap johanhaleby/kubetail && brew install kubetail |
测试是否安装成功
1 | kubetail |
查看日志,例如我要查看线上环境所有 mapi 开头的 pod 日志
1 | kubetail mapi -n production |
就可以看到所有 mapi 开头的 pod 日志,各个 pod 还有颜色区别,详细用法请看 github