我有一个StatefulSet,它与StatefulSet Kubernetes教程中描述的匹配,后者创建了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读取服务连接到所有mysql吊舱。
节点在我的计算机上,我正在使用microk8s。
现在,我有一个小程序运行在我的计算机上(而不是在集群中),我想连接到StatefulSet中的主程序(mysql-0)。Id需要类似于只与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()
我想我可以在MySQL0-pod中添加一个不同的标签,并添加一个查找该标签的NodePort服务,但是我不想通过命令行来完成它。可以在StatefulSet yaml?中添加一个标签到mysql-0中吗?
另一个想法可能是对microk8s提供的DNS服务器执行查询DNS,查找"mysql.mysql-0",但我不知道如何将程序连接到DNS服务器,以便我可以使用host=mysql.mysql-0
或整个CNAME。
发布于 2019-12-11 10:43:59
如果节点在您的计算机上,那么可以使用port-forward
将mysql端口从吊舱转发到本地。试试这个:
kubectl port-forward mysql-0 3306:3306
或者直接转发给您的主服务部门。
kubectl port-forward svc/mysql-read 3306:3306
https://stackoverflow.com/questions/59283704
复制相似问题