我正在运行我的应用程序 EKS 集群,几天前我们遇到了问题,假设我们的应用程序 pod 在不同的 AWS 节点上运行,副本计数为 1,让我们将虚拟机名称称为如下。
ams-99547bd55-9fp6r 1/1 Running 0 7m31s 10.255.114.81 ip-10-255-12-11.eu-central-1.compute.internal
mongodb-58746b7584-z82nd 1/1 Running 0 21h 10.255.113.10 ip-10-255-12-11.eu-central-1.compute.internal
这里是我的运行服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ams-service NodePort 172.20.81.165 <none> 3030:30010/TCP 18m
mongodb-service NodePort 172.20.158.81 <none> 27017:30003/TCP 15d
我正在运行一个作为配置映射的setting.conf.yaml文件,其中包含与应用程序相关的配置。
apiVersion: v1
kind: ConfigMap
metadata:
name: ama-settings
labels:
conf: ams-settings
data:
config : |
"git": {
"prefixUrl": "ssh://git@10.255.12.11:30001/app-server/repos/ams/",
"author": {
"name": "app poc",
"mail": "app@domain.com"
},
"mongodb": {
"host": "10.255.12.11",
"port": "30003",
"database": "ams",
"ssl": false,
}
这正如我们所期望的工作,但如果我的Pod所在的现有节点IP发生变化,有些情况下,当我删除正在运行的Pod并尝试重新部署时,我的Pod会被放置在其他一些AWS节点上,基本上是EC2 VM。
在此期间,我的应用程序无法工作,然后我需要编辑我的setting.conf.yaml文件,将其更新为新的AWS节点IP,即我的Pod所在的节点IP。
问题是如何使用服务名称而不是AWS节点IP,因为我们不希望在任何现有虚拟机停机的情况下频繁更改IP地址。