我有一个StatefulSet,它与 StatefulSet Kubernetes tutorial创建一个mysql主/从结构。我有以下kubernetes对象:
NAME READY STATUS RESTARTS AGE
pod/mysql-0 2/2 Running 7 23h
pod/mysql-1 2/2 Running 6 23h
pod/mysql-2 2/2 Running 6 23h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 21d
service/mysql ClusterIP None <none> 3306/TCP 23h
service/mysql-read ClusterIP 10.152.183.89 <none> 3306/TCP 23h
NAME READY AGE
statefulset.apps/mysql 3/3 23h
编辑:mysql和mysql-read服务与所有mysql pod连接。
该节点在我的计算机上,我正在使用microk8s。
现在,我有一个要在我的计算机上运行的小程序(不在群集中),我想将其连接到StatefulSet内部的主机(mysql-0)。身份证需要类似服务,只能与mysql-0连接。 有任何建议吗?
编辑:想法是找到一个解决方案,使我可以仅使用.yaml文件来部署群集。找到一个比kubectl apply
程序如下:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost??",
user="root",
passwd="",
database="testtable"
)
mycursor = mydb.cursor()
sql = "INSERT INTO testtable (name) VALUES (%s)"
val = ("holaquetal")
mycursor.execute(sql, val)
mydb.commit()
我想我可以在mysql-0 pod上添加一个不同的标签,并添加一个寻找该标签的NodePort服务,但是我不想通过命令行来完成。 是否可以在StatefulSet yaml中向mysql-0添加一个标签?
另一个想法可能是对microk8s提供的DNS服务器进行查询DNS,寻找“ mysql.mysql-0”,但是我不知道如何将程序连接到DNS服务器,这样我就可以使用host=mysql.mysql-0
或整个CNAME。
答案 0 :(得分:2)
如果该节点在您的计算机上,则可以使用port-forward
将mysql的端口从Pod转发到本地。试试这个:
kubectl port-forward mysql-0 3306:3306
或直接转发到您的主服务
kubectl port-forward svc/mysql-read 3306:3306