1

我能知道为什么 kubectl run 有时会创建部署,有时会创建 pod。

您可以看到第一个创建 pod,第二个创建部署。唯一的区别是 --restart=Never


// 1
chams@master:~/yml$ kubectl run ng --image=ngnix --command --restart=Never --dry-run -o yaml
apiVersion: v1
kind: Pod
..
status: {}

//2
chams@master:~/yml$ kubectl run ng --image=ngnix --command  --dry-run -o yaml
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: ng
  name: ng
..
status: {}
4

2 回答 2

1

默认情况下kubectl run,命令会创建一个部署。

使用kubectl run命令,您可以创建和运行特定图像,可能会被复制。创建部署或作业以管理创建的容器。

您的情况的差异在命令(第一个)中可以看到,包括重启策略参数。

如果重新启动策略的值设置为“从不”,则会创建一个常规pod 。对于后两个 --replicas 必须为 1。默认 ' Always ',对于 CronJobs Never。

尝试使用命令:

$ kubectl run --generator=run-pod/v1 ng --image=ngnix --command  --dry-run -o yaml

代替

$ kubectl run ng --image=ngnix --command  --dry-run -o yaml

避免声明 "kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead."

您可以在此处找到更多信息: docker -kubectlkubectl-run

于 2019-07-09T12:21:40.333 回答
1

这些标志是故意用来创建不同类型的对象的。我在以下帮助下进行复制kubectl run

  --restart='Always': The restart policy for this Pod.  Legal values [Always, 
OnFailure, Never].  If set to 'Always' a deployment is created, if set to 
'OnFailure' a job is created, if set to 'Never', a regular pod is created. For 
the latter two --replicas must be 1.  Default 'Always', for CronJobs `Never`.
  • Never就像一个立即安排的 cronjob。
  • Always创建一个部署,部署监控 pod 并在失败时重新启动。
于 2019-07-06T14:36:33.397 回答