我正在尝试设置一个 pod,该 pod 接收来自外部主机的端口 1234 的数据包。我通过 tcpdump 确认数据包确实到达了 openshift 集群。现在,我已经运行了 pod AAAA,它应该获取端口 1234 的数据包(从 openshift 主站路由或转发(。我们已经为 pod 分配了一个 IP,因此已经完全按照下面的文档来设置外部 IP、端口等。我怀疑问题出在主配置上,但我无法将它们粘贴到此处。
我的问题是,为了将端口 1234 数据包路由到 pod AAAA,在主配置中需要放置哪些配置。
已经在 Openshift 文档下面尝试过:
-
https://docs.openshift.com/container-platform/3.3/admin_guide/tcp_ingress_external_ports.html
-
https://docs.openshift.com/container-platform/3.3/dev_guide/getting_traffic_into_cluster.html#using-ingress-IP-self-service
首先 - 你只是指一个 POD。我建议将您的应用程序部署为Deployment
。请参考这个和这个。
此外,为了在 Kubernetes 中向外界公开Deployments
,您必须建立一个Service
。它可以通过几种不同的方式公开你的应用。有关详细信息,请通读此内容。
如果您使用任何标准应用程序,您通常可以通过谷歌搜索应用程序名称和"kubernetes"来找到示例部署/服务。
在你的主配置(etc/origin/master/master-config.yaml(中,只需添加
servicesNodePortRange:"1234-1234">
kubernetesMasterConfig:
apiServerArguments:
controllerArguments:
masterCount: 1
masterIP: x.x.x.x
podEvictionTimeout:
proxyClientInfo:
certFile: master.proxy-client.crt
keyFile: master.proxy-client.key
schedulerArguments:
schedulerConfigFile: /etc/origin/master/scheduler.json
servicesNodePortRange: "1234-1234"
servicesSubnet: 172.30.0.0/16
staticNodeNames: []
之后,重新启动原子-开放移位-主服务。
然后,使用负载均衡器类型为部署创建第二个服务。假设您的部署配置名称为"myapp",请创建类似于以下内容的新文件,
--- "new-svc.yml" ----
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: myapp
template: myapp-template
name: myapp-ext
spec:
ports:
- name: myapp
nodePort: 1234
port: 1234
protocol: TCP
targetPort: 1234
selector:
name: myapp
sessionAffinity: None
type: LoadBalancer
之后,创建一个新服务
#oc create -f new-svc.yml
最后,通过添加路由 (1234 <-- 1234( 来公开新服务"myapp-ext"。