来随便逛逛 发布时间: 2019-01-02 10:48:26 浏览 175 评论 0
日志
LOG
阿里技术协会
配置
镜像
集群
容器服务
容器
控制台
- metadata
- type
- kubernetes
- Fluentd
- DaemonSet
摘要: DaemonSet 保证在每个 Node 上都运行一个容器副本, 常用来部署一些集群的日志, 监控或者其他系统管理应用. 下面以日志收集 Fluentd 为例, 看下如何使用阿里云容器服务控制台创建 DaemonSet. ### 准备 Kubernetes 环境 在阿里云容器服务控制台中创建 Kubernetes 集群 (1.11.5),3 master,3 worker ### 安装 Fluentd
DaemonSet 保证在每个 Node 上都运行一个容器副本, 常用来部署一些集群的日志, 监控或者其他系统管理应用. 下面以日志收集 Fluentd 为例, 看下如何使用阿里云容器服务控制台创建 DaemonSet.
准备 Kubernetes 环境
在阿里云容器服务控制台中创建 Kubernetes 集群 (1.11.5),3 master,3 worker
安装 Fluentd
1, 选择应用 -> 守护进程集 -> 使用镜像创建
填写应用名称, 选择部署集群, 命名空间, 进入下一步
2, 选择镜像并进行相应配置
注意: 这里挂载了配置项 Fluentd-conf, 用来覆盖镜像中的默认配置, 需要提前创建出来, 内容如下:
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: Fluentd-conf
- namespace: kube-system
- data:
- td-agent.conf: |
- <match fluent.**>
- type null
- </match>
- <source>
- type tail
- path /var/log/containers/*.log
- pos_file /var/log/es-containers.log.pos
- time_format %Y-%m-%dT%H:%M:%S.%NZ
- tag kubernetes.*
- format JSON
- read_from_head true
- </source>
- <filter kubernetes.**>
- type kubernetes_metadata
- verify_ssl false
- </filter>
否则会遇到 pod 启动问题
[error]: config error file="/etc/td-agent/td-agent.conf" error="Invalid Kubernetes API v1 endpoint https://172.21.0.1:443/api: SSL_connect returned=1 errno=0 state=error: certificate verify failed"
3, 设置更新策略
可以在高级配置中选择升级方式:
滚动升级 (RollingUpdate): 更新 DaemonSet 模版后, 自动删除旧的 Pod 并创建新的 Pod
替换升级 (OnDelete): 更新模板后, 只有手动删除了旧的 Pod 后才会创建新的 Pod
4, 指定节点调度
只选择 worker 节点安装. 设置节点亲和性如图.
5, 创建完成
点击创建, 可以看到创建成功.
6, 问题排查与更新
按着上述步骤可以看到在 3 个 worker 节点分别起了对应的 pod, 但 pod 并没有成功启动. 选择其中的一个容器, 查看一下日志发现如下错误:
config error file="/etc/td-agent/td-agent.conf" error="Exception encountered fetching metadata from Kubernetes API endpoint: pods is forbidden: User cannot list pods at the cluster scope"
Google 后发现需要设置 ClusterRole
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: fluent-account
- namespace: kube-system
- ---
- apiVersion: rbac.authorization.k8s.io/v1beta1
- kind: ClusterRoleBinding
- metadata:
- name: fluent-account
- roleRef:
- kind: ClusterRole
- name: view
- apiGroup: rbac.authorization.k8s.io
- subjects:
- - kind: ServiceAccount
- name: fluent-account
- namespace: kube-system
创建成功后更新 fluent-es 的 YAML, 编辑 YAML, 提交更新.
Pod 启动成功, 日志已经可以正常采集了.
总结
使用阿里云容器服务控制台支持方便的创建 DaemonSet, 欢迎使用体验. https://cs.console.aliyun.com/
来源: https://yq.aliyun.com/articles/683991