k8s管理pod资源对象(上)
一、容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出。若要在一个容器中运行多个进程,则需要为这些进程提供一个类似于linux操作系统init进程的管控类进程,以树状结构完成多进程的生命周期管理。绝大多数场景中都应该于一个容器中仅运行一个进程,它将日志信息直接输出至容器的标准输出。不过,分别运行于各自容器的进程之间无法实现基于ipc的通信机制,此时,容器间的隔离机制对于依赖于此类通信方式的进程来说却又成了阻碍。pod资源抽象正是用来解决此类问题的组件。pod对象是一组容器的集合,这些容器共享network、uts及ipc名称空间,因此具有相同的域名、主机名和网络接口,并可通过ipc直接通信。为一个pod对象中的各容器提供网络名称空间等共享机制的是底层基础容器pause。 尽管可以将pod类比为物理机或vm,但一个pod内通常仅应该运行一个应用,除非多个进程间有密切关系。不过,有些场景要求必须于同一pod中同时运行多个容器,此时,这些分布式应用必须遵循某些最佳实践机制或基本准则。事实上,k8s并非期望成为一个管理系统,而是一个支持这些最佳实践的向开发人员或管理人员提供更高级别服务的系统。分布式系统设计通常包含以下几种模型: 1、sidecar pattern