程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Kubernetes Pod 无法使用服务与另一个 Pod 通信大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Kubernetes Pod 无法使用服务与另一个 Pod 通信?

开发过程中遇到Kubernetes Pod 无法使用服务与另一个 Pod 通信的问题如何解决?下面主要结合日常开发的经验,给出你关于Kubernetes Pod 无法使用服务与另一个 Pod 通信的解决方法建议,希望对你解决Kubernetes Pod 无法使用服务与另一个 Pod 通信有所启发或帮助;

我有 2 个 Pod,每个 Pod 有 1 个容器。容器名称是:

    @H_433_5@mc1 @H_433_5@mc2

@H_888_11@mc1 容器托管一个 asp.net core razor pages 应用,而 @H_888_11@mc2 托管一个 web API 应用。现在 mc1 必须与 mc2 通信,即剃刀页面应用程序必须调用 web API 应用程序。

我试图在下图中解释它:

Kubernetes Pod 无法使用服务与另一个 Pod 通信

我为这 2 个 pod 创建了 2 个部署:

name: dep1
labels:
    app: mc-app1
spec:
  replicas: 1
  SELEctor: 
    matchLabels:
      app: mc-app1
  template:
    Metadata: 
      labels:
        app: mc-app1
    spec:
      containers:
        - name: mc1
          image: multiapp
          imagePullPolicy: Never
          ports:
            - containerPort: 80
---
APIVersion: apps/v1
kind: Deployment
Metadata:
  name: dep2
  labels:
    app: mc-app2
spec:
  replicas: 1
  SELEctor: 
    matchLabels:
      app: mc-app2
  template:
    Metadata: 
      labels:
        app: mc-app2
    spec:
      containers:
        - name: mc2
          image: multiAPI
          imagePullPolicy: Never
          ports:
            - containerPort: 80

我还为包含 mc2 容器(即 web API 应用程序)的 POD 创建了一个服务。

APIVersion: v1
kind: service
Metadata:
  name: multi-container-service-2
spec:
  type: NodePort
  SELEctor:
    app: mc-app2
  ports:
    - port: 8080
      targetPort: 80

部署和服务已成功应用到 k8s 集群。

接下来,我进入容器“mc1”并尝试卷曲名为 @H_888_11@multi-container-service-2 的服务,但这不起作用。

我收到错误:

curl: (7) 无法连接到 multi-container-service-2 端口 80:连接被拒绝

在下图中,我使用以下命令进入容器 @H_888_11@mc1 的外壳:

kubectl exec -it dep1-5c78b8c889-tjzzr -c mc1 -- /bin/bash

Kubernetes Pod 无法使用服务与另一个 Pod 通信

在下一张图片中,我正在做出现错误的卷曲:

Kubernetes Pod 无法使用服务与另一个 Pod 通信

请注意,我已经使用下面给出的 2 个命令安装了 curl:

apt-get update
apt-get install curl

为什么不能使用服务调用 mc2 容器中的应用程序?我的操作系统是 windows 10。

我正在这两个教程的帮助下:

  1. Build ASP.NET Core applications deployed as Linux containers into an AKS/Kubernetes orchestrator
  2. Communicate between Containers in the Same Pod Using a Shared Volume

解决方法

您已将服务端口设置为 8080,但您正在端口 80(这是容器的端口)上调用服务。

这应该有效:

curl http://multi-container-service-2:8080

,

如official kubernetes documentation:

中所述

Kubernetes 为服务和 Pod 创建 DNS 记录。您可以使用一致的 DNS 名称而不是 IP 地址联系服务。

为了通过集群中的服务进行 Pod-to-Pod 通信,您必须使用以下语法:

def login_not_required(f): @wraps(f) def decorated_function(*args,**kwargs): if "logged_in" in session: return redirect(url_for("index")) else: return f(*args,**kwargs) return decorated_function

因此,在您的情况下,使用 curl 将是:

{service_name}.{namespacE}.svc.cluster.local

大佬总结

以上是大佬教程为你收集整理的Kubernetes Pod 无法使用服务与另一个 Pod 通信全部内容,希望文章能够帮你解决Kubernetes Pod 无法使用服务与另一个 Pod 通信所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:通信