在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库,有两种方式:一是直接连接数据库所在物理服务器IP,另一种方式就是借助k8s的Endpoints直接将外部服务器映射为k8s内部的一个服务。
下面这个例子就是展示Endpoints将外部服务映射为k8s内部服务的例子。
将外部服务器的172.17.241.47、59.107.26.221的80端口映射到内部服务
1cat << EOF > lykops-service.yaml 2apiVersion: v1 3kind: Service 4metadata: 5 name: lykops 6spec: 7 ports: 8 - port: 80 9 targetPort: 81 10 protocol: TCP 11EOF 12 13cat << EOF > lykops-endpoints.yaml 14apiVersion: v1 15kind: Endpoints 16metadata: 17 name: lykops 18subsets: 19 - addresses: 20 - ip: 172.17.241.47 21 - ip: 59.107.26.221 22 ports: 23 - port: 80 24 protocol: TCP 25EOF 26 27kubectl create -f test-endpoints.yaml 28kubectl create -f test-service.yaml
Endpoints的subsets中指定了需要连接的外部服务器的IP和端口。