在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库
.
在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库,有两种方式:一是直接连接数据库所在物理服务器IP,另一种方式就是借助k8s的Endpoints直接将外部服务器映射为k8s内部的一个服务。
下面这个例子就是展示Endpoints将外部服务映射为k8s内部服务的例子。
将外部服务器的172.17.241.47、59.107.26.221的80端口映射到内部服务
cat << EOF > test-service.yamlapiVersion: v1kind: Servicemetadata: name: testspec: ports: - port: 80 targetPort: 81 protocol: TCPEOFcat << EOF > test-endpoints.yamlapiVersion: v1kind: Endpointsmetadata: name: testsubsets: - addresses: - ip: 172.17.241.47 - ip: 59.107.26.221 ports: - port: 80 protocol: TCPEOFkubectl create -f test-endpoints.yamlkubectl create -f test-service.yaml
Endpoints的subsets中指定了需要连接的外部服务器的IP和端口。
.