簡體   English   中英

kube.netes,集群外訪問IP

[英]Kubernetes, access IP outside the cluster

我有一個托管 Kube.netes 集群 (10.225.0.1) 的 corporate.network(10.22. . )。 如何從集群中的 pod 訪問同一網絡中但集群外部的某些 VM?

例如,我有一個 IP 10.22.0.1:30000 的 VM,我需要從 Kube.netes 集群中的 Pod 訪問它。 我試圖創建這樣的服務

apiVersion: v1
kind: Service
metadata:
  name: vm-ip
spec:
  selector:
    app: vm-ip
  ports:
    - name: vm
      protocol: TCP
      port: 30000
      targetPort: 30000
  externalIPs:
    - 10.22.0.1

但是當我從 Pod(kubectl exec -it) 執行“curl http://vm-ip:30000 ”時,它會返回“連接被拒絕”錯誤。 但它適用於“google.com”。 訪問外部IP的方式有哪些?

您可以為此創建一個端點

我們以 go 為例:

在此示例中,我在 my.network 上有一個 http 服務器,地址為 IP 10.128.15.209 ,我希望它可以從我的 Kube.netes 集群中的 pod 訪問。

首先是創建一個端點。 這將使我創建一個指向此端點的服務,該服務會將流量重定向到我的外部 http 服務器。

我的端點清單如下所示:

apiVersion: v1
kind: Endpoints
metadata:
  name: http-server
subsets:
  - addresses:
      - ip: 10.128.15.209
    ports:
      - port: 80
$ kubectl apply -f http-server-endpoint.yaml
endpoints/http-server configured

讓我們創建我們的服務:

apiVersion: v1
kind: Service
metadata:
  name: http-server
spec:
  ports:
    - port: 80
      targetPort: 80
$ kubectl apply -f http-server-service.yaml
service/http-server created

檢查我們的服務是否存在並保存它的 clusterIP 以供字母使用:

user@minikube-server:~$$ kubectl get service
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
http-server   ClusterIP   10.96.228.220   <none>        80/TCP    30m
kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP   10d

現在是時候驗證我們是否可以從 pod 訪問我們的服務了:

$ kubectl run ubuntu -it --rm=true --restart=Never --image=ubuntu bash

此命令將在 ubuntu pod 中創建並打開 bash session。

在我的例子中,我將安裝 curl 以檢查我是否可以訪問我的 http 服務器。 您可能需要安裝 mysql:

root@ubuntu:/# apt update; apt install -y curl

使用 clusterIP 檢查與我的服務的連接:

root@ubuntu:/# curl 10.128.15.209:80
Hello World!

最后使用服務名稱 (DNS):

root@ubuntu:/# curl http-server
Hello World!

所以,在你的具體情況下,你必須創建這個:

apiVersion: v1
kind: Endpoints
metadata:
  name: vm-server
subsets:
  - addresses:
      - ip: 10.22.0.1
    ports:
      - port: 30000
---
apiVersion: v1
kind: Service
metadata:
  name: vm-server
spec:
  ports:
    - port: 30000
      targetPort: 30000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM