我正在学习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地址。
如何实现?
答案 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