我尝试在kubernetes集群中配置envoy,方法如下:https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/configuration-dynamic-filesystem
我的静态特使配置:
node:
cluster: test-cluster
id: test-id
dynamic_resources:
cds_config:
path: /var/lib/envoy/cds.yaml
lds_config:
path: /var/lib/envoy/lds.yaml
admin:
access_log_path: "/dev/null"
address:
socket_address:
address: 0.0.0.0
port_value: 19000
configmap中的动态配置会挂载到,并包含档案。
我使用configmap将配置文件(cds.yaml
和lds.yaml
)挂载到envoy pod(/var/lib/envoy/
),但不幸的是,当我更改configmap中的配置时,envoy配置没有更改。挂载的配置文件按预期更新。
我可以从日志中看到envoy监视配置文件:
[2021-03-01 17:50:21.063][1][debug][file] [source/common/filesystem/inotify/watcher_impl.cc:47] added watch for directory: '/var/lib/envoy' file: 'cds.yaml' fd: 1
[2021-03-01 17:50:21.063][1][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:140] maybe finish initialize state: 1
[2021-03-01 17:50:21.063][1][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:149] maybe finish initialize primary init clusters empty: true
[2021-03-01 17:50:21.063][1][info][config] [source/server/configuration_impl.cc:95] loading 0 listener(s)
[2021-03-01 17:50:21.063][1][info][config] [source/server/configuration_impl.cc:107] loading stats configuration
[2021-03-01 17:50:21.063][1][debug][file] [source/common/filesystem/inotify/watcher_impl.cc:47] added watch for directory: '/var/lib/envoy' file: 'lds.yaml' fd: 1
并且一旦我更新了配置Map,我还可以获得一些更改的日志:
[2021-03-01 17:51:50.881][1][debug][file] [source/common/filesystem/inotify/watcher_impl.cc:72] notification: fd: 1 mask: 80 file: ..data
[2021-03-01 17:51:50.881][1][debug][file] [source/common/filesystem/inotify/watcher_impl.cc:72] notification: fd: 1 mask: 80 file: ..data
但Envoy不重新加载配置。
Kubernetes似乎通过更改目录来更新配置文件,Envoy无法识别配置文件已更改。
有没有简单的方法来解决这个问题?我不想在我的测试中运行xDS服务器,但是热配置重新加载对我的测试来说是很好的😇
谢谢你!
2条答案
按热度按时间vfh0ocws1#
我认为你的问题的答案是Envoy用来重新加载它的xDS配置的文件系统事件不是由configmap卷触发的。更多的解释请参见交叉实用程序的自述文件。
dzhpxtsq2#
现在可以通过在
path_config_source
中使用watched_directory
来解决此问题。