我需要通过命令行将选择器用作NodePort服务来公开Pod。可以有一个或多个吊舱。并且服务需要在它们来来去去时动态地包含Pod。例如,
NAMESPACE NAME READY STATUS RESTARTS AGE
rakesh rakesh-pod1 1/1 Running 0 4d18h
rakesh rakesh-pod2 1/1 Running 0 4d18h
我可以创建一个服务,该服务使用服务定义yaml文件选择所需的pod-
apiVersion: v1
kind: Service
metadata:
name: np-service
namespace: rakesh
spec:
type: NodePort
ports:
- name: port1
port: 30005
targetPort: 30005
nodePort: 30005
selector:
abc.property: rakesh
但是,我需要通过命令行来实现相同的目的。我尝试了以下-
kubectl -n rakesh expose pod --selector="abc.property: rakesh" --port=30005 --target-port=30005 --name=np-service --type=NodePort
和其他一些没有成功的变化。
注意:据我了解,目前尚无法使用命令行指定节点端口。在30000-32767之间分配了一个随机端口。我很好,因为以后可以将其修补到所需的端口。
还请注意:不幸的是,这些吊舱不是部署的一部分。否则,expose deployment
可能会起作用。
因此,可以归结为基于选择器选择pod并将其作为服务公开。
我的kubernetes
版本:1.12.5上游
我的kubectl
版本:1.12.5上游
答案 0 :(得分:1)
您可以这样做:
kubectl expose $(kubectl get po -l abc.property=rakesh -o name) --port 30005 --name np-service --type NodePort
答案 1 :(得分:0)
是否没有使用部署或副本集的原因?