【问题标题】:How to start a pod in command line without deployment in kubernetes?如何在命令行中启动 pod 而无需在 kubernetes 中部署?
【发布时间】:2017-12-29 23:30:25
【问题描述】:

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

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:
    kubectl run nginx --image=nginx --port=80 --restart=Never
    

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

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

    【讨论】:

    【解决方案2】:

    现在有两种方法可以通过命令行创建 pod。

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

    kubectl run --generator=run-pod/v1 nginx1 --image=nginx

    查看官方文档。 https://kubernetes.io/docs/reference/kubectl/conventions/#generators

    【讨论】:

      【解决方案3】:

      为此使用生成器,默认 kubectl 运行将创建一个部署对象。如果您想覆盖此行为,请使用 "run-pod/v1" 生成器。

      kubectl run --generator=run-pod/v1 nginx1 --image=nginx
      

      您可以参考下面的链接以获得更好的理解。

      https://kubernetes.io/docs/reference/kubectl/conventions/#generators

      【讨论】:

      【解决方案4】:

      我对 Kubernetes 比较陌生,但自从提出这个问题以来,它似乎已经发展了很多。从其最新版本(我正在运行 v1.16)开始,生成器已被弃用,它们在 v1.18 中被完全删除。 请参阅相应的ticketrelease notes。 发行说明明确表示:

      从 kubectl run 中删除所有生成器。它现在只会创建 豆荚。

      我已经使用各种 --restart 标志测试了 kubectl run,但从未创建任何部署。我们现在所拥有的称为“裸”Pod。虽然你可能很想使用它,但它违背了 k8s best practices

      不要使用裸 Pod(即 Pod 未绑定到 ReplicaSet 或 部署)如果可以避免的话。 Naked Pod 不会重新安排在 节点故障事件。

      【讨论】:

        【解决方案5】:

        当您使用“kubectl run nginx --image=nginx --port=80”时,它会默认创建一个部署。 要创建 pod,您有两种选择。

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

        【讨论】:

          【解决方案6】:

          您的意思是“公开服务”吗? 我认为这个命令行会帮助你做到这一点。

           kubectl expose pod nginx  --type=LoadBalancer --port=80
          

          【讨论】:

            猜你喜欢
            • 2020-08-05
            • 2018-08-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-05
            • 2021-06-18
            • 2018-12-01
            相关资源
            最近更新 更多