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

如何访问MySql托管与Nginx进入库伯内特斯从客户端

匡翰
2023-03-14

我不熟悉Kubernetes和Nginx Ingress工具,现在我正尝试在AWS上使用Nginx Ingress中的VHost托管MySql服务。我创建了一个类似以下内容的文件:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      protocol: TCP
  selector:
    app: mysql
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql
          imagePullPolicy: IfNotPresent
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - name: http
              containerPort: 3306
              protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mysql
  labels:
    app: mysql
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: mysql.example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: mysql
              servicePort: 3306

我的LoadBalancer(由Nginx Inete创建)端口配置如下所示:

80 (TCP) forwarding to 32078 (TCP)
Stickiness options not available for TCP protocols

443 (TCP) forwarding to 31480 (TCP)
Stickiness options not available for TCP protocols

mysql。实例com指向我的ELB。

我期待这样的东西,从我的本地框我可以连接到MySql,如果尝试这样的东西:

mysql -h mysql.example.com -u root -P 80 -p

这是行不通的。如果我尝试使用LoadBalancer,它会为我创建一个新的ELB,它按预期工作。

我不确定这是否是我想要在这里实现的正确方法。请帮助我,如果有一种方法可以实现同样的使用入口与NodePort。

共有2个答案

隆宏爽
2023-03-14

我使用为数据库集群IP创建的入口中指定的主机名,通过ingress nginx成功访问了托管在Google Kubernetes引擎上的MariaDB/MySQL。

根据文档,只需创建配置映射并在为入口定义的服务中公开端口。

这帮助我了解了如何设置tcp服务配置映射和udp服务配置映射标志。

黄啸
2023-03-14

Kubernetes入口作为一个通用概念并不能解决暴露/路由TCP/UDP服务的问题,如中所述https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md如果您想在入口中使用自定义配置映射,那么应该使用自定义配置映射。请记住,它永远不会使用主机名进行路由,因为这是HTTP的一个功能,而不是TCP。

 类似资料:
  • 我的公司有一个伪造的CA证书。实例com和一张伪造地图的唱片。实例com连接到我们的负载平衡器的IP 负载平衡器正在将流量转发到我们的Kubernetes群集。 在集群中,我部署了nginx ingress helm图表,在30200处公开了https节点端口 我根据上述证书创建了一个名为test secret的k8s TLS机密。 我部署了一个带有服务“test”的应用程序,并安装了以下入口:

  • 我有一个朋友允许我访问他的kube集群(托管在IBM云上)。 我可以通过IBM云控制台登录 但是,当我试图通过kubectl访问它们时:kubectl get节点 结果显示一条错误消息: 服务器错误(禁止):节点被禁止:用户https://iam.ng.bluemix.net/kubernetes#无法在群集范围内列出节点。 为什么控制台和CLI之间的访问(RBAC)会有所不同?

  • 我是整个Kubernetes社区的新手,目前我正在尝试使用Ingress Nginx来暴露仪表板。我试过几种方法,但我找不到一个很好的解释如何暴露仪表板入口。我现在拥有的只是一个仪表板,可以通过“kubectl port forward”访问。我还安装了Ingress Nginx,控制器正在运行。我应该如何开始为kubernetes仪表板创建入口?

  • 我怎样才能使用入口呢?我尝试使用NodePort和--Target etPort=1001,我在servicePort中添加了80在。 kubectl公开部署测试--Target-port=1001--type=NodePort 我得到了错误 找不到后端-404 我使用的是正确的方法还是需要遵循其他方法?

  • 我在GKE上设置了Istio(Kubernetes入口模式,而不是Istio网关)。但是,我无法使用curl从外部访问 istio ingressgateway LoadBalancer 10.48.11.240 35.222.111.100 15020:30115/TCP,80:31420/TCP,443:32019/TCP,31400:31267/TCP,15029:30180/TCP,150

  • 如果之前已经回答过,我很抱歉,但我对Ingress Nginx正在与服务合作感到有点困惑。 我正在尝试在我的库伯内特斯环境中实现nginx入口。到目前为止,我有一个ingres-nginx-控制器-部署设置,以及默认后端的部署和服务。我仍然需要创建我的实际入口资源、ingres-nginx-控制器-服务和我的后端。 <代码>卷曲 我的问题是这是怎么可能的,我可以在集群之外的浏览器上为我的节点访问端