我正试图通过NodePort公开一个名为webapp servcie的部署。
要求:
Type: NodePort
targetPort: 8080
port: 8080
nodePort: 30080
selector: simple-webapp
服务应该是这样的:
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
type: NodePort
ports:
- targetPort: 8080
port: 8080
nodePort: 30080
selector:
name: simple-webapp
当我尝试隐式公开部署时,我无法从命令行设置NodePort。这是我正在使用的命令:
kubectl expose deployment simple-webapp-deployment --name=webapp-service --port=8080 --dry-run=client -o yaml
此命令提供以下YAML
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
name: webapp-service
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
name: simple-webapp
status:
loadBalancer: {}
我无法使用命令定义Nodeport。没有可供我使用的标志来设置它。因此,我必须手动编辑yaml以将其添加到规范中
如果我试图在不公开部署的情况下隐式创建服务,我可以指定节点端口,但我不能隐式选择部署,这也会给我的端口一个我并不关心的名称。
kubectl create service nodeport webapp-service --tcp 8080:8080 --node-port=30080 --dry-run=client -o yaml
创建yaml:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: webapp-service
name: webapp-service
spec:
ports:
- name: "8080"
nodePort: 30080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: webapp-service
type: NodePort
status:
loadBalancer: {}
为了时间和效率的考虑,有没有一种方法可以让我以隐含的方式创建服务,或者我总是需要编辑YAML?如果不是,这是kubernetes的缺点还是我缺少了什么?
关于--type标志如何?
kubectl expose deployment simple-webapp-deployment --name=webapp-service --port=8080 --dry-run=client --type=NodePort -o yaml