使用PUT请求创建Kubernetes Deployment返回404问题咨询
Kubernetes PUT 创建Deployment返回404问题的解决
问题根源
Kubernetes API v1.24中,PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name} 接口默认仅用于替换已存在的Deployment资源。只有在请求URL中携带?create=true查询参数时,PUT才会在目标资源不存在时执行创建操作——这是你遇到404的核心原因。
修正后的请求命令
在原请求的URL末尾添加?create=true参数,即可通过PUT完成Deployment的创建:
curl --request PUT \ --url http://localhost:8080/apis/apps/v1/namespaces/ns/deployments/nginx-deployment?create=true \ --header 'content-type: application/json' \ --data '{ "apiVersion":"apps/v1", "kind":"Deployment", "metadata":{ "name":"nginx-deployment", "labels":{ "app":"nginx" } }, "spec": { "replicas" : 3, "selector": { "matchLabels" : { "app":"nginx" } }, "template" : { "metadata" : { "labels" : { "app":"nginx" } }, "spec":{ "containers":[ { "name":"ngnix", "image":"nginx:1.7.9", "ports":[ { "containerPort": 80 } ] } ] } } }'
额外提示
- 若无需幂等性的创建场景,更推荐使用
POST /apis/apps/v1/namespaces/{namespace}/deployments接口创建Deployment(无需在URL中指定资源名称,可在请求体metadata中定义)。 - 注意到你请求体中容器名称拼写为
ngnix(正确应为nginx),若后续出现容器启动或识别问题,可修正该拼写错误。
内容的提问来源于stack exchange,提问作者Raf
相关产品推荐
相关产品推荐

