[置顶] kubernetes将外部服务映射为内部服务

在实际应用中,一般不会把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.yaml
apiVersion: v1
kind: Service
metadata:
  name: test
spec:
  ports:
  - port: 80
    targetPort: 81
    protocol: TCP
EOF

cat << EOF > test-endpoints.yaml
apiVersion: v1
kind: Endpoints
metadata:
  name: test
subsets:
  - addresses:
    - ip: 172.17.241.47
    - ip: 59.107.26.221
    ports:
    - port: 80
      protocol: TCP
EOF

kubectl create -f test-endpoints.yaml
kubectl create -f test-service.yaml

Endpoints的subsets中指定了需要连接的外部服务器的IP和端口。

原文地址:https://www.cnblogs.com/lykops/p/7348017.html