我想以简单的方式调试pod,因此我想在没有部署的情况下启动pod。
但它会自动创建部署
$ kubectl run nginx --image=nginx --port=80
deployment "nginx" created
所以我必须创建nginx.yaml
文件
--- apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
然后像下面一样创建pod,然后它只创建pod
kubectl create -f nginx.yaml
pod "nginx" created
如何在命令行中指定kind:Pod
以避免deployment
?
//我在Windows 7下运行minikue 0.20.0和kubernetes 1.7.0
答案 0 :(得分:22)
kubectl run nginx --image=nginx --port=80 --restart=Never
--restart=Always
:此Pod的重启策略。法律价值[Always
,OnFailure
,Never
]。如果设置为Always
创建部署,如果设置为OnFailure
创建作业,如果设置为Never
,则会创建常规窗格。对于后两者--replicas
必须为1
。默认Always
[...]
见官方文件https://kubernetes.io/docs/user-guide/kubectl-conventions/#generators
答案 1 :(得分:2)
我对kubernetes还是比较陌生,但是自从提出这个问题以来,它似乎已经发展了很多。从最新版本开始(我正在运行v1.16),不赞成使用生成器,并且在v1.18中已将其完全删除。 请参见相应的ticket和release notes。 发行说明明确指出:
从kubectl运行中删除所有生成器。现在它将仅创建 豆荚。
我已经用各种kubectl run
标志测试了--restart
,但从未创建任何部署。我们现在所拥有的称为“裸”荚。尽管您可能会想使用它,但它与k8s best practices背道而驰:
请勿使用裸露的Pod(即,未绑定到ReplicaSet或 部署),如果可以避免的话。裸豆荚不会重新安排 发生节点故障时。
答案 2 :(得分:0)
您的意思是“公开服务”吗? 我认为此命令行将帮助您做到这一点。
kubectl expose pod nginx --type=LoadBalancer --port=80
答案 3 :(得分:0)
现在有两种方法可以通过命令行创建pod。
kubectl run nginx --image=nginx --restart=Never
OR
kubectl run --generator=run-pod/v1 nginx1 --image=nginx
请参阅官方文档。 https://kubernetes.io/docs/reference/kubectl/conventions/#generators
答案 4 :(得分:0)
为此使用生成器,默认的kubectl运行将创建一个部署对象。如果要覆盖此行为,请使用“ run-pod / v1” 生成器。
kubectl run --generator=run-pod/v1 nginx1 --image=nginx
您可以参考下面的链接以获得更好的理解。
https://kubernetes.io/docs/reference/kubectl/conventions/#generators
答案 5 :(得分:-1)
当您使用“kubectl run nginx --image=nginx --port=80”时,它默认会创建一个部署。 要创建 Pod,您有两个选择。