Kubernetes 访问内网集群外独立的服务,由于不在相同的网段(容器内的网段是独立的)所以不能够互相访问通信,这种情况下我们可以创建 Kubernetes 的 Endpoints 资源,将外部服务映射为集群的内部服务进行访问通信。
在实际的生产环境使用中,通过分布式存储来实现的磁盘在 Mysql 这种IO密集性应用中,性能问题会显得非常突出。所以在实际应用中,一般不会把 Mysql 这种应用直接放入 Kubernetes 中管理,而是使用专用的服务器来独立部署,而像 Web 这种无状态应用依然会运行在 Kubernetes 中,这个时候 Web 服务器要连接 Kubernetes 集群外的数据库,有两种方式:
- 直接连接数据库的外网 IP 地址
- 创建 Endpoints 将外部服务映射为集群内部服务
下面分别列举 Elasticsearch、Mysql、PostgreSQL、Redis、Nginx 的 Endpoints 配置方法,希望大家能通过这几个示例学习到 Endpoints 的使用方法。
1、Elasticsearch 配置
Elasticsearch EndPoints 资源文件,内容如下:
apiVersion: v1
kind: Endpoints
metadata:
name: elasticsearch
namespace: oas-dev
subsets:
- addresses:
- ip: 10.12.1.203
ports:
- name: es0