同事提出个我从未想过的问题,为什么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-企业级容器应用托管》-持续胡说八道

第一段:推荐阅读:【云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?】

第二段:推荐阅读:【趁着同事玩游戏偷偷认识k8s一家子补补课】

第三段:推荐阅读:【Kubernetes家族容器小管家Pod在线答疑】

第四段:推荐阅读:【同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念?】

第五段:待更新?推荐休闲阅读:【囧么肥事】

同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念?的更多相关文章

  1. 对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所以我不甘愿如此,从此让我在大学里面直接选择一个让我巨大的转折————IT。

    对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所 ...

  2. 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器?

    探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 线上多个服务应用陷入了死 ...

  3. kubernetes集群之Pod说能不能让我体面的消亡呀?

    kubernetes集群之Pod说能不能让我体面的消亡呀? 由于 Pod 所代表的是在集群中节点上运行的进程,当不再需要这些进程时允许其体面地终止. 1.如果 preStop 回调所需要的时间长于默认 ...

  4. k8s家族Pod辅助小能手Init容器认知答疑?

    k8s家族Pod辅助小能手Init容器认知答疑? k8s集群Init 容器是一种特殊容器,职责是在Pod的生命周期中作为应用容器的前置启动容器. 在很多应用场景中,在 Pod 内的应用容器正式启动之前 ...

  5. IT运维面试问题总结

    IT运维面试总结如下,后期更新于:https://www.yuque.com/docs/share/d3dd1e8e-6828-4da7-9e30-6a4f45c6fa8e. 欢迎基于学习.交流目的的 ...

  6. Kubernetes K8s

    1 Kubernetes入门及概念介绍 Kubernetes(K8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.开源将Docker 看成Kubernetes内部使用的低级别组 ...

  7. Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备

    Skype的故事:几乎所有风投都想投 犯罪分子洗钱必备 转载自: http://news.chinaventure.com.cn/11/7/1381032922.shtml 今年是 Skype 网络电 ...

  8. 成 功 的 背 后 !( 致给所有IT人员)

    转载了这篇文章,希望能对自己和看到这篇博客的人有所激励. 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人. ------------------- ...

  9. 成功的背后!(给所有IT人)

    转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过 ...

随机推荐

  1. oracle 之 EXP、IMP 使用简介

    注:DOS命令行中执行exp.imp 导出导入ORACLE数据,ORACLE操作者具有相应的权限! 1.1.导出整库或当前用户:关键字:full语法:exp 用户/密码@数据库实例名 file=导出文 ...

  2. 如何在 CentOS 上安装 dos2unix 和 unix2dos 命令

    yum install -y dos2unix 注意:以上安装包既包含 dos2unix 命令,又包含 unix2dos 命令.

  3. SQL高级优化(二)之MySQL架构

    一.架构 想要学好SQL优化就必须从对应数据库的基本架构开始学习 架构图如下 二.架构分析 1. 连接管理与安全验证 ​     MySQL有连接池(Connection Pool)管理客户端的连接. ...

  4. WinMain是如何被调用的

    WinMain函数 WinMain函数原型 Win32应用程序的入口函数为WinMain,函数原型在WinBase.h文件中: int WINAPI WinMain (     _In_ HINSTA ...

  5. vue3.0+vite+ts项目搭建--初始化项目(一)

    vite 初始化项目 使用npm npm init vite@latest 使用yarn yarn create vite 使用pnpm pnpx create-vite 根据提示输入项目名称,选择v ...

  6. JAVA-JDK1.7-ConCurrentHashMap-测试和验证

    概述 上次记录了关于ConCurrentHashMap的原理以及源码,现在我对其进行有关功能的测试,下面就讲解一下我测试的内容和代码.这些测试主要针对JDK1.7版本. GET安全测试 上一篇写过ge ...

  7. Git命令中波浪号~与脱字符^的区别

    0.前言 波浪号~,英文名叫 tilde.脱字符^,英文名叫caret. 这两种符号常见于git reset的情景,简单的项目结构和操作一般不会涉及到两者之间的区别,似乎用哪个都可以.如果遇到比较繁杂 ...

  8. 【记录一个问题】android ndk下设置线程的亲缘性,总有两个核无法设置成功

    参考了这篇文章:https://blog.csdn.net/lanyzh0909/article/details/50404664 大体的代码如下: #include <pthread.h> ...

  9. Windows Server 2008 R2 数据离机备份与恢复操作手册

    Windows Server 2008 R2 数据离机备份与恢复操作手册 实验环境 Windows server 2008 R2(服务器) IP地址:192.168.136.175 计算机名:CXH ...

  10. Filter-完整的用户登录和权限检查

    Filter过滤器的使用步骤: 1,编写一个类去实现Filter接口 2,实现拦截(过滤)方法doFilter() 3,到web.xml中配置Filter的拦截路径 补充login.jsp登录页面 编 ...