- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 docker
中设置 AWS CloudWatch Logs 驱动程序是使用 log-driver=awslogs
和 log-opt
完成的,例如 -
#!/bin/bash
docker run \
--log-driver=awslogs \
--log-opt awslogs-region=eu-central-1 \
--log-opt awslogs-group=whatever-group \
--log-opt awslogs-stream=whatever-stream \
--log-opt awslogs-create-group=true \
wernight/funbox \
fortune
我想在 Kubernetes 集群中使用 AWS CloudWatch 日志,其中每个 pod 都包含一些 Docker 容器。每个部署都有一个单独的日志组,每个容器都有一个单独的流。我找不到通过 Kubernetes create
/apply
将日志记录参数发送到 docker 容器的方法。
如何将 log-driver
和 log-opt
参数发送到 pod/部署中的 Docker 容器?
kubectl apply
的 RTFM kops
Kubernetes Logging Architecture
最佳答案
据我了解,Kubernetes 更喜欢集群级日志记录而不是 Docker 日志记录驱动程序。
我们可以使用 fluentd收集、转换容器日志并将其推送到 CloudWatch Logs。
您只需要使用 ConfigMap 和 Secret 创建一个 fluentd DaemonSet。文件可在 Github 中找到.它已经使用 Kubernetes v1.7.5 进行了测试。
以下是一些解释。
使用 DaemonSet,fluentd 从主机文件夹 /var/lib/docker/containers
收集每个容器日志。
fluent-plugin-kubernetes_metadata_filter插件从 Kubernetes API 服务器加载 pod 的元数据。
日志记录会是这样的。
{
"log": "INFO: 2017/10/02 06:44:13.214543 Discovered remote MAC 62:a1:3d:f6:eb:65 at 62:a1:3d:f6:eb:65(kube-235)\n",
"stream": "stderr",
"docker": {
"container_id": "5b15e87886a7ca5f7ebc73a15aa9091c9c0f880ee2974515749e16710367462c"
},
"kubernetes": {
"container_name": "weave",
"namespace_name": "kube-system",
"pod_name": "weave-net-4n4kc",
"pod_id": "ac4bdfc1-9dc0-11e7-8b62-005056b549b6",
"labels": {
"controller-revision-hash": "2720543195",
"name": "weave-net",
"pod-template-generation": "1"
},
"host": "kube-234",
"master_url": "https://10.96.0.1:443/api"
}
}
使用 Fluentd 制作一些标签 record_transformer过滤插件。
{
"log": "...",
"stream": "stderr",
"docker": {
...
},
"kubernetes": {
...
},
"pod_name": "weave-net-4n4kc",
"container_name": "weave"
}
fluent-plugin-cloudwatch-logs插件发送到 AWS CloudWatch Logs。
通过log_group_name_key
和log_stream_name_key
配置,日志组和流名可以是记录的任意字段。
<match kubernetes.**>
@type cloudwatch_logs
log_group_name_key pod_name
log_stream_name_key container_name
auto_create_stream true
put_log_events_retry_limit 20
</match>
关于amazon-web-services - 如何将 Kubernetes 日志发送到 AWS CloudWatch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469076/
我是一名优秀的程序员,十分优秀!