如何在不部署 kubernetes 的情况下在命令行中启动 pod?
How to start a pod in command line without deployment in kubernetes?
我想以简单的方式调试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
?
// 我在 minikue 0.20.0 下 运行 和 kubernetes 1.7.0 在 Windows 7
kubectl run nginx --image=nginx --port=80 --restart=Never
--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
[...]
查看官方文档https://kubernetes.io/docs/user-guide/kubectl-conventions/#generators
你是说 "expose a service" 吗?
我想这个命令行会帮助你做到这一点。
kubectl expose pod nginx --type=LoadBalancer --port=80
现在有两种方式可以通过命令行创建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
为此使用生成器,默认 kubectl 运行 将创建一个部署对象。如果您想覆盖此行为,请使用 "run-pod/v1" 生成器。
kubectl run --generator=run-pod/v1 nginx1 --image=nginx
您可以参考下面的 link 以便更好地理解。
https://kubernetes.io/docs/reference/kubectl/conventions/#generators
我对 kubernetes 比较陌生,但自从提出这个问题以来,它似乎已经有了很大的发展。从其最新版本(我是 运行 v1.16)开始,生成器已被弃用,它们在 v1.18 中被完全删除。
参见对应的ticket and the release notes。
发行说明明确指出:
Remove all the generators from kubectl run. It will now only create
pods.
我已经使用各种 --restart
标志测试了 kubectl run
,但从未创建任何部署。我们现在拥有的是 "naked" Pod。虽然你可能想使用它,但它违背了 k8s best practices:
Don’t use naked Pods (that is, Pods not bound to a ReplicaSet or
Deployment) if you can avoid it. Naked Pods will not be rescheduled in
the event of a node failure.
当您使用“kubectl 运行 nginx --image=nginx --port=80”时,它会默认创建部署。
要创建广告连播,您有两种选择。
- kubectl 运行 --generator=run-pod/v1 nginx --image=nginx --port=80
- kubectl create pod nginx --image=nginx --port=80
我想以简单的方式调试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
?
// 我在 minikue 0.20.0 下 运行 和 kubernetes 1.7.0 在 Windows 7
kubectl run nginx --image=nginx --port=80 --restart=Never
--restart=Always
: The restart policy for this Pod. Legal values [Always
,OnFailure
,Never
]. If set toAlways
a deployment is created, if set toOnFailure
a job is created, if set toNever
, a regular pod is created. For the latter two--replicas
must be1
. DefaultAlways
[...]
查看官方文档https://kubernetes.io/docs/user-guide/kubectl-conventions/#generators
你是说 "expose a service" 吗? 我想这个命令行会帮助你做到这一点。
kubectl expose pod nginx --type=LoadBalancer --port=80
现在有两种方式可以通过命令行创建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
为此使用生成器,默认 kubectl 运行 将创建一个部署对象。如果您想覆盖此行为,请使用 "run-pod/v1" 生成器。
kubectl run --generator=run-pod/v1 nginx1 --image=nginx
您可以参考下面的 link 以便更好地理解。
https://kubernetes.io/docs/reference/kubectl/conventions/#generators
我对 kubernetes 比较陌生,但自从提出这个问题以来,它似乎已经有了很大的发展。从其最新版本(我是 运行 v1.16)开始,生成器已被弃用,它们在 v1.18 中被完全删除。 参见对应的ticket and the release notes。 发行说明明确指出:
Remove all the generators from kubectl run. It will now only create pods.
我已经使用各种 --restart
标志测试了 kubectl run
,但从未创建任何部署。我们现在拥有的是 "naked" Pod。虽然你可能想使用它,但它违背了 k8s best practices:
Don’t use naked Pods (that is, Pods not bound to a ReplicaSet or Deployment) if you can avoid it. Naked Pods will not be rescheduled in the event of a node failure.
当您使用“kubectl 运行 nginx --image=nginx --port=80”时,它会默认创建部署。 要创建广告连播,您有两种选择。
- kubectl 运行 --generator=run-pod/v1 nginx --image=nginx --port=80
- kubectl create pod nginx --image=nginx --port=80