我正在尝试在我的 Kubernetes 集群中安装服务网格,为此我想完成以下操作:
为此,我在应用程序部署的容器规范中添加了以下配置:
# deployment.spec.template.spec.containers[0]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: HTTP_PROXY
value: http://$(NODE_NAME):4140
Run Code Online (Sandbox Code Playgroud)
但是,我未能正确公开服务网格;我试着用这两种服务type: ClusterIP
和type: LoadBalancer
,但与前我无法连接,并与后者我公开服务网公开,这是我不想做的事。我也尝试过使用NodePort
,但我什至无法在那里找出有效的配置(并且似乎有些人认为应该尽可能避免使用 NodePort ......)。
我应该如何公开服务网格,最好是在端口 4140-4142 和 9990 上,以一种可以从其他 Pod 访问特定节点(当前节点)的方式公开?
您可以将 pod 放在主机网络空间中。这样你就不需要任何服务,你的 Pod 将可以在你PodSpec
在每个节点上声明的端口上访问。
您可以通过将您的服务绑定到 127.0.0.1 而不是 0.0.0.0 来避免外部可达性
如果你想尝试一下,你可以通过在你的 DaemonSet 的 PodSpec 中添加以下内容来在主机网络空间中运行一个端口:
hostNetwork: true
Run Code Online (Sandbox Code Playgroud)
请注意,使用此解决方案,您需要使用主机的 IP 地址才能连接到 Pod。
为了在您的 hostNetworked pod 中获得内部 DNS 名称解析,您还需要像这样设置 DNS 策略:
dnsPolicy: ClusterFirstWithHostNet
Run Code Online (Sandbox Code Playgroud)
这将确保您的 pod 将使用内部 DNS 服务器进行名称解析。
归档时间: |
|
查看次数: |
3277 次 |
最近记录: |