Kubernetes

k8s——管理pod资源对象

本文主要是介绍k8s——管理pod资源对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

    pod是k8s系统的基础单元,是资源对象模型中可由用户创建或部署的最小组件,也是在k8s系统上运行容器化应用的资源对象。

1. 容器与pod资源对象

    单个容器通常只运行一个应用。pod是一组容器的集合,这些容器共享Network、UTS及IPC名称空间,具有相同的域名、主机名和网络接口,并可通过IPC直接通信,为一个Pod对象中的各容器提供网络名称空间等共享机制的是底层基础容器pause。

    分布式系统包含以下几种模型:

    1)Sidecar pattern(边车模型或跨斗模型):即为pod的主应用容器提供协同的辅助应用容器,每个应用独立运行,最为典型的代表是将主应用容器中的日志使用agent收集至日志服务中时,可以将agent运行为辅助应用容器,即sidecar。另一个典型的应用是为主应用容器中的database server启动本地缓存。

    2)Ambassador pattern(大使模型):即为远程服务创建一个本地代理,代理应用运行于容器中,主容器的应用通过代理容器访问远程服务。

    3)Adapter pattern(适配器模型):此种模型一般用于将主应用容器中的内容进行标准化输出。

2. 镜像及其获取策略

    各工作节点负责运行pod对象,而pod的核心功用在于运行容器,因此工作节点上必须配置容器运行引擎,如docker等。启动容器时,容器引擎将首先于本地查找指定的镜像文件,不存在的镜像则需要从指定的镜像存库下载至本地。

    一个pod对象至少存在一个容器,containers字段在spec中必选,其中name指定容器名称,必选;image方便更高级别的管理类资源等能覆盖此字段,可选;k8s系统支持用户自定义镜像文件的获取策略,例如在网络资源比较紧张时可以禁止从仓库中获取镜像文件。容器的"imagePullPolicy"字段用于为其指定镜像获取策略,它的值包括:

        Always:镜像标签为“latest”或镜像不存在时总是从指定的仓库中获取镜像。

        IfNotPresent:仅当本地镜像缺失时方才从目标仓库下载镜像。

        Never:禁止从仓库下载镜像,即仅适用本地镜像。

3. 暴露端口

    容器的ports字段的值是一个列表,由一到多个端口组成:

        containerPort:必选,指定在Pod对象的IP地址上暴露的容器端口,范围为(0,65536),使用时,应该总是指定容器应用正常监听这的端口。

        name:当前端口的名称,必须符合IANA_SVC_NAME规范且在当前pod内必须是唯一的,此端口名可被service资源调用。

        protocol:端口相关的协议,其值仅可为TCP或UDP,默认为TCP。

    pod对象的IP地址仅在当前集群内可达,它们无法直接接收来自集群外部客户端的请求流量,尽管它们的服务可达性不受工作节点边界的约束,但依然受制于集群边界。一个简单的解决方案是通过其所在的工作节点的ip地址和端口将其暴露都集群外部。

    ps: hostPort和NodePort类型的service对象暴露端口的方式不同,NodePort是通过所有节点暴露容器服务,而hostPort则是经由Pod对象所在节点的IP地址来进行。

 

这篇关于k8s——管理pod资源对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!