我同意@Harsh Manvar 提供的答案,并且我还想就这个话题进行一些扩展。
已经有一个类似设置的答案。我鼓励您检查一下:
有不同的drivers 可用于运行您的minikube。 他们在处理入站流量时会有所不同。我错过了关于设置中使用的驱动程序的部分(评论)。如果是标签中显示的Docker,您可以按照以下示例进行操作。
示例
步骤:
- 生成
nginx-one 和nginx-two Deployments 以模仿图片中的Pods
- 创建一个服务,用于将流量从
nginx-one 发送到nginx-two
- 创建一个允许您从 LAN 连接到
nginx-one 的服务
- 测试设置
生成nginx-one 和nginx-two Deployments 以模仿图片中的Pods
您可以使用以下定义生成两个Deployments,其中每个都有一个Pod:
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
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
附注!
您可以使用Pod 的IP 而不使用Service,但这不是推荐的方式。
创建一个允许您从 LAN 连接到 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 以在局域网上可用。它将运行此命令的机器上的端口 8000 映射到此服务的端口 80。您可以通过在 LAN 的另一台机器上执行来检查它:
curl IP_ADDRESS_OF_MINIKUBE_HOST:8000
附注!
您需要 root 访问权限才能让您的入站流量进入小于 1024 的端口。
测试设置
您需要检查对象之间是否存在通信,如下图“连接图”所示。
PC -> nginx-one -> nginx-two -> example.com
测试方法可能如下:
PC -> nginx-one:
- 在 LAN 中的计算机上运行:
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
如果您完成了上述步骤,您可以将nginxPods 换成您自己的软件。
其他说明和资源:
我鼓励您查看kubeadm,因为它是创建您自己的 Kubernetes 集群的工具:
如你所说:
我是这个 Kubernetes 方面的初学者,所以我真的不知道该怎么做以及走哪条路……请帮助我或给我一些提示。
您可以查看以下链接以获取更多资源: