最简单的一种Istio日志记录是Envoy访问日志记录。Envoy代理将访问信息打印到其标准输出。然后,kubectl日志命令可以打印特使容器的标准输出。

1. 准备工作

  1. 部署sleep应用用于测试
  • 开启自动的sidecar注入的话,执行如下
  1. $ kubectl apply -f samples/sleep/sleep.yaml
  • 手工注入的话执行如下命令
  1. $ kubectl apply -f <(istioctl kube-inject -f samples/sleep/sleep.yaml)
  1. 获取source pod的名称并把赋值给SOURCE_POD的变量
  1. $ export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
  1. 启动httpbin的服务
  • 自动注入sidecar执行如下命令
  1. $ kubectl apply -f samples/httpbin/httpbin.yaml
  • 手工注入sidecar的话,执行如下命令
  1. $ kubectl apply -f <(istioctl kube-inject -f samples/httpbin/httpbin.yaml)

2. 开启Envoy’s的访问日志

  1. $ istioctl manifest apply --set profile=demo --set meshConfig.accessLogFile="/dev/stdout"

3. 测试访问日志

  1. 从sleep发送请求到httpbin
  1. $ kubectl exec -it $(kubectl get pod -l app=sleep -o jsonpath='{.items[0].metadata.name}') -c sleep -- curl -v httpbin:8000/status/418
  1. 检查sleep的日志
  1. $ kubectl logs -l app=sleep -c istio-proxy
  1. 检查httpbin的日志
  1. $ kubectl logs -l app=httpbin -c istio-proxy

4. 清除本实验

  1. 关闭sleep和httpbin的服务
  1. $ kubectl delete -f samples/sleep/sleep.yaml
  2. $ kubectl delete -f samples/httpbin/httpbin.yaml

5. 关闭Envoy的访问日志

  1. $ istioctl manifest apply --set profile=demo