当前位置: 首页 > 知识库问答 >
问题:

kubernetese Nginx Ingress TCP Mariadb服务无法连接

井昊乾
2023-03-14

我正在尝试使用Nginx入口公开Mariadb部署。

到目前为止,我已经查看了一些参考资料,但无法解决我的问题,如下所示。

>

为什么ingress nginx控制器tcp服务不工作?

Kubernetes 1.16 Nginx入口(0.26.1)TCP Mariadb/MySQL服务不工作

https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/

当我使用nodeport而不是nginx入口时,我能够连接。

但当我使用nginx入口时,我无法连接。

我使用以下三个命令来获取nginx控制器的端口号。

INGRESSNODEPORTIP=$(kubectl get ingresses mariadb-ingress -o jsonpath='{ .status.loadBalancer.ingress[].ip }')
NODEPORT=$(kubectl get svc -n ingress-nginx ingress-nginx-controller -o jsonpath='{ .spec.ports[?(@.name=="http")].nodePort }')
echo $INGRESSNODEPORTIP:$NODEPORT

我得到以下IP和端口。

162.187.99.102:31358

当我尝试连接时,正如你所看到的,它没有连接。

我的清单如下。

首先是部署清单。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      appmariadbpods: ohr-maria-db-pods
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        appmariadbpods: ohr-maria-db-pods
    spec:
      containers:
      - env:
        - name: "ALLOW_EMPTY_PASSWORD"
          value: "true"
        - name: MARIADB_DATABASE
          value: bitnami_orangehrm
        - name: MARIADB_USER
          value: bn_orangehrm
        image: docker.io/bitnami/mariadb:10.3
        name: mariadb-container
        ports:
        - containerPort: 3306
        volumeMounts:
        - mountPath: /bitnami/mariadb
          name: mariadb-data
      volumes:
      - name: mariadb-data
        persistentVolumeClaim:
          claimName: maria-db-pvc

持久卷如下所示。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: maria-db-pv
spec:
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 162.187.99.200
    path: "/export/volumes/ohr-maria-db"

持久卷声明如下。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: maria-db-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

服务如下

apiVersion: v1
kind: Service
metadata:
  name: ohr-maria-db-service-ingress
spec:
  selector:
    appmariadbpods: ohr-maria-db-pods
  ports:
  - name: ohr-maria-db-ingress
    port: 3306
    protocol: TCP
    targetPort: 3306

配置映射。

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  3306: "default/ohr-maria-db-service-ingress:3306"

最后是入口

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mariadb-ingress
spec:
  defaultBackend:
    service:
        name: ohr-maria-db-service # hello-world-service-default
        port: 
            number: 3306

nginx控制器使用此处的部署文件进行部署。

kubectl apply -f deploy.yaml

让我困惑的是,当我使用nodeport时,服务会变成这样,这样就可以了!

apiVersion: v1
kind: Service
metadata:
  name: ohr-maria-db-service
spec:
  type: NodePort
  selector:
    appmariadbpods: ohr-maria-db-pods
  ports:
  - name: ohr-maria-db-nodeport
    port: 3306
    protocol: TCP
    targetPort: 3306
    nodePort: 30011

为什么我的nginx ingress不工作?这让我抓狂,任何帮助都将不胜感激。

共有1个答案

益和雅
2023-03-14

如果您检查从nginx获得的节点端口是

162.187.99.102:31358

端口是31358,当请求进入时,请让我知道映射应该转到数据库?

而对于服务,您可以看到目标端口和端口的端口号直接映射。

还有,你发射的命令

INGRESSNODEPORTIP=$(kubectl get ingresses mariadb-ingress -o jsonpath='{ .status.loadBalancer.ingress[].ip }')

这将为负载平衡器提供IP,我认为默认情况下,负载平衡器将是HTTP负载平衡器。

NODEPORT=$(kubectl get svc -n ingress-nginx ingress-nginx-controller -o jsonpath='{ .spec.ports[?(@.name=="http")].nodePort }')

这是您正在获取的节点端口,但节点将仅与从属节点的IP或工作节点一起工作,而不与ingress创建的负载平衡器一起工作。

echo $INGRESSNODEPORTIP:$NODEPORT
 类似资料:
  • 问题内容: 我将相机设置为,并且可以正常工作,但是如果将其更改为而不是它,则会崩溃并显示以下错误… 它崩溃的方法是.. 崩溃于 我的清单文件有 如何解决此问题,以便可以在Portrait中查看我的应用程序? 问题答案: 供您参考,这是我在应用程序中使用的SurfaceHolderCallBack内部类,该类在纵向模式下的Nexus One 2.2上运行良好- 希望对您有所帮助。 编辑:“这有效”

  • 显示以下错误:: 线程“main”Java.lang.RuntimeException:javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:587,Sendmail.Main(Sendmail.Java:54)上的响应:421,原因是:javax.mail.MessagingException:无法连接到SMTP主机:localhost,端

  • 我在设置打开班次时遇到问题,并在连接到我的服务器域后收到以下错误: 我不确定这是在告诉我做什么。我尝试按字面意思使用指令,但它无法识别命令。 有什么想法吗?

  • 问题内容: 我不确定如何解决此问题 我不知道为什么在尝试以下操作时会出现此错误: 当我尝试连接到postgres时: 问题答案: 可能是一些问题: PostgreSQL没有运行。用sudo检查 你的PostgresSQl不在端口5432上运行。你可以检查其键入 尝试连接到数据库时出现错误,例如用户名,密码或数据库名。检查它们是否是postgres要求你连接的对象,并且这是你要访问的db_name。

  • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

  • E/AndroidRuntime:致命异常:main java.lang.Runtime异常:无法连接到Android.Hardware.camera.Native_Setup(本机方法)(Android.Hardware.camera.Open(camera.java:423)(Android.Hardware.camera.Open)(camera.java:384)(ge.baqari.de

  • 注意:连接是LAN,在隧道模式下工作正常,但速度较慢