我对kubernetes/docker很新,所以如果这是一个愚蠢的问题,请道歉.
我有一个正在访问一些服务的pod.在我的容器中,我正在运行python脚本,需要访问该服务.目前我正在使用服务的IP地址.
服务IP地址是稳定的还是使用环境变量更好?如果是这样,那么做的一些提示会很棒.
服务文档的开头部分为服务提供了动力,这意味着IP地址稳定,但我从未明确指出:
虽然每个Pod都有自己的IP地址,但即使是那些IP地址也不能依赖它们随时间变得稳定.这会导致一个问题:如果某些Pod(让我们称之为后端)为Kubernetes集群内的其他Pod(让我们称之为前端)提供功能,那些前端如何找出并跟踪该集合中的哪些后端?
输入服务.
我的pod规格供参考:
kind: Pod
apiVersion: v1
metadata:
name: fetchdataiso
labels:
name: fetchdataiso
spec:
containers:
- name: fetchdataiso
image: 192.111.1.11:5000/ncllc/fetch_data
command: ["python"]
args: ["feed/fetch_data.py", "-hf", "10.222.222.51", "-pf", "8880", "-hi", "10.223.222.173", "-pi","9101"]
Run Code Online (Sandbox Code Playgroud)
简短的回答是“是的,服务 IP 可以更改”
$ kubectl apply -f test.svc.yml
service "test" created
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.12.0.1 <none> 443/TCP 10d
test 10.12.172.156 <none> 80/TCP 6s
$ kubectl delete svc test
service "test" deleted
$ kubectl apply -f test.svc.yml
service "test" created
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.12.0.1 <none> 443/TCP 10d
test 10.12.254.241 <none> 80/TCP 3s
Run Code Online (Sandbox Code Playgroud)
长的答案是,如果您正确使用它,您将没有问题。在您的问题范围内更重要的是,ENV 变量比 DNS/IP 耦合更糟糕。你应该通过service或service.namespace或者甚至像test.default.svc.cluster.local这样的完整路径来引用你的服务。这将解析为服务 ClusterIP,与您的 ENV 相反,它可以重新解析为新 IP(除非您明确删除并重新创建服务,否则这可能永远不会发生)而正在运行的进程的 ENV 不会更改
归档时间: |
|
查看次数: |
2989 次 |
最近记录: |