我有一個應用程序在其中運行kubernetes,其中有一個通過configmaps. kubectl update configmaps xyz現在,當這個文件(來自 configmap)更新時(比方說通過命令),我想從應用程序內部執行一些操作。假設我使用以下命令創建了一個 configmap:kubectl create configmap myy-config --from-file=config.json我的部署是這樣創建的:apiVersion: apps/v1beta2kind: Deploymentmetadata: name: myappspec: selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - image: "xyz" name: myapp ports: - containerPort: 5566 volumeMounts: - mountPath: /myapp/config name: config dnsPolicy: ClusterFirstWithHostNet volumes: - name: config configMap: name: my-config現在,如果我這樣做,kubectl exec -it <pod> sh我可以看到該文件。如果我使用編輯 configmapkubectl edit configmap my-config并更改內容,則在我的 pod 中運行的應用程序不會收到文件更改通知。我正在為應用程序使用 GO Lang,它沒有收到文件上的 fsnotify,/myapp/config/config.json即使我可以看到編輯后文件已更改。如果我在筆記本電腦上運行相同的應用程序,當然,代碼會收到 fsnotify 并且我的應用程序會更新它的配置。來自 kubernetes 的相同代碼與來自 configmap 的文件,它不起作用。我已經閱讀過其他類似這樣的SOF 問題和其他各種問題,但沒有什么特別針對我面臨的問題的解決方案。我知道該文件(來自 configmap)是一個符號鏈接,實際文件位于一個名為..data/config.json. 我也嘗試添加該文件,但仍然沒有收到 fsnotify 信號。是否有可能為來自應用程序中的 configmap(以及機密)的文件獲取 fsnotify 信號?如果是這樣,有人可以幫助我并展示如何去做(最好是在 GO lang 中)嗎?
2 回答

白豬掌柜的
TA貢獻1893條經驗 獲得超10個贊
您可能會遇到這樣的問題:
當 ConfigMap 發生變化時,它包含的配置文件的真實路徑也發生了變化,但這有點被 2 級符號鏈接“隱藏”了:[..]
因此,您似乎需要遵循符號鏈接鏈并觀察它。由于您的應用程序是用 編寫的,go
您可以直接使用,因為添加了WatchConfig 和 Kubernetesspf13/viper
功能。
或者,您可以通過 Kubernetes API 獲得有關ConfigMap 更改的通知。這很可能需要預先配置一些訪問規則。
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報
0/150
提交
取消