Kubernetes实战(二十七)-集群访问外部服务(Endpoints)

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: es01
      port: 9500
    - name: es02
      port: 9501
    - name: es03
      port: 9502

Elasticsearch Service 资源文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: oas-dev
spec:
  type: NodePort
  clusterIP: 10.110.181.25
  ports:
   - name: es01
     port: 9500
     targetPort: 9500
     protocol: TCP
   - name: es02
     port: 9501
     targetPort: 9501
     protocol: TCP
   - name: es03
     port: 9502
     targetPort: 9502
     protocol: TCP

注:上述 10.12.1.203 是 Elasticsearch 物理服务器所在内网 IP 地址。

2、Mysql 配置

Mysql EndPoints 资源文件,内容如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: mysql
  namespace: oas-dev
subsets:
 - addresses:
    - ip: 10.12.1.203
   ports:
    - port: 3306

Mysql Service 资源文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: oas-dev
spec:
  type: NodePort
  clusterIP: 10.100.169.39
  ports:
   - port: 3306
     targetPort: 3306
     nodePort: 31500
     protocol: TCP

注:上述 10.12.1.203 是 Mysql 物理服务器所在内网 IP 地址。

3、PostgreSQL 配置

PostgreSQL EndPoints 资源文件,内容如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: pgsql
  namespace: oas-dev
subsets:
 - addresses:
    - ip: 10.12.1.203
   ports:
    - port: 5432

PostgreSQL Service 资源文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: pgsql
  namespace: oas-dev
spec:
  type: NodePort
  clusterIP: 10.109.241.188
  ports:
   - port: 5432
     targetPort: 5432
     nodePort: 31532
     protocol: TCP

注:上述 10.12.1.203 是 PostgreSQL 物理服务器所在内网 IP 地址。

4、Redis 配置

Redis EndPoints 资源文件,内容如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: redis
  namespace: oas-dev
subsets:
 - addresses:
    - ip: 10.12.1.203
   ports:
    - port: 6379

Redis Service 资源文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: oas-dev
spec:
  type: NodePort
  clusterIP: 10.102.65.3
  ports:
   - port: 6379
     targetPort: 6379
     protocol: TCP

注:上述 10.12.1.203 是 Redis 物理服务器所在内网 IP 地址。

5、Nginx 配置

Nginx EndPoints 资源文件,内容如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: nginx
  namespace: oas-dev
subsets:
 - addresses:
   - ip: 10.12.1.206
   ports:
    - port: 9527

Nginx Service 资源文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: oas-dev
spec:
  type: NodePort
  clusterIP: 10.98.31.206
  ports:
  - port: 9527
    targetPort: 9527
    protocol: TCP

注:上述 10.12.1.206 是 Nginx 物理服务器所在内网 IP 地址。

到此集群访问外部服务(Endpoints)介绍完成。

你可能感兴趣的:(Kubernetes实战)