简述Kubernetes中什么是静态Pod?

创建文件会导致内核内存增长,删除这些文件会导致内存减少.但我们的服务存储数据,因此它会不断创建大量文件,直到因为OOMKilled而终止pod并重新启动. 我们测试了使用带有-kernel-memory参数的独立docker来限制内核内存,并且它按预期工作.内核内存增长到极限并且不再上升.但我们没有找到任何方法在kubernetes集群中这样做.有没有办法限制K8S环境中的内核内存?为什么文件的创建会导致内核内存增长并且不会被释放?

每个Pod都有一个特殊的被称为根容器的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器 。

为什么Kubernetes会设计出一个全新的Pod概念,并且有这样特殊的结构?

  • Pause容器作为Pod根容器,以它的状态代表整个容器组的状态
  • Kubernetes为每个Pod分配唯一的IP的地址,称之为Pod IP,一个Pod里的多个容器共享Pod IP。Kubernetes要求底层网络支持集群内任意两个Pod之间的TCP/IP的直接通讯,采用虚拟二层网络技术来实现,一个Pod里的容器与另外主机上的Pod容器能够直接通信。

    普通Pode一旦被创建,就会被放入到etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定(Binding),随后该Pod 被对应的Node上的kubelet进程实例化成一组相关的docker容器运行起来。 当Pod里的某个容器停止时,Kubernetes会自动检测到这个问题并且重新启动这个Pod (重启Pod里的所有容器),如果Pod所在的Node宕机,则会将这个Node上所有的Pod从新调度到其他节点上。

    Pod的IP加上这里的容器端口(container Port),就组成了一个全新的概念---Endpoint它代表着此Pod里的一个服务进程的对外通讯地址。一个Pod也存在着多个Endpoint的情况,比如我们把Tomcat定义为一个Pod时,可以对外暴露端口与服务端口这两个Endpoint。

    Event是一个事件的记录,记录事件的最早生成时间、最后重现时间、重复次数、发起者、类型,以及导致此事件的原因等众多信息。Event通常会关联到某个具体的资源上,是排查故障的重要参考,Node描述信息包含了Event,而Pod同样有Event记录。
    当我们发现某个Pod迟迟无法创建时,我们就可以用kubectl describe pod [Pod名称]来查看,定位问题。


 

我要回帖

更多关于 简述设置静态工作点的必要性 的文章

 

随机推荐