Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将公共ip分配给在Kubernetes上运行的服务_Kubernetes - Fatal编程技术网

将公共ip分配给在Kubernetes上运行的服务

将公共ip分配给在Kubernetes上运行的服务,kubernetes,Kubernetes,我有一个应用程序(比如集成协议api) 该应用程序想要与其他应用程序通信,但该应用程序位于另一个网络上(我们称之为另一个集成协议) 问题是,在另一个集成协议端存在白名单,它只允许从选定的ip地址连接到白名单。 但我的集成协议api是固定的,在Kubernetes集群上运行,所以当我重新启动pod时,ip地址每次都在变化。 如何将公共和静态ip分配给Kubernetes吊舱 但我的集成协议api是固定的,在Kubernetes集群上运行,所以当我重新启动pod时,ip地址每次都在变化。如何将公共和

我有一个应用程序(比如集成协议api) 该应用程序想要与其他应用程序通信,但该应用程序位于另一个网络上(我们称之为另一个集成协议)
问题是,在另一个集成协议端存在白名单,它只允许从选定的ip地址连接到白名单。 但我的集成协议api是固定的,在Kubernetes集群上运行,所以当我重新启动pod时,ip地址每次都在变化。 如何将公共和静态ip分配给Kubernetes吊舱

但我的集成协议api是固定的,在Kubernetes集群上运行,所以当我重新启动pod时,ip地址每次都在变化。如何将公共和静态ip分配给Kubernetes吊舱

  • 根据您的实际设置/需要,有几种方法,我将尝试在这里给出一些选项:

    • 将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
      
      .svc.cluster.local
      
    • 以下是kubernetes文档中一些方法的良好概述,以使其更具说明性:

但我的集成协议api是固定的,在Kubernetes集群上运行,所以当我重新启动pod时,ip地址每次都在变化。如何将公共和静态ip分配给Kubernetes吊舱

  • 根据您的实际设置/需要,有几种方法,我将尝试在这里给出一些选项:

    • 将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
      
      .svc.cluster.local
      
    • 以下是kubernetes文档中一些方法的良好概述,以使其更具说明性:


pod以其节点IP地址作为源发出任何请求。因此,您可以将集群节点的IP地址列为白名单,并且它应该可以工作。

pod会以其节点IP地址作为源发出任何请求。因此,您可以将集群节点的IP地址列为白名单,这应该是可行的