kubectl run NAME - 澄清

Sno*_*ash 3 kubernetes kubectl

根据文档:

https://kubernetes.io/docs/reference/ generated/kubectl/kubectl-commands#run

kubectl run NAME --image=image

将运行图像。

一些问题:

  • 我认为这是一个 Pod,而不是一个容器?

  • 我假设 NAME 与 pod 相关联?

aur*_*ius 5

雪崩,你说得对。这与 docker run 命令基本相同。因此,使用kubectl run NAME --image=image将准确地运行一个名为docker 镜像的pod。 您可以使用下面的示例来检查到底发生了什么NAMEimagekubectl describe pod NAMEkubectl 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
Run Code Online (Sandbox Code Playgroud)

那么之后发生的事情kubectl run就是:

  • 调度程序尝试选择一个节点来启动容器(起初由于污点而失败,因为我的节点处于 NotReady 状态(目前并不重要,但您可以在此处阅读更多相关信息

  • 调度程序已成功将 pod 分配给节点(centos-master)。

  • kubelet 检查 docker 镜像是否可用,并在必要时拉取它。

  • 然后容器被创建并启动。

*在这里您可以找到一篇有趣的文章,其中以更详细的方式解释了这一点。

这个名字与 pod 相关,因为 Pod 是 Kubernetes 中最小的工作单元。每个 Pod 可以包含一个或多个容器。Pod 中的所有容器都具有相同的 IP 地址和端口空间,可以访问托管该 pod 的节点上的共享存储。

基本上,kubectl命令行工具支持多种不同的方式来创建和管理Kubernetes 对象:

  • 命令式命令
  • 命令式对象配置
  • 声明性对象配置

*您可以在StackOverflow 答案或 Medium文章中找到有关它们的更多信息。

run命令是命令式方法的一个例子。是最简单的开始

[...] 因为该技术直接在活动对象上运行,所以它不提供以前配置的历史记录。