3

在尝试在 Amazon EKS 上使用 helm 安装“incubator/fluentd-cloudwatch”并将用户设置为 root 时,我得到了以下响应。

使用的命令:

helm install --name fluentd incubator/fluentd-cloudwatch --set awsRegion=eu-west-1,rbac.create=true --set extraVars[0]="{ name: FLUENT_UID, value: '0' }"

错误:

Error: YAML parse error on fluentd-cloudwatch/templates/daemonset.yaml: error converting YAML to JSON: yaml: line 38: did not find expected ',' or ']'

如果我们不将用户设置为 root,那么默认情况下,fluentd 以“fluent”用户运行,其日志显示:

[error]: unexpected error error_class=Errno::EACCES error=#<Errno::
EACCES: Permission denied @ rb_sysopen - /var/log/fluentd-containers.log.pos>`
4

2 回答 2

1

基于,它看起来只是试图将eu-west-1,rbac.create=trueJSON 字段转换为字段,并且有一个额外的逗号(,)导致它失败。

如果您查看values.yaml,您会看到正确的单独选项awsRegionrbac.create因此--set awsRegion=eu-west-1 --set rbac.create=true应该修复第一个错误。

关于/var/log/... Permission denied错误,您可以在此处看到它的安装方式,hostPath如果您执行以下操作:

# (means read/write user/group/world)
$ sudo chmod 444 /var/log 

和所有节点,错误应该消失。请注意,您需要将其添加到所有节点,因为您的 pod 可以降落在集群中的任何位置。

于 2018-10-24T05:54:57.020 回答
0

下载并更新 values.yaml,如下所示。更改位于 awsRegion、rbac.create=true 和 extraVars 字段中。

annotations: {}

awsRegion: us-east-1
awsRole:
awsAccessKeyId:
awsSecretAccessKey:
logGroupName: kubernetes

rbac:
## If true, create and use RBAC resources
create: true

## Ignored if rbac.create is true
serviceAccountName: default
# Add extra environment variables if specified (must be specified as a single line 
object and be quoted)
extraVars:
- "{ name: FLUENT_UID, value: '0' }"

然后运行以下命令在 Kubernetes 集群上设置 fluentd 以将日志发送到 CloudWatch Logs。

$ helm install --name fluentd -f .\fluentd-cloudwatch-values.yaml incubator/fluentd-cloudwatch

我这样做了,它对我有用。日志已发送到 CloudWatch Logs。还要确保您的 ec2 节点具有 IAM 角色,并具有对 CloudWatch Logs 的适当权限。

于 2018-11-01T07:49:09.657 回答