如果不编辑yaml文件,就无法使用nodePort在kubernetes中隐式公开部署



我正试图通过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

相关内容

  • 没有找到相关文章

最新更新