0x04Kubernetes映射外部服务到集群内部的场景场景1.集群外的数据库映射到集群内部(IP地址)

描述:如果您在Kubernetes内部和外部分别运行一些服务应用,此时应用如果分别依赖集群内部和外部应用时,通过采用将集群外部服务映射到K8s集群内部。

希望未来某个时候您可以将所有服务都移入集群内,但在此之前将是“内外混用”的状态。幸运的是您可以使用静态Kubernetes服务来缓解上述痛点。

在本例中,假如有一个集群外的MySQL服务器,由于此服务器在与Kubernetes集群相同的网络(或VPC)中创建,因此可以使用高性能的内部IP地址映射到集群内部以供Pod访问。

第一步,我们创建一个将从此服务接收流量的Endpoints对象并将该对象与Service进行绑定。

#非常注意:service和endpoint名字要相同属于同一个名称空间.teemapping-svc-ep.yamlEOFkind:EndpointsapiVersion:v1metadata:name:mysqldbnamespace:testsubsets:-addresses:-ip:..12.50ports:-port:protocol:TCP---kind:ServiceapiVersion:v1metadata:name:mysqldbnamespace:testspec:type:ClusterIPports:-port:1protocol:TCPtargetPort:EOF

第二步,创建Service和Endpoints,然后您可以看到Endpoints手动定义了数据库的IP地址,并且使用的名称与服务名称相同。

$kubectlapply-fmapping-svc-ep.yaml#endpoints/mysqldbcreated#service/mysqldbcreated$kubectldescribesvc/mysql-ntest#Name:mysqldb#Namespace:test#Labels:none#Annotations:none#Selector:none#Type:ClusterIP#IP:10...40#Port:unset1/TCP#集群内部访问的映射端口#TargetPort:/TCP#目标服务端口#Endpoints:..12.50:#目标服务IP及端口#SessionAffinity:None#Events:none$kubectlgetsvc-ntestmysqldbNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEmysqlClusterIP10...40none1/TCP23s

第三步,集群内部Pod访问映射的MySQL服务。

#Telnetcluster_ipmapping_port$telnet10...401#Trying10...40...#Connectedto10...40.#Escapecharacteris^].#5.5.5-10.4.18-MariaDB-1:10.4.18+maria~bionic-log#创建测试Pod~$kubectlrunbusybox-demo-ntest--image=busybox:latest--



转载请注明地址:http://www.tanhuaa.com/thzp/10915.html