关于kubernetes:同事提出个我从未想过的问题为什么Kubernetes要多此一举推出静态Pod概念

49次阅读

共计 1565 个字符,预计需要花费 4 分钟才能阅读完成。

共事提出个我从未想过的问题,为什么 Kubernetes 要 ” 多此一举 ” 推出动态 Pod 概念?

咱们晓得 k8s 中 Pod 能够说是一个合格的容器小管家,Pod 被设计成反对多个容器能够一起进行调度,容器之间能够 共享资源和依赖、彼此通信、协调何时以及何种形式运行或终止本身

不晓得小伙伴有没有留神到咱们小管家的 孪生兄弟动态 Pod?

为什么 k8s 会推出动态 Pod 概念?

囧么肥事胡言乱语开课啦

动态 Pod 有什么非凡的中央呢?

失常状况下 Pod 是在 Master 上对立治理,指定,调配。所谓动态 Pod 就是不承受 Master 的治理,在指定的 node 受骗 kubelet 启动时,会 主动启动 所有定义的动态 Pod。

动态 Pod 间接由 特定节点上的 kubelet 过程 来治理,不通过 master 节点上的 apiserver 。⽆法与咱们常⽤的控制器 Deployment 或者 DaemonSet 进⾏关联,kubelet 间接监控每个 Pod,并在 故障生效时进行重启自愈

动态 Pod 始终绑定在某⼀个 kubelet ,并且 始终运⾏在同⼀个节点 上。

既然发现 API 不能治理,为什么能“看见”运行的动态 Pod?

kubelet 会为每个它治理的动态 Pod,调用 api-serverKubernetesapiserver 上创立⼀个镜像 Pod(Mirror Pod)。因而咱们能够在 apiserver 中查问到该 Pod,也能通过 kubectl 等形式进行拜访,然而不能通过 apiserver 进⾏管制(例如不能删除)。

一般 Pod 失败自愈和动态 Pod 有什么区别?

惯例 Pod 用 工作负载 资源来创立和治理多个 Pod。资源的控制器可能解决正本的治理、上线,并在 Pod 生效时提供自愈能力

自身节点能够尝试 重启或者齐全替换 操作,kubernetes默认的自愈机制是当 Pod 退出时对 Pod 进行重启

如果重启失败,能够从新拉取 Pod,实现替身替换:

例如,如果一个节点失败,控制器留神到该节点上的 Pod 曾经进行工作,就能够创立替换性的 替身 Pod。调度器会将替身 Pod 调度到一个衰弱的节点执行。

上面是一些治理一个或者多个 Pod 的工作负载资源的示例:

  • Deployment
  • StatefulSet
  • DaemonSet

动态 Pod 是指定在特定的节点上运行的 Pod,齐全交给 kubelet 进行监督自愈,重启也会在同一个指定的节点上进行重启。动态 Pod 始终绑定在某⼀个 kubelet,并且始终运⾏在同⼀个节点上。

如果 kubectl 进行或者删除动态 Pod 会怎么?

如果尝试删除或者进行,动态 Pod 会进入 Pending 状态,并且很快会被 kubelet 重启。

那如果我非要删除它呢?

kubelet 启动时,由 –Pod-manifest-path= or –manifest-url= 参数指定的⽬录下定义的所有 Pod 都会主动创立。

删除只须要在 配置目录 下删除对应的 yaml 配置文件。

运行中的 kubelet 会定期扫描配置的目录,并且依据文件中呈现或者隐没的 Pod 配置文件来创立或者删除 Pod。

动态 Pod 有什么作用?有哪些内置动态 Pod?

动态 Pod 通常绑定到某个节点上的 kubelet。其主要用途是 运行自托管的管制面

因为应用动态 Pod 能够无效预防通过 kubectl、或管理工具操作的误删除,能够利用它来部署一些外围组件利用, 保障应用服务总是运行稳固数量和提供稳固服务

在自托管场景中,应用 kubelet 来治理各个独立的管制面组件。例如:

  • 调度组件kube-scheduler
  • 秘书组件kube-apiserver
  • 外围大脑组件 kube-controller-manager
  • 数据仓组件 etcd


Kubernetes 举荐学习书

Kubernetes 权威指南 PDF
链接:https://pan.baidu.com/s/11huL… 提取码:sa88

k8s 系列所有问题更新记录:GitHub

正文完
 0