Kubernetes 如何在服务中的POD之间进行通信?
假设我有一个包含两个豆荚的服务。其中一个pod是HTTP服务器,另一个pod需要访问此pod上的REST端点。第二个pod是否有一个主机名可以用来称呼第一个pod?我假设当你说“服务”时,你指的不是Kubernetes 如何在服务中的POD之间进行通信?,kubernetes,Kubernetes,假设我有一个包含两个豆荚的服务。其中一个pod是HTTP服务器,另一个pod需要访问此pod上的REST端点。第二个pod是否有一个主机名可以用来称呼第一个pod?我假设当你说“服务”时,你指的不是服务对象的Kubernetes词典,否则你在服务中的两个pod将是相同的,所以让我们从挑出“服务”在Kubernetes领域的含义开始 您必须创建一个额外的主机名来获取HTTP服务器的Pod。创建服务时将定义一个指向HTTP服务Pod上一组标签的.spec.selector。举个例子,假设标签是app
服务对象的Kubernetes词典,否则你在服务中的两个pod将是相同的,所以让我们从挑出“服务”在Kubernetes领域的含义开始
您必须创建一个额外的主机名来获取HTTP服务器的Pod
。创建服务时
将定义一个指向HTTP服务Pod上一组标签的.spec.selector
。举个例子,假设标签是app:nginx
。该服务
对象的名称将成为可由第二个Pod
查询的内部DNS记录
一个简化的例子:
apiVersion: v1
kind: Pod
metadata:
name: http-service
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: my-http-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
现在,您的第二个Pod
可以通过服务
名称、我的HTTP服务
向HTTP服务发出请求
还值得一提的是,Kubernetes的最佳实践规定,出于各种原因(包括应用程序的高可用性),这些Pod
由s或s等控制器进行管理。您可以公开Podkubectl expose deployment--type=Pod的名称,然后您可以使用kubectl description来显示端口号。然后你在最后一个命令中访问你的pod。…**……希望它能有所帮助。讽刺的是,你回答了你自己的问题:服务是一个稳定的名称和IP,它对它将路由流量的pod
的个人进出进行抽象,如中所述
如果http pod
需要到达rest pod
,那么创建一个服务
,该服务与创建rest pod
的PodSpec
上的标签相匹配,并且从那时起http pod
可以始终使用${serviceName}.${serviceNamespace}.svc.cluster.local
到每个具有匹配标签的Pod注意,服务在Docker中与K8s中是不同的概念。得到你想要的东西最简单的方法就是创建两个豆荚;说出pod-1
和pod-2
,使用类似于此的yaml文件:
apiVersion: v1
kind: Pod
metadata:
name: NAME
labels:
app: LABEL
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
假设名称和标签是nginx
和nginx-1
,那么您现在有两个名为nginx
和nginx-1
的pod,标签是app:nginx
和app:nginx-1
。实际上,因为只有一个标签会被曝光,所以另一个标签是不相关的
现在,您可以使用yaml文件或从命令行公开pod
Yaml文件:
apiVersion: v1
kind: Service
metadata:
name: server
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: nginx
命令行:
apiVersion: v1
kind: Service
metadata:
name: server
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: nginx
kubectl公开pod nginx——端口80——名称服务器
如果您现在直接访问第二个pod(nginx-1)和curl
服务,您将最终命中它后面的pod(nginx):
伟大的您是否有关于如何动态更改目的地的idée,即第一个将与另一个新部署的pod通信,谢谢