我是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文章中找到,但只能使用
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
创建的。
如果您需要更多信息,请与我们联系。提前谢谢!
答案 0 :(得分:0)
如果您使用支持的云提供商(虽然不确定您的裸机内网),您可以使用Load Balancer并强制它使用您的第四个IP 47.11.91.101来实现您的目的。这似乎是https://github.com/kubernetes/kubernetes/pull/13005添加的。
https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
其他一些有用的资源:
https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/
https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/