Kubernetes 的 MySQL Operator 發行說明
MySQL Shell
MySQL Router
為了連線至 InnoDB 叢集,會在 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 叢集所使用的長主機名稱為 {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)與個別伺服器通訊。
例如,假設在「default」命名空間中的 InnoDB 叢集名稱為「mycluster」
mycluster.default.svc.cluster.local
僅使用 {innodbclustername} 作為主機名稱會假設工作階段的內容是預設命名空間或已相應設定。或者,您可以使用 clusterIP 而不是主機名稱;以下範例示範如何擷取它
$> kubectl get service/mycluster -o jsonpath='{.spec.clusterIP}'