我有一个带有两个 pod(带有 ubuntu 容器)的 minikube 集群。我需要做的是通过这个 minikube 集群将测试流量从一个端口路由到另一个端口。该流量应该通过这两个 pod 发送,如图所示。我是这个 Kubernetes 东西的初学者,所以我真的不知道该怎么做以及走哪条路......请帮助我或给我一些提示。
我正在开发 ubuntu 服务器版本。18.04。
我有一个带有两个 pod(带有 ubuntu 容器)的 minikube 集群。我需要做的是通过这个 minikube 集群将测试流量从一个端口路由到另一个端口。该流量应该通过这两个 pod 发送,如图所示。我是这个 Kubernetes 东西的初学者,所以我真的不知道该怎么做以及走哪条路......请帮助我或给我一些提示。
我正在开发 ubuntu 服务器版本。18.04。
我同意@Harsh Manvar 提供的答案,并且我还想就这个话题进行一些扩展。
已经有类似设置的答案。我鼓励你检查一下:
有不同的驱动程序可用于运行您的minikube
. 在处理入站流量时,它们会有所不同。我错过了关于设置中使用的驱动程序的部分(评论)。如果它Docker
在标签中显示,您可以按照以下示例进行操作。
脚步:
nginx-one
并从图像nginx-two
Deployments
中模仿Pods
nginx-one
到的服务nginx-two
nginx-one
从 LAN连接到的服务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
您将需要使用服务将流量从 发送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
使用服务名称 ( nginx-two-service
)将流量发送到
旁注!
您可以使用
Pod
不带的 IP,Service
但这不是推荐的方式。
nginx-one
从 LAN连接到的服务假设您想minikube
使用驱动程序将您的实例公开到 LAN,Docker
您将需要创建一个服务并公开它。此类设置的示例如下:
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 上可用。它将运行此命令的机器上的端口 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 东西的初学者,所以我真的不知道该怎么做以及走哪条路......请帮助我或给我一些提示。
您可以查看以下链接以获取更多资源:
您可以遵循多种选择:
由于您有两个 POD,您可以通过服务公开一个,
如果您可以在单个 POD 中运行这两个应用程序,那么还有一种容器到容器通信的可能性。
POD-1 到 POD-2 的通信可以使用服务选项或 POD URI。