无法使用nginx入口公开kubernetes集群内运行的mysql tcp服务

6pp0gazn  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(284)

我在公开在kubernetes集群中运行的mysql数据库时遇到了一个问题。集群在aws上运行kops。我正在使用一个 Helm 图来显示nginx的入口:https://github.com/helm/charts/tree/master/stable/nginx-ingress

controller:
  config:
    use-proxy-protocol: "true"
  metrics:
    enabled: true
  replicaCount: 2
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
  stats:
    enabled: true
rbac:
  create: true
tcp:
  5000: default/cbioportal-prod-db-mysql:3306

在集群内,我可以通过nginx通过端口5000远程登录数据库:


# telnet eating-dingo-nginx-ingress-controller 5000

J
5.7.14
      ke_|c&tc"ui%]}mysql_native_passwordConnection closed by foreign host

但我似乎无法使用aws负载平衡器的主机名从外部进行连接。

telnet xxx.us-east-1.elb.amazonaws.com 5000
Trying x.x.x.x...

当我查看awsec2 Jmeter 板时,我看到负载平衡器的安全组允许从端口5000上的任何地方进行连接。
更新
当我使用端口3306而不是5000时,我可以连接:

tcp:
  3306: default/cbioportal-prod-db-mysql:3306

但是,现在端口已打开:

$ nmap --verbose  -Pn x.x.x.x
PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql

我遇到一个授权问题:

$ mysql -h x.x.x.x  -uroot -pabcdef
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 2

我可以直接连接到nginx控制器,而不会出现集群内的问题:

kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h eating-dingo-nginx-ingress-controller  -uroot -pabcdef

我用的是mysql掌舵图:
https://github.com/helm/charts/tree/master/stable/mysql

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题