![](/img/trans.png)
[英]How to route traffic from pysical server's port to minikube cluster?
[英]How to route test traffic through kubernetes cluster (minikube)?
我有一個帶有兩個 pod 的 minikube 集群(帶有 ubuntu 容器)。 我需要做的是通過這個 minikube 集群將測試流量從一個端口路由到另一個端口。 該流量應該通過這兩個 pod 發送,如圖所示。 我是這個 Kubernetes 東西的初學者,所以我真的不知道該怎么做以及 go 的方式......請幫助我或給我一些提示。
我正在使用 ubuntu 服務器版本。 18.04。
我同意@Harsh Manvar 提供的答案,並且我還想就這個話題進行一些擴展。
已經有類似設置的答案。 我鼓勵你檢查一下:
有不同的驅動程序可用於運行您的minikube
。 在處理入站流量時,它們會有所不同。 我錯過了關於設置中使用的驅動程序的部分(評論)。 如果是標簽中顯示的Docker
,您可以按照以下示例進行操作。
腳步:
nginx-one
和nginx-two
Deployments
來模仿鏡像中的Pods
nginx-one
發送到nginx-two
nginx-one
的服務nginx-one
和nginx-two
Deployments
來模仿鏡像中的Pods
您可以使用以下定義來生成兩個Deployments
,其中每個部署都有一個Pod
:
nginx-one.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-one
spec:
selector:
matchLabels:
app: nginx-one
replicas: 1
template:
metadata:
labels:
app: nginx-one
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
nginx-two.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-two
spec:
selector:
matchLabels:
app: nginx-two
replicas: 1
template:
metadata:
labels:
app: nginx-two
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
nginx-one
發送到nginx-two
您將需要使用Service將流量從nginx-one
發送到nginx-two
。 此類Service
的示例如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-two-service
spec:
type: ClusterIP # could be changed to NodePort
selector:
app: nginx-two # IMPORTANT
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
應用此定義后,您將能夠使用服務名稱( nginx-two-service
)將流量發送到nginx-two
旁注!
您可以在沒有
Service
的情況下使用Pod
的 IP,但這不是推薦的方式。
nginx-one
的服務假設您想使用Docker
驅動程序將您的minikube
實例公開到 LAN,您將需要創建一個服務並公開它。 此類設置的示例如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-one-service
spec:
type: ClusterIP # could be changed to NodePort
selector:
app: nginx-one # IMPORTANT
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
您還需要運行:
$ kubectl port-forward --address 0.0.0.0 service/nginx-one-service 8000:80
上面的命令(在您的minikube
主機上運行!)將公開您的nginx-one-service
以在 LAN 上可用。 它將運行此命令的機器上的 map 端口 8000 連接到此服務的端口 80。 您可以通過在 LAN 的另一台機器上執行來檢查它:
curl IP_ADDRESS_OF_MINIKUBE_HOST:8000
旁注!
您需要 root 訪問權限才能讓您的入站流量進入小於 1024 的端口。
您將需要檢查對象之間是否存在通信,如下面的“連接圖”所示。
PC
-> nginx-one
-> nginx-two
-> example.com
測試方法可能如下:
PC
-> nginx-one
:
curl MINIKUBE_IP_ADDRESS:8000
nginx-one
-> nginx-two
:
nginx-one
Pod
並運行命令:
$ kubectl exec -it NGINX_POD_ONE_NAME -- /bin/bash
$ curl nginx-two-service
nginx-two
-> example.com
:
nginx-two
Pod
並運行命令:
$ kubectl exec -it NGINX_POD_TWO_NAME -- /bin/bash
$ curl example.com
如果您完成了上述步驟,您可以將nginx
Pods
自己的軟件。
附加說明和資源:
我鼓勵您檢查kubeadm
,因為它是創建您自己的 Kubernetes 集群的工具:
如你所說:
我是這個 Kubernetes 東西的初學者,所以我真的不知道該怎么做以及 go 的方式......請幫助我或給我一些提示。
您可以查看以下鏈接以獲取更多資源:
您可以遵循多種選擇:
由於您有兩個 POD,您可以通過服務公開一個,
如果您可以在單個 POD 中運行這兩個應用程序,那么還有一種容器到容器通信的可能性。
POD-1 到 POD-2 的通信可以使用服務選項或 POD URI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.