我可以将K8s服务定位到没有标签的Pod吗?
也就是说,我用以下配置创建了一个K8s Pod。
apiVersion: v1
kind: Pod
metadata:
name: nofrills-first-pod
spec:
containers:
- name: nofrills-container
image: nofrills/to-deploy:0.0.1
ports:
- containerPort: 3000
我想将这个pod公开为K8s服务。通常,我会通过创建一个Service配置来实现这一点,该配置看起来像这样
apiVersion: v1
kind: Service
metadata:
name: test-nofrills-service
spec:
type: NodePort
selector:
## ?????? no labels to target?
ports:
- protocol: TCP
port: 3000
targetPort: 3000
nodePort: 32525
然而,由于pod没有任何标签,我不知道如何告诉Service使用哪个pod。我想问这个问题的另一种方式是"K8s选择器可以针对没有任何标签的对象吗?">
我意识到我可以(在许多情况下)轻松地向Pod添加标签,但我对K8s选择器的功能特别感兴趣。
你可以定义一个Service,而不用指定一个选择器来匹配pod。因为此服务没有选择器,所以不会自动创建相应的EndpointSlice(和遗留端点)对象。
你可以通过手动添加一个EndpointSlice对象,将服务映射到它运行的网络地址和端口。