我有一个应用程序(比如说Integration-protocol-api)
而这个应用程序想与其他应用程序交谈,但这个应用程序位于另一个网络上(让我们称之为另一个集成协议)
问题是,在另一个集成协议方面,白名单存在,只允许从选定的IP地址连接到它。
但我的integration-protocol-api是Dockerized并在Kubernetes集群上运行,因此当我重新启动pod时,ip地址正在改变。
如何将Public和Static ip分配给我的Kubernetes Pod?
答案 0 :(得分:3)
但是我的integration-protocol-api是Dockerized并在Kubernetes集群上运行,因此当我重新启动pod时,ip地址正在改变。如何将Public和Static ip分配给我的Kubernetes Pod
有几种方法,具体取决于您的实际设置/需求,我会尝试在此处提供一些选项:
将pod连接到特定节点,并通过服务公开该节点的IP地址。这将是这样的:
# Quick deployment/pod manifest node selector (affinity is better)
...
spec:
nodeSelector:
kubernetes.io/hostname: my-node-name
...
# Service manifest
apiVersion: v1
kind: Service
metadata:
name: svc-myservice
labels:
app: myapp
tier: frontend
spec:
selector:
app: myapp
tier: frontend
ports:
- name: tcpserviceport
protocol: TCP
port: 8080
targetPort: 80
externalIPs:
- 111.222.222.111
Pod应位于同一名称空间中,通过节点选择器或关联性规则绑定到该节点,并且具有与选择器中相同的标签以供服务选择它。在此示例中,名为my-node-name的群集节点的IP地址应为111.222.222.111,并且可通过端口8080和该IP地址访问。
如果适用,请仅通过入口和白名单进入公共IP来公开服务。根据您的命名空间分离,您可以使用服务名称(在命名空间范围内)或FQDN(例如:
)通过相应的服务在入口中引用您的pod(无论它在哪里运行)<service-name>.<namespace-name>.svc.cluster.local
以下是一些方法的概述,以便从kubernetes docs中更加说明:https://kubernetes.io/docs/tutorials/kubernetes-basics/expose-intro/
答案 1 :(得分:3)
pod使用它的节点IP地址作为源进行任何请求。因此,您可以将群集节点列入白名单&#39; IP地址,它应该可以工作。