Kubernetes新手求助:如何为Deployment添加标签及命令报错问题
搞定Kubernetes Deployment标签的那些问题
嘿,作为K8S新手遇到这种版本差异和命令参数的坑太正常了,我来给你理清楚这两个问题:
一、为啥你用kubectl run只造出Pod,不是Deployment?
这完全是Kubernetes版本更新带来的行为变化:
- 老版本(大概1.18及更早)里,
kubectl run默认会帮你创建Deployment来管理Pod; - 但在新版本(1.19以后),官方把这个默认行为改了,
kubectl run现在默认只创建独立的Pod,除非你明确加--restart=Always参数,才会触发创建Deployment的逻辑。
法语视频里的环境应该是用的旧版本,所以人家直接跑命令就出Deployment了,而你的环境版本新,自然就只生成Pod啦。
要是你还想用kubectl run直接创建带标签的Deployment,补个参数就行:
kubectl run monnginx --image nginx --labels "env=prod,group=front" --restart=Always kubectl run monnginx2 --image nginx --labels "env=dev,group=front" --restart=Always kubectl run monnginx3 --image nginx --labels "env=prod,group=back" --restart=Always
跑完再用kubectl get deployments --show-labels就能看到带标签的Deployment了~
二、kubectl create deployment加--labels报错咋整?
为啥报错?
说白了就是kubectl create deployment这个命令根本没设计--labels这个命令行参数,官方没给这个选项,所以你一用就会弹出unknown flag: --labels的错误。
正确给Deployment加标签的两种方法
方法1:先创建Deployment,再补标签
先把基础的Deployment建起来,再用kubectl label命令给它贴标签:
# 先创建不带标签的Deployment kubectl create deployment monnginx --image nginx # 给这个Deployment添加标签 kubectl label deployment monnginx env=prod group=front
验证一下标签有没有加上:
kubectl get deployments --show-labels
方法2:用YAML配置文件创建(更灵活)
如果以后要加更多复杂配置,用YAML是更稳妥的方式:
- 先生成一个Deployment的YAML模板(不会真的创建资源,只是生成文件):
kubectl create deployment monnginx --image nginx --dry-run=client -o yaml > deploy.yaml
- 打开
deploy.yaml,在metadata.labels里加上你要的标签,修改后大概长这样:
apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: env: prod # 这里加你要的标签 group: front # 第二个标签 app: monnginx name: monnginx spec: replicas: 1 selector: matchLabels: app: monnginx strategy: {} template: metadata: creationTimestamp: null labels: app: monnginx spec: containers: - image: nginx name: nginx resources: {} status: {}
- 最后应用这个YAML文件,创建带标签的Deployment:
kubectl apply -f deploy.yaml
这样就能完美解决你的问题啦!
内容的提问来源于stack exchange,提问作者Rub1K
相关产品推荐
相关产品推荐

