如何在命令行中启动pod而不在kubernetes中部署?

时间:2017-07-24 11:34:49

标签: kubernetes minikube

我想以简单的方式调试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

6 个答案:

答案 0 :(得分:22)

kubectl run nginx --image=nginx --port=80 --restart=Never
  

--restart=Always:此Pod的重启策略。法律价值[AlwaysOnFailureNever]。如果设置为Always   创建部署,如果设置为OnFailure创建作业,如果设置为Never,则会创建常规窗格。对于后两者--replicas必须为1。默认Always [...]

见官方文件https://kubernetes.io/docs/user-guide/kubectl-conventions/#generators

答案 1 :(得分:2)

我对kubernetes还是比较陌生,但是自从提出这个问题以来,它似乎已经发展了很多。从最新版本开始(我正在运行v1.16),不赞成使用生成器,并且在v1.18中已将其完全删除。 请参见相应的ticketrelease 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,您有两个选择。

  1. kubectl run --generator=run-pod/v1 nginx --image=nginx --port=80
  2. kubectl 创建 pod nginx --image=nginx --port=80