【问题标题】:How to assign each kubernetes pod to a local ip如何将每个 kubernetes pod 分配给本地 ip
【发布时间】:2021-08-23 02:16:54
【问题描述】:

我希望每个 pod 在扩展时都在单独的 ip(lan/local) 上运行。 (扩展我的世界服务器网络)。他们可能已经这样做了,因为我在容器中没有看到端口冲突,但我不知道他们分配给什么 ip。顺便说一句,我正在使用 k8s。

【问题讨论】:

  • “在单独的 ip(lan/local) 上运行”是什么意思?您想与 pod 共享主机网络,还是只是确保所有 pod 都在同一个网络中并且可以从您的主机访问它们?

标签: linux kubernetes k3s


【解决方案1】:

您的查询的答案是 kubernetes 中的 CNI,因为它在您的集群中发挥了从子网 ip 到流量通信的网络魔力。 Kubernetes 就是在应用程序之间共享机器。通常,共享机器需要确保两个应用程序不会尝试使用相同的端口。跨多个开发人员协调端口很难大规模进行,并且会使用户面临无法控制的集群级问题。

阅读K8's networking model

【讨论】:

    【解决方案2】:

    您可以利用 Kubernetes 服务为容器分配 IP 地址。这是一种将在一组 Pod 上运行的应用程序公开为网络服务的抽象方式。

    共有三种类型的服务 -

    1. ClusterIP - 这是默认设置。在集群内部 IP 上公开服务。选择此值使服务只能从集群内访问。
    2. Lo​​adBalancer - 服务暴露在外部,我想这就是您可能需要的。
    3. NodePort - 在每个节点的 IP 上的静态端口 (NodePort) 上公开服务。自动创建 NodePort 服务路由到的 ClusterIP 服务。您可以通过以下请求从集群外部联系 NodePort 服务:。

    这是一个使用 LoadBalancer 和集群 IP 的示例 -

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
    spec:
      selector:
        app: MyApp
      ports:
        - protocol: TCP
          port: 80
          targetPort: 9376
      clusterIP: 10.0.171.239
      type: LoadBalancer
    status:
      loadBalancer:
        ingress:
        - ip: 192.0.2.127 
    

    More details can be found here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多