尝试在Amazon EKS上使用头盔安装“ 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>`
答案 0 :(得分:1)
基于this似乎只是试图将eu-west-1,rbac.create=true
转换为JSON字段作为字段,并且存在一个额外的逗号(,),导致其失败。
如果您查看values.yaml,将看到正确的单独选项是awsRegion
和rbac.create
,因此--set awsRegion=eu-west-1 --set rbac.create=true
应该可以解决第一个错误。
关于/var/log/... Permission denied
错误,您可以看到here已作为hostPath
挂载,因此,如果执行以下操作:
# (means read/write user/group/world)
$ sudo chmod 444 /var/log
和所有节点,错误应消失。请注意,您需要将其添加到所有节点,因为Pod可以降落在群集中的任何位置。
答案 1 :(得分: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集群上进行流畅设置以将日志发送到CloudWatch Logs。
$ helm install --name fluentd -f .\fluentd-cloudwatch-values.yaml incubator/fluentd-cloudwatch
我做到了,它为我工作。日志已发送到CloudWatch Logs。另外,请确保您的ec2节点具有IAM角色,并且具有对CloudWatch Logs的适当权限。