Kubernetes 版 MySQL Operator 发行说明
MySQL Shell
MySQL Router
为了连接到 InnoDB Cluster,会在 Kubernetes 集群内创建一个 服务。 导出的端口表示 MySQL 协议和 X 协议的读写端口和只读端口。
$> kubectl describe service mycluster
输出结果类似于:
Name: mycluster
Namespace: default
Labels: mysql.oracle.com/cluster=mycluster
tier=mysql
Annotations: <none>
Selector: component=mysqlrouter,mysql.oracle.com/cluster=mycluster,tier=mysql
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.106.33.215
IPs: 10.106.33.215
Port: mysql 3306/TCP
TargetPort: 6446/TCP
Endpoints: 172.17.0.12:6446
Port: mysqlx 33060/TCP
TargetPort: 6448/TCP
Endpoints: 172.17.0.12:6448
Port: mysql-alternate 6446/TCP
TargetPort: 6446/TCP
Endpoints: 172.17.0.12:6446
Port: mysqlx-alternate 6448/TCP
TargetPort: 6448/TCP
Endpoints: 172.17.0.12:6448
Port: mysql-ro 6447/TCP
TargetPort: 6447/TCP
Endpoints: 172.17.0.12:6447
Port: mysqlx-ro 6449/TCP
TargetPort: 6449/TCP
Endpoints: 172.17.0.12:6449
Port: router-rest 8443/TCP
TargetPort: 8443/TCP
Endpoints: 172.17.0.12:8443
Session Affinity: None
Events: <none>
另一个视图显示了名为 mycluster
和 mycluster-instances
的服务
$> kubectl get service
输出结果类似于:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d1h
default mycluster ClusterIP 10.102.198.226 <none> 3306/TCP,33060/TCP,6446/TCP,6448/TCP,6447/TCP,6449/TCP 2d
default mycluster-instances ClusterIP None <none> 3306/TCP,33060/TCP,33061/TCP 2d
用于从 Kubernetes 集群内部连接到 InnoDB Cluster 的长主机名为 {innodbclustername}.{namespace}.svc.cluster.local
,它根据端口使用 MySQL Router 路由到当前的主/副本。可接受的主机名格式
{innodbclustername}.{namespace}.svc.cluster.local
{innodbclustername}.{namespace}.svc
{innodbclustername}.{namespace}
{innodbclustername}
使用这些名称将转到 Kubernetes LoadBalancer(Kubernetes 服务的一部分),它会重定向到 MySQL Router。然后,MySQL Router 会根据角色(例如 PRIMARY 或 SECONDARY)与各个服务器通信。
例如,假设 'mycluster' 是“默认”命名空间中的 InnoDB Cluster 名称
mycluster.default.svc.cluster.local
仅使用 {innodbclustername} 作为主机名假定会话的上下文是默认命名空间或相应设置。或者,您可以使用 clusterIP 而不是主机名;以下是一个检索它的示例
$> kubectl get service/mycluster -o jsonpath='{.spec.clusterIP}'