为什么Kubectl运行有时会产生变形

时间:2019-07-06 13:09:02

标签: kubernetes kubectl kubernetes-deployment

我是否可以知道为什么运行kubectl有时会创建部署,有时会创建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: {}

2 个答案:

答案 0 :(得分: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并在发生故障时重新启动。

答案 1 :(得分:0)

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

使用kubectl run命令可以创建并运行可能已复制的特定映像。 创建部署或作业以管理创建的容器。

您的情况有所不同,可以在命令(第一个)中看到,包括重新启动策略参数。

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

尝试使用命令:

$ 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