通过在入口URL上查找来访问POD的IP地址

时间:2019-02-16 04:28:17

标签: kubernetes kubernetes-ingress

我正在学习Kubernetes,并在Kubernetes(在AWS上)部署了一个无头服务,该服务通过nginx入口暴露给外部世界。

我希望import time import cv2 import mss import numpy as np Frame = [0, 0, 1920, 1080] def GetFrame(): #########solution here with mss.mss() as sct: #<-- thats the solution.... yep monitor = {"top": Frame[0], "left": Frame[1], "width": Frame[2], "height": Frame[3]} sct_img = sct.grab(monitor) return np.asarray(sct_img) while (True): inimg = GetFrame() cv2.imshow("Normal memory!!", inimg) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() 直接返回POD的IP地址。 如何实现?

2 个答案:

答案 0 :(得分:1)

在集群内部:

<ingress_host>解析为Pod IP不是一个好主意。通常的设计是让不同种类的Pod以不同的路径在一个hostname上服务,但是您只能为其设置一个(或一组,具有DNS负载平衡)IP记录。

但是,您可以通过在初始化脚本的<ingress_host> <Pod_IP>中添加/etc/hosts来完成此操作,因为您可以通过执行<Pod_IP>来获取nslookup <headless_service>

HostAlias是另一种选择,如果您在应用部署之前知道了Pod ip。

从外面:

我认为在集群外不可能。因为您需要先进行DNS查找才能进入入口控制器,这意味着必须将其解析为入口控制器的IP。

最后,在Pod上使用无头服务是一个坏主意,因为许多应用程序一次执行DNS查找并缓存结果,这可能会带来问题,因为Pod的IP可以频繁地“更改”。

答案 1 :(得分:1)

如果使用选择器声明“无头”服务,则该服务的内部DNS将配置为直接返回其pod的IP地址。这是一种不寻常的配置,您还应该预期会对该服务的其他群集内部用户产生影响。

已记录在here中。示例:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  clusterIP: None
  selector:
    app: MyApp
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 9376