Kubernetes服务IP是否会发生变化?

Shu*_*aib 8 kubernetes

我对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)

Rad*_*nka 7

简短的回答是“是的,服务 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 耦合更糟糕。你应该通过serviceservice.namespace或者甚至像test.default.svc.cluster.local这样的完整路径来引用你的服务。这将解析为服务 ClusterIP,与您的 ENV 相反,它可以重新解析为新 IP(除非您明确删除并重新创建服务,否则这可能永远不会发生)而正在运行的进程的 ENV 不会更改

  • 我认为关键是服务 IP 将保持稳定,直到您决定删除/重新创建它。但我同意使用 dns 名称更好。 (2认同)

CJ *_*len 0

业务IP地址稳定。仅当您没有更好的方法来发现 IP 地址(例如 DNS)时,才需要使用环境变量。