连接到kubernetes mysql服务时,go-mysql连接被拒绝

时间:2016-11-13 14:01:45

标签: mysql go kubernetes google-kubernetes-engine

使用标准软件包连接到带有go应用程序的mysql实例时出现问题。 这是我的连接字符串/日志

    [13 Nov 16 13:53 +0000] [INFO] connecting to MySQL.. root:awsomepass@tcp(a-mysql-0:3340)/db?charset=utf8&parseTime=True&loc=Local
    2016/11/13 13:53:25 dial tcp 10.108.1.35:3340: getsockopt: connection refused

我试过

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

这里是我如何建立连接,只是基本的,只有字符串连接

db, err := sql.Open("mysql", "root:awsomepass@tcp(a-mysql-0:3340)/db?charset=utf8&parseTime=True&loc=Local")
if err != nil {
    log.Fatal(err)
}

我可以ping服务,用另一个pod中的mysql-client连接它。

    # can connect without port for service
    / # mysql -u root -h a-mysql-0 -p
    Enter password:
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MySQL connection id is 11
    Server version: 5.7.16 MySQL Community Server (GPL)

    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MySQL [(none)]> Ctrl-C -- exit!
    Aborted

    # can't' connect with port for service
    / # mysql -u root -h a-mysql-0:3340 -p
    Enter password:
    ERROR 2005 (HY000): Unknown MySQL server host 'a-mysql-0:3340' (-3)

和mysql-service

    ➜  stg git:(develop) ✗ kubectl describe svc a-mysql-0
    Name:            a-mysql-0
    Namespace:        default
    Labels:            name=a-mysql-0
                tier=database
                type=mysql
    Selector:        name=a-mysql-0,tier=database
    Type:            ClusterIP
    IP:            None
    Port:            a-mysql-0    3340/TCP
    Endpoints:        10.108.1.35:3340
    Session Affinity:    None
    No events.

我有什么遗漏或许可吗?

1 个答案:

答案 0 :(得分:2)

得到了来自mav的kubernetes-slack的回复。我正在访问mysql-service错误的container-port。默认的mysql端口是3306。我以为我正在使用一个公开3340的自定义容器。