如何在Kubernetes中为容器分配外部IP地址?

时间:2018-01-22 22:10:59

标签: kubernetes

我是Kubernetes的新手,但能够使用Kubespray轻松创建自己的Kubernetes群集。此外,我让自己熟悉了Kubernete的术语/概念,因此能够创建一个按预期运行的示例Pod / Deployment。不幸的是,我无法从公司内部网内的外部网络访问我的容器。我不允许发布实际的IP地址,因此我将使用 47.11.x.y 虚拟内部网

我的群集包含3个裸机节点:

Master (47.11.91.155)
Node1  (47.11.91.97)
Node2  (47.11.91.98)

此外,我拥有我想要使用的其他Intranet IP地址47.11.91.101,以便访问my-example应用程序。我尝试了各种组合的几个命令,我在官方文档和其他SO文章中找到,但只能使用

将应用程序的端口4711转发到我的本地工作站
kubectl port-forward my-example-67795fd77d-mkrhw  4711:4711

如果我事后做nc localhost 4711,至少可以证明我从根本上“正确地”设置了我的东西。应用程序成功地将我的输入从nc的STDIN写入节点文件系统上的挂载文件/my-data/my-data.txt(/tmp/my-data.txt),并能够从我的私有Docker注册表中提取自定义Docker镜像({{1因此,它也位于Intranet上。

您能否解释一下,为了将47.11.91.42与官方外部Intranet IP地址my-example连接起来,我必须做些什么,以便我可以使用以下内容访问47.11.91.101:< / p>

my-example

我的定义文件如下所示:

nc 47.11.91.101 4711

它是使用apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-example labels: app: my-example spec: replicas: 1 template: metadata: name: my-example labels: app: my-example spec: containers: - name: my-example image: my.private.docker.registry:5002/my-example:latest imagePullPolicy: IfNotPresent command: ["echo", "The example is working correctly within Kubernetes."] - name: my-example-port image: my.private.docker.registry:5002/my-example:latest imagePullPolicy: Always ports: - name: myport containerPort: 4711 resources: requests: cpu: 512m memory: 512Mi command: ["/bin/bash","-c","nc -k -l 4711 > /my-data/my-data.txt"] volumeMounts: - mountPath: /my-data name: data volumes: - name: data hostPath: path: /tmp type: Directory imagePullSecrets: - name: my-priavte-docker-secrets --- apiVersion: v1 kind: Service metadata: name: my-example-service labels: app: my-example spec: selector: app: my-example ports: - port: 4711 targetPort: 4711 protocol: TCP externalIPs: - 47.11.91.101 创建的。

如果您需要更多信息,请与我们联系。提前谢谢!

1 个答案:

答案 0 :(得分:0)