【问题标题】:How to connect my webservice with mysql on k8s?如何在 k8s 上将我的 web 服务与 mysql 连接?
【发布时间】:2021-02-20 06:29:45
【问题描述】:

我正在尝试部署一个必须与 Mysql 连接的 web 服务。当我在 docker-compose 上运行它们时一切正常,但在 Kubernetes (Minikube) 上我收到以下错误:dial tcp: lookup mysql on 10.96.0.10:53: no such host强>。知道我可能缺少什么吗?这是我的清单文件:

该网络服务必须可以通过 Internet 访问,并且正在侦听端口 8080。服务:

apiVersion: v1
kind: Service
metadata:
  name: webservice-svc
spec:
  selector:
    app: blur
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
  type: NodePort

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: blur-service
spec:
  selector:
    matchLabels:
      app: blur
  template:
    metadata:
      labels:
        app: blur
    spec:
      containers:
      - name: blur-service
        image: marjugoncalves/blur-service
        ports:
        - containerPort: 8080

mysql的manifest-files:

服务:

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  selector:
    app: blur
  ports: 
    - protocol: TCP
      port: 3306
      targetPort: 3306

部署:

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: mysql
spec:
  selector:
    matchLabels:
      app: blur
  template:
    metadata:
      labels:
        app: blur
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        ports:
        - containerPort: 3306

【问题讨论】:

  • 另请注意,Service mysql-service 将连接到任何标有 app: blur 的 Pod,其中包括由 Deployment blur-service 创建的 Pod。您可能需要更具体的标签,以便服务仅选择 MySQL Pod。
  • 谢谢你的提示,我的朋友!

标签: mysql docker kubernetes minikube


【解决方案1】:

我发现了我的错误:在我的应用程序中,在用于连接数据库的字符串中,我使用“mysql”作为主机名,因此服务名称也必须像这样调用.我的服务应该是这样的:

apiVersion: v1
kind: Service
metadata:
  name: mysql //here was the mistake
spec:
  selector:
    app: blur
  ports: 
    - protocol: TCP
      port: 3306
      targetPort: 3306

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多