一,POD资源管理
1,什么是pod
Pod是Kubernetes集群中最小部署单元,一个Pod由一个容器或多个容器组成,这些容器可以共享存储,网络等资源等。 Pod有以下特点: (1)一个Pod可以理解为一个应用实例,提供服务; (2)Pod中容器始终部署在同一个Node上; (3)Pod中容器共享网络,存储资源; (4)Kubernetes直接管理Pod,而不是容器;
2,pod存在的意义
Pod主要用法: 运行单个容器: 这是最常见的用法,在这种情况下,可以将Pod看做是单个容器的抽象封装。 运行多个容器: 封装多个紧密耦合且需要共享资源的应用程序。 如果有这些需求,你可以运行多个容器: (1)两个应用之间发生文件交互; (2)两个应用需要通过127.0.0.1或者socket通信; (3)两个应用需要发生频繁的调用; pod场景: 众所周知,docker容器运行时需要后台守护进程,比如我们将"nginx"和"filebeat"应用部署在同一个容器内,无论我们选用哪个应用程序作为后台守护进程均可运行容器,但只要被选择用于后台守护进程的程序挂掉后,另一个程序可能无法使用。 为了解决上述的问题,我们生产环境中是建议将"nginx"和"filebeat"两个应用可以拆开,用两个容器部署,这样可以实现解耦,即一个应用程序挂掉不会影响到另一个容器的运行,因为各个容器底层资源是隔离的。 K8S的Pod设计: K8S已经考虑到上述应用依赖性比较强的场景,我们可以将"nginx"单独作为一个容器运行,它会产生日志文件,而后我们单独运行一个"filebeat"容器,用于收集日志到ELK集群中。 你可能会疑问,为什么同一个Pod内多个容器共享同一个网络空间呢? (1)节省IP地址的分配,因为一个较大的集群中,可能成千上万个容器,在刚刚每天甚至能达到上亿级别的容器运行,每周数十亿容器运行,因此同一个Pod内运行多个容器,我们没有必要维护多个IP,这样可以节省IP地址的分配; (2)多个容器使用同一个网络空间,可以降低维护成本,无需运维人员同时维护同一个Pod内的多个网卡,降低运维成本,同时,也能降低开发的维护成本; (3)依赖关系较高的多个容器可以通过127.0.0.1直接进行通信,但也会面临缺陷,比如在同一个Pod内运行多个Nginx版本会存在端口冲突的显现,需要我们注意这一点,因为它们使用的是同一个网卡;
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289294.html