需求

1.已有 k8s 服务器

2.内网有一个单独云盘,需要做外网访问

3.公网用pan.foxwho.com域名可以直接访问内网网盘。已知域名已绑定公网ip,可以用xxx域名可以直接访问内网k8s某个服务

fox.风

案例:映射网盘

配置 Service

方式一: 内网云盘访问地址是 http://10.10.10.5:800

在内网 用http://10.10.10.5:800 可以直接访问网盘
定义一个 Service , service.yaml

apiVersion: v1
kind: Service
metadata:
  name: pan
spec:
  type: ExternalName 
  ## 域名,或者 直接能用ip和端口直接访问的
  externalName: 192.168.10.5
  ports:
  # 我这网盘端口是 800
    - port: 800

方式二: 内网云盘访问地址是 http://pan.fox

在内网 用http://pan.fox 可以直接访问网盘
定义一个 Service , service.yaml

apiVersion: v1
kind: Service
metadata:
  name: pan
spec:
  type: ExternalName 
  ## 域名
  externalName: pan.fox
  ports:
    - port: 80

配置 traefik Ingress

定义一个 Ingress , ingress.yaml

## Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  name: pan
spec:
  rules:
    - host: pan.foxwho.com
      http:
        paths:
          - backend:
              service:
                name: pan
                port:
                  number: 800
            path: /
            pathType: ImplementationSpecific

应用并生效

kubectl apply -f service.yaml
kubectl apply -f ingress.yaml

浏览器访问

http://pan.foxwho.com

看到 网盘网页 即 配置正确

案例:利用Service NodePort 端口直接对外端口映射数据库

Endpoints

定义一个 Endpoints , endpoints.yaml

kind: Endpoints
apiVersion: v1
metadata: 
  name: mongodb
subsets:
- addresses:
  - ip: 10.10.10.6
  ports:
   - port: 27017
     name: mongodb
     protocol: TCP

Service

定义一个 Service , service.yaml

kind: Service
apiVersion: v1
metadata:
  name: mongodb
spec:
  type: NodePort
  ports:
  - port: 27017
    name: mongodb
    targetPort: 27017
    nodePort: 27017

应用并生效

kubectl apply -f endpoints.yaml
kubectl apply -f service.yaml

案例:内部服务要使用外部的mongodb

Endpoints

定义一个 Endpoints , endpoints.yaml

kind: Endpoints
apiVersion: v1
metadata: 
  name: mongodb
subsets:
- addresses:
  - ip: 10.10.10.6
  ports:
   - port: 27017
     name: mongodb
     protocol: TCP

Service

定义一个 Service , service.yaml

kind: Service
apiVersion: v1
metadata:
  name: mongodb
spec:
  ports:
  - port: 27017
    name: mongodb
    nodePort: 27017

应用并生效

kubectl apply -f endpoints.yaml
kubectl apply -f service.yaml

服务使用

数据库连接使用

以前

mongodb://fox:password@10.10.10.6:27017/api

现在

mongodb://fox:password@mongodb/api
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐