kubectl 运行 NAME - 澄清
kubectl run NAME - clarifying
根据文档:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run
kubectl run NAME --image=image
将运行一张图片。
一些问题:
我猜这是一个 pod 而不是容器?
而且我假设 NAME 与广告连播相关联?
kubectl run NAME --image=image
命令将使用名为 [=30] 的图像生成名称为 NAME 的 pod(通过为给定图像创建相应的部署和复制集) =]图片。将此处的名称视为 Docker.
中的标签名称
然后,当您 运行 kubectl get pods
时,您将在列表中看到名称为 NAME 的 pod。
使用 kubectl get all
将获取默认名称 space 中的所有资源(还将列出部署和复制集对象)
示例:
$ kubectl run nginx --image=nginx
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6db489d4b7-cs748 0/1 ContainerCreating 0 6s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 0/1 1 0 6s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6db489d4b7 1 1 0 6s
如果您只想创建一个没有额外部署和复制控制器对象的 pod,请使用下面的命令
kubectl run NAME --image=image --restart=Never
当您列出上述命令的结果时(参考下面的输出),您应该只会看到相应的 pod(没有创建部署和复制集对象)
$ kubectl run nginx --image=nginx --restart=Never
pod/nginx created
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx 0/1 ContainerCreating 0 3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31d
Snowcrash,你是对的。这与 docker 运行 命令基本相同。因此,使用 kubectl run NAME --image=image
将恰好 运行 一个名为 NAME
的 pod 来自 docker 个名为 image
的图像。
您可以使用 kubectl describe pod NAME
检查到底发生了什么
这是 kubectl run nginx --image=nginx
的示例
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 89s (x2 over 89s) default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate.
Normal Scheduled 19s default-scheduler Successfully assigned default/nginx-7cdbd8cdc9-glkxq to centos-master
Normal Pulling 18s kubelet, centos-master pulling image "nginx"
Normal Pulled 14s kubelet, centos-master Successfully pulled image "nginx"
Normal Created 14s kubelet, centos-master Created container
Normal Started 14s kubelet, centos-master Started container
所以kubectl run
之后发生的事情是:
调度程序试图选择一个节点来启动容器(起初
它由于污点而失败,因为我的节点处于 NotReady 状态(不是
目前很重要,但您可以阅读更多相关信息 here)
调度程序成功将pod分配给节点(centos-master)。
kubelet 检查 docker 镜像是否可用,如果可用则拉取它
必要的。
然后容器创建并启动。
*here 你可以找到一篇有趣的文章,它以更详细的方式解释了这一点。
这个名字与pod有关,因为Pod是Kubernetes中最小的工作单元。每个 pod 可以包含一个或多个容器。 Pod 中的所有容器都具有相同的 IP 地址和端口 space,可以访问托管该 Pod 的节点上的共享存储。
基本上 kubectl
命令行工具支持几种不同的方式来 create and manage Kubernetes 对象:
- 命令式命令
- 命令式对象配置
- 声明式对象配置
*您可以在 or this Medium article 中找到更多关于它们的信息。
run
命令是命令式方法的一个例子。是最简单的入手
[...] Because this technique operates directly on live objects, it
provides no history of previous configurations.
根据文档:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run
kubectl run NAME --image=image
将运行一张图片。
一些问题:
我猜这是一个 pod 而不是容器?
而且我假设 NAME 与广告连播相关联?
kubectl run NAME --image=image
命令将使用名为 [=30] 的图像生成名称为 NAME 的 pod(通过为给定图像创建相应的部署和复制集) =]图片。将此处的名称视为 Docker.
然后,当您 运行 kubectl get pods
时,您将在列表中看到名称为 NAME 的 pod。
使用 kubectl get all
将获取默认名称 space 中的所有资源(还将列出部署和复制集对象)
示例:
$ kubectl run nginx --image=nginx
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6db489d4b7-cs748 0/1 ContainerCreating 0 6s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 0/1 1 0 6s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6db489d4b7 1 1 0 6s
如果您只想创建一个没有额外部署和复制控制器对象的 pod,请使用下面的命令
kubectl run NAME --image=image --restart=Never
当您列出上述命令的结果时(参考下面的输出),您应该只会看到相应的 pod(没有创建部署和复制集对象)
$ kubectl run nginx --image=nginx --restart=Never
pod/nginx created
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx 0/1 ContainerCreating 0 3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31d
Snowcrash,你是对的。这与 docker 运行 命令基本相同。因此,使用 kubectl run NAME --image=image
将恰好 运行 一个名为 NAME
的 pod 来自 docker 个名为 image
的图像。
您可以使用 kubectl describe pod NAME
检查到底发生了什么
这是 kubectl run nginx --image=nginx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 89s (x2 over 89s) default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate.
Normal Scheduled 19s default-scheduler Successfully assigned default/nginx-7cdbd8cdc9-glkxq to centos-master
Normal Pulling 18s kubelet, centos-master pulling image "nginx"
Normal Pulled 14s kubelet, centos-master Successfully pulled image "nginx"
Normal Created 14s kubelet, centos-master Created container
Normal Started 14s kubelet, centos-master Started container
所以kubectl run
之后发生的事情是:
调度程序试图选择一个节点来启动容器(起初 它由于污点而失败,因为我的节点处于 NotReady 状态(不是 目前很重要,但您可以阅读更多相关信息 here)
调度程序成功将pod分配给节点(centos-master)。
kubelet 检查 docker 镜像是否可用,如果可用则拉取它 必要的。
然后容器创建并启动。
*here 你可以找到一篇有趣的文章,它以更详细的方式解释了这一点。
这个名字与pod有关,因为Pod是Kubernetes中最小的工作单元。每个 pod 可以包含一个或多个容器。 Pod 中的所有容器都具有相同的 IP 地址和端口 space,可以访问托管该 Pod 的节点上的共享存储。
基本上 kubectl
命令行工具支持几种不同的方式来 create and manage Kubernetes 对象:
- 命令式命令
- 命令式对象配置
- 声明式对象配置
*您可以在
run
命令是命令式方法的一个例子。是最简单的入手
[...] Because this technique operates directly on live objects, it provides no history of previous configurations.