4.1.1 Access From Within Kubernetes

An application running inside the Kubernetes Cluster can use these extracted information and can access the data in MySQL Cluster without any additional setup.

NDB Cluster tools such as ndb_mgm can use the management node service name as a connection string to connect to the management servers. MySQL clients such as mysql can use the mysqld-ext service and the password stored in rootPasswordSecretName to connect to the SQL nodes.

It is first necessary to log in to an NDB Cluster pod using kubectl, like this:

> kubectl exec -it example-ndb-mysqld-599bcfbd45-hq8ll

Now you can execute ndb_mgm to start the NDB management client, using the mnagement node service name as the connection string:

> ndb_mgm -c example-ndb-mgmd-ext

From within ndb_mgm you can issue all of the usual management client commands, as shown here:

-- NDB Cluster -- Management Client --
ndb_mgm> SHOW
Connected to Management Server at: example-ndb-mgmd-ext:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3    @172.17.0.6  (mysql-8.0.36 ndb-8.0.36, Nodegroup: 0, *)
id=4    @172.17.0.7  (mysql-8.0.36 ndb-8.0.36, Nodegroup: 0)

[ndb_mgmd(MGM)] 2 node(s)
id=1    @172.17.0.5  (mysql-8.0.36 ndb-8.0.36)
id=2    @172.17.0.8  (mysql-8.0.36 ndb-8.0.36)

[mysqld(API)]   5 node(s)
id=145  @172.17.0.10  (mysql-8.0.36 ndb-8.0.36)
id=146  @172.17.0.9  (mysql-8.0.36 ndb-8.0.36)
id=147 (not connected, accepting connect from any host)
id=148 (not connected, accepting connect from any host)
id=149 (not connected, accepting connect from any host)

ndb_mgm> ALL STATUS
Node 5: started (mysql-8.0.36 ndb-8.0.36)
Node 6: started (mysql-8.0.36 ndb-8.0.36)

ndb_mgm> EXIT

To connect to MySQL with the mysql client, use the service name example-ndb-mysqld-ext for the host name, like this:

> mysql -h example-ndb-mysqld-ext -uroot -p

Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 500
Server version: 8.0.36-cluster MySQL Cluster Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES
     > WHERE ENGINE LIKE "ndb%"\G
*************************** 1. row ***************************
      ENGINE: ndbinfo
     SUPPORT: YES
     COMMENT: MySQL Cluster system information storage engine
TRANSACTIONS: NO
          XA: NO
  SAVEPOINTS: NO
*************************** 2. row ***************************
      ENGINE: ndbcluster
     SUPPORT: YES
     COMMENT: Clustered, fault-tolerant tables
TRANSACTIONS: YES
          XA: NO
  SAVEPOINTS: NO
2 rows in set (0.00 sec)