我正在尝试在我的Kubernetes集群中安装服务网格,为此我想完成以下任务:
为了做到这一点,我将以下配置添加到应用程序部署的容器规范中:
# deployment.spec.template.spec.containers[0]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: HTTP_PROXY
value: http://$(NODE_NAME):4140
但是,我没有正确公开服务网格;我已尝试使用type: ClusterIP
和type: LoadBalancer
两种服务,但前者无法连接,后者我公开公开服务网格,我不想这样做。我也尝试过使用NodePort
的东西,但我甚至还没有找到有效的配置(似乎有一些意见NodePort should be avoided if possible ...)
我应该如何在端口4140-4142和9990上公开服务网格,以某种方式在特定节点(当前节点)上可以从其他网格中获取?
答案 0 :(得分:0)
您可以将您的广告连播放入主机网络空间。这样您就不需要任何服务,您可以在每个节点上PodSpec
声明的端口上访问您的Pod。
您可以通过将服务绑定到127.0.0.1而不是0.0.0.0
来避免外部可访问性如果您想尝试一下,可以通过将以下内容添加到DaemonSet的PodSpec中来在主机网络空间中运行端口:
hostNetwork: true
请注意,使用此解决方案,您需要使用主机的IP地址才能连接到您的广告连播。
要在hostNetworked pod中获取内部DNS名称解析,您还需要设置DNS策略,如下所示:
dnsPolicy: ClusterFirstWithHostNet
这将确保您的pod将使用内部DNS服务器进行名称解析。