Kubernetes

Kubernetes Pod

本文主要是介绍Kubernetes Pod,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一,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版本会存在端口冲突的显现,需要我们注意这一点,因为它们使用的是同一个网卡;

 

这篇关于Kubernetes Pod的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!