怒涛小站

chf007 的自留地,分享不多,想写就写

使用 kubectl 及 kubetail 查看腾讯云 TKE 日志

腾讯云 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 证书(要下载)
  • 集群外网访问地址

配置信息在这里找

tke01.png

tke02.png

2.2 设置 kubectl 全局配置信息

1
2
3
4
5
# 注意,新版 TKE,已经没有用户名密码方式登录了,要换用证书
kubectl config set-credentials see-xdb-prod-admin --username=${用户名}--password=${token/密码}
kubectl config set-cluster see-xdb-prod-cluster --server=${集群外网访问地址} --certificate-authority=${下载到本地的集群CA证书路径,例如/etc/kubernetes/cluster-ca.crt}
kubectl config set-context see-xdb-prod --cluster=see-xdb-prod-cluster --user=see-xdb-prod-admin
kubectl config use-context see-xdb-prod

以上配置信息会写入 ${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,例如

tke03.png

3. 使用 kubectl 查看日志

3.1 先列出所有 pod,找出自已想看日志的 pod,把名字记下来

1
kubectl get pods --all-namespaces

tke04.png

3.2 查看日志,例如我想看 mapi 的日志,其它例如 prisma 的日志同理

1
kubectl logs -f mapi-db74bc5ff-25brz --namespace=production

tke05.png

注意,要加命名空间名

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

tke06.png

查看日志,例如我要查看线上环境所有 mapi 开头的 pod 日志

1
kubetail mapi -n production

tke07.png

就可以看到所有 mapi 开头的 pod 日志,各个 pod 还有颜色区别,详细用法请看 github