阿里云容器服务DaemonSet实践
DaemonSet 保證在每個 Node 上都運行一個容器副本,常用來部署一些集群的日志、監(jiān)控或者其他系統(tǒng)管理應用。下面以日志收集 fluentd 為例,看下如何使用阿里云容器服務控制臺創(chuàng)建DaemonSet。
準備Kubernetes環(huán)境
在阿里云容器服務控制臺中創(chuàng)建Kubernetes 集群(1.11.5),3 master,3 worker
安裝fluentd
1、選擇應用->守護進程集->使用鏡像創(chuàng)建
填寫應用名稱,選擇部署集群、命名空間,進入下一步
2、選擇鏡像并進行相應配置
注意:這里掛載了配置項fluentd-conf,用來覆蓋鏡像中的默認配置,需要提前創(chuàng)建出來,內(nèi)容如下:
否則會遇到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、設(shè)置更新策略
可以在高級配置中選擇升級方式:
- 滾動升級(RollingUpdate):更新 DaemonSet 模版后,自動刪除舊的 Pod 并創(chuàng)建新的 Pod
- 替換升級(OnDelete):更新模板后,只有手動刪除了舊的 Pod 后才會創(chuàng)建新的 Pod
4、指定節(jié)點調(diào)度
只選擇worker節(jié)點安裝。設(shè)置節(jié)點親和性如圖。
5、創(chuàng)建完成
點擊創(chuàng)建,可以看到創(chuàng)建成功。
6、問題排查與更新
按著上述步驟可以看到在3個worker節(jié)點分別起了對應的pod,但pod并沒有成功啟動。選擇其中的一個容器,查看一下日志發(fā)現(xiàn)如下錯誤:
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后發(fā)現(xiàn)需要設(shè)置ClusterRole
apiVersion: v1 kind: ServiceAccount metadata:name: fluent-accountnamespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata:name: fluent-account roleRef:kind: ClusterRolename: viewapiGroup: rbac.authorization.k8s.io subjects:- kind: ServiceAccountname: fluent-accountnamespace: kube-system創(chuàng)建成功后更新fluent-es 的yaml,編輯yaml,提交更新。
Pod啟動成功,日志已經(jīng)可以正常采集了。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的阿里云容器服务DaemonSet实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实践 | Sentinel 扩展性设计
- 下一篇: 完爆 Best Fit,看阿里如何优化