tencent cloud

容器服务

TCR Hosts Updater

PDF
聚焦模式
字号
最后更新时间: 2021-12-02 15:01:47

概述

TCR Hosts Updater 是 TCR Addon 的子组件之一,用于帮助用户在没有 VPC DNS 服务的地域配置 k8s 集群工作节点的 hosts 文件。

原理

Hosts Updater 通过挂载 k8s 集群中特定的 ConfigMaps 资源为工作负载的 Volume,并通过 Linux 系统的 inotify (inode notify) 机制来观察配置文件的变更来更新工作节点的 /etc/hosts 文件。 因为需要修改工作节点的 /etc/hosts 文件,所以我们通常使用 Daemonset 工作负载来部署。并且,需要在每一个需要更新 hosts 的节点上运行。为了能够更广泛的运行到集群内的节点上,我们在 DaemonSet 的 yaml 文件中默认使用了下列污点容忍:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
- key: node.kubernetes.io/disk-pressure
effect: NoSchedule
- key: node.kubernetes.io/memory-pressure
effect: NoSchedule
- key: node.kubernetes.io/network-unavailable
effect: NoSchedule
- key: node.kubernetes.io/not-ready
effect: NoExecute
- key: node.kubernetes.io/pid-pressure
effect: NoSchedule
- key: node.kubernetes.io/unreachable
effect: NoExecute
- key: node.kubernetes.io/unschedulable
effect: NoSchedule

部署与使用

在部署前,我们需要在准备部署 Hosts Updater 的 Namespace 下(如 kube-system)新建 ConfigMaps 资源 updater-config,然后再创建 DaemonSet
如果需要增加或者删除 hosts 条目,编辑 ConfigMaps 资源 updater-config 即可。ConfigMaps 示例如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: updater-config
namespace: kube-system
data:
hosts.yaml: |
- domain: demo.tencentcloudcr.com
ip: 10.0.0.2
disabled: false
- domain: vpc-demo.tencentcloudcr.com
ip: 10.0.0.2
disabled: false
注意:
由于使用了 k8s ConfigMaps Volume,在编辑了 updater-config 后 hosts 文件更新的时间取决于工作节点 kubelet 的 sync period(默认值为一分钟)和 ConfigMapsCache TTL (默认值为一分钟)。该问题的详细资料请参考 k8s 官方文档


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈