通常,通过转到容器引擎 -> 集群 -> 命名空间 -> 应用程序名称(例如“postgres”),在 Stackdriver 上进行日志记录非常适合从 GKE 上的 Kubernetes 自动获取日志。
在 GKE 的 Kubernetes 默认命名空间中,我们有两组运行暂存和生产应用程序的 pod。这些日志中只有一个记录到 Stackdriver 上 pod 的默认应用程序名称。
两个截断的 postgres 部署配置的片段:
生产
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: database-production
track: production
spec:
containers:
- name: postgres
image: postgres
分期
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres-staging
spec:
replicas: 1
template:
metadata:
labels:
app: database-staging
track: staging
spec:
containers:
- name: postgres-staging
image: postgres
这些日志中只有一个记录postgres
在 Stackdriver 中,另一个根本不会出现。我尝试更改部署的容器名称但没有任何效果。唯一可行的方法是将整个应用程序托管在另一个命名空间下,但Kubernetes 文档建议不要使用命名空间,除非应用程序很大。
有什么方法可以通过 Kubernetes 部署配置具体定义 Stackdriver Logging / GKE 如何命名日志?