将非dockerised应用程序连接到kubenetes pos

时间:2018-05-14 18:38:55

标签: docker kubernetes devops

我有非分层应用程序需要连接到在kubernetes pod中运行的dockerised应用程序。

鉴于pod可能已经死亡并再次使用不同的ip地址,我的应用程序如何检测到这一点?任何方式来分配重定向到任何现有pod的主机名?

2 个答案:

答案 0 :(得分:1)

您必须使用kubernetes服务。服务为您提供了一种与静态IP和DNS进行通信的方式(如果您的客户端应用程序位于群集内)。

https://kubernetes.io/docs/concepts/services-networking/service/

您可以通过多种方式实现:

  1. 最简单:使用类型为:NodePort的kubernetes服务。然后,您可以使用http://[nodehost]:[nodeport]
  2. 访问该广告连播
  3. 使用kubernetes ingress。有关详细信息,请参阅此链接(https://kubernetes.io/docs/concepts/services-networking/ingress/
  4. 如果您在云端运行,如aws,azure或gce,则可以使用kubernetes服务类型LoadBalancer。

答案 1 :(得分:0)

除了Bal Chua的工作和来自silverfox的建议之外,我想向您展示该方法 我用Kubernetes来公开和管理来自外部的传入流量:

第1步:部署应用程序

在此示例中,Kubernetes示例hello应用程序将在端口8080 / tcp

上运行
kubectl run web --image=gcr.io/google-samples/hello-app:1.0 --port=8080

第2步:在内部公开部署服务

此命令告诉Kubernetes公开端口8080 / tcp以与外部世界进行交互:

kubectl expose deployment web --target-port=8080 --type=NodePort

之后,请检查它是否暴露了运行命令:

kubectl get service web

第3步:管理Ingress资源

Ingress将流量发送到Kubernetes内部的适当服务。

打开文本编辑器,然后创建一个文件 basic-ingress.yaml

内容:

apiVersion:  
extensions/v1beta1  
kind: Ingress  
metadata:      
  name: basic-ingress  
spec:      
  backend:
    serviceName: web
    servicePort: 8080

应用配置:

kubectl apply -f basic-ingress.yaml

就是这样。是时候测试了。获取Kubernetes安装的外部IP地址:

kubectl get ingress basic-ingress

并使用此地址运行Web浏览器以查看hello应用程序的工作情况。