阿里云容器服务DaemonSet实践

Posted chuangye95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云容器服务DaemonSet实践相关的知识,希望对你有一定的参考价值。

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,欢迎使用体验。








































以上是关于阿里云容器服务DaemonSet实践的主要内容,如果未能解决你的问题,请参考以下文章

比心云平台基于阿里云容器服务 ACK 的弹性架构实践

阿里云容器服务差异化 SLO 混部技术实践

云原生之路:容器技术落地最佳实践

阿里云 ACK 容器服务生产级可观测体系建设实践

让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心

阿里云PB级Kubernetes日志平台建设实践