k8s 容器内部服务访问外部服务

一、问题

在宿主机可以通过  curl  http://10.244.52.13:38000/MES, 但是在 pod里边通过 curl  http://10.244.52.13:38000/MES 访问连接超时

二、处理

1.使用 hostNetwork参数

Pod与宿主机IP在同一网段

cat mysql.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx5
  labels:
    app: mysql
spec:
  hostNetwork: true # 添加网络参数
  containers:
  - name: db-mysql
    image: nginx:latest
    imagePullPolicy: Never

2.使用endpoints组件

cat endpoint.yaml

apiVersion: v1
kind: Endpoints
metadata:
  name: mysql-test
  namespace: default
subsets:
  - addresses:
    - ip: 192.168.54.130    --指定宿机主mysql服务器
    ports:
      - port: 3306      --指定端口
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-test    --service后端指向endpoints地址
  labels:
    app: abc
spec:
  ports:
    - port: 3306
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx6       --启动一个容器,测试连接mysql
  labels:
    app: db
spec:
 containers:
  - name: mysql-test
    image: nginx:latest
    imagePullPolicy: Never

为者常成,行者常至