Helm将在Amazon EKS上安装Fluentd-Cloudwatch

时间:2018-10-23 07:20:30

标签: kubernetes fluentd kubernetes-helm aws-eks

尝试在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>`

2 个答案:

答案 0 :(得分:1)

基于this似乎只是试图将eu-west-1,rbac.create=true转换为JSON字段作为字段,并且存在一个额外的逗号(,),导致其失败。

如果您查看values.yaml,将看到正确的单独选项是awsRegionrbac.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的适当权限。