公开集群IP以及服务在kubernetes服务中的工作方式?
我试图了解更多关于kubernetes中服务如何工作的信息。考虑这个示例YAML文件作为例子。公开集群IP以及服务在kubernetes服务中的工作方式?,kubernetes,Kubernetes,我试图了解更多关于kubernetes中服务如何工作的信息。考虑这个示例YAML文件作为例子。 apiVersion: v1 kind: Service metadata: name: schemaregistry #1 labels: name: kafka #2 app: demo #3 spec: ports: - port: 4000 #4 name: landoopkafkasr #5 targetPort: 8081 #6 sel
apiVersion: v1
kind: Service
metadata:
name: schemaregistry #1
labels:
name: kafka #2
app: demo #3
spec:
ports:
- port: 4000 #4
name: landoopkafkasr #5
targetPort: 8081 #6
selector:
name: landoopkafka #7
app: demo #8
我意识到名称(#7)和应用程序(#8)是在pod中扫描的内容,以匹配Landoop Kafka(#7)pod上暴露的targetPort上暴露的服务。如果我错了,请纠正我
基本上,我的理解是该服务将公开pod的端口8081
我的问题是#1、#2、#3和#4的意义是什么
另外,如果我必须从k8集群中的不同Pod B访问PodLandoop Kafka的端口8081,我如何访问它
非常感谢。您可以从这些网站获得有关Kubernetes服务的基本信息
apiVersion: v1
kind: Pod
metadata:
name: landoopkafka
labels:
name: landoopkafka
app: demo
spec:
containers:
- name: kafka
image: kafka:1.7.9
ports:
- containerPort: 8081
该Pod可以由(通常)由用户确定的服务作为目标
现在,你来服务吧
apiVersion: v1
kind: Service
metadata:
name: schemaregistry #1
labels:
name: kafka #2
app: demo #3
spec:
ports:
- port: 4000 #4
name: landoopkafkasr #5
targetPort: 8081 #6
selector:
name: landoopkafka #7
app: demo #8
下面是与Pod匹配的标签选择器
selector:
name: landoopkafka #7
app: demo #8
这里,
(1)name主要用于创建幂等和配置定义。这是必填字段metadata.name
(2,3)可用于组织和分类的字符串键和值的映射。此标签可用于列出服务元数据。标签
(4)此服务将公开的端口。(如果您想使用此服务访问Pod,则需要使用此端口,而不是Pod的端口)spec.port[*]。port
(5)服务中此端口的名称spec.port[*].name
(6)服务目标POD上要访问的端口的编号或名称。(如果您不提供此选项,端口将用作targetPort)spec.ports[*].targetPort
(7,8)使用与此选择器匹配的标签键和值将服务流量路由到POD。(此地图将与Pod标签匹配)spec.selector
landoopkafka
,您可以使用服务DNS作为
schemaregistry:4000
您的服务通过端口4000
(#4)公开,这些流量将路由到Pod的8081
(#6)端口1
是在kubectl show services
的输出中看到的服务本身的名称
#2
和#3
是服务的标签,可由其他kubernetes资源匹配/选择,并用于使用以下内容列出服务:
kubectl获取服务-l name=kafka
kubectl获取服务-l app=demo
#4
是服务公开的端口4000
,可用于访问后端吊舱
另外,如果我必须从k8集群中的另一个Pod B访问Pod landoopkafka的8081端口,我如何访问它
kubernetes中的服务发现是使用DNS(Kube DNS
)完成的。因此,集群中不同的podpod B
可以使用服务名称访问podlandoopkafka
:
schemaregistry:4000
(服务名称:端口公开
)。非常感谢您详尽的回答!我真的很感激。它确实对我有用!