我是否可以知道为什么运行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: {}
答案 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-kubectl,kubectl-run。