2020-05-28 04:37:48
K8S(Kubernetes)是容器编排领域的事实标准,由谷歌基于Borg系统开源,提供容器集群管理、网络、调度、权限、资源、安全及硬件等全方位管理能力。 以下从核心概念、POD资源类型及协作模式展开分析:
一、K8S的核心定位:超越容器集群管理资源调度:根据容器需求动态分配计算、存储资源。
服务发现与负载均衡:自动处理容器间的网络通信。
自愈能力:监控容器状态,自动重启或替换故障容器。
扩展性:支持水平扩展(如批量增加副本)和垂直扩展(调整资源配额)。
POD是由一个或多个容器组成的逻辑单元,容器共享网络、存储和进程命名空间。
作为K8S最小调度单位,POD中的容器必须部署在同一节点,不可分割。
资源隔离与共享:通过emptyDir等卷类型实现容器间文件共享(如Jenkins Workspace)。
协作模式:容器可分工执行不同任务(如jnlp容器负责通信,python3容器执行测试)。
灵活性:支持动态创建和回收POD,适应高可用和负载均衡需求。
共享存储:通过volumeMounts挂载共享目录(如/home/jenkins/agent),实现代码和测试报告的传递。
共享网络:POD内容器默认通过container模式共享网络,支持代理容器劫持业务流量(如Service Mesh)。
共享进程空间:启用shareProcessNamespace后,可实现进程级操作(如JVM字节码注入)。
Jenkins Pipeline动态扩展:通过K8S插件动态创建POD,在jnlp容器中注册Slave节点,在python3容器中执行测试任务。
多环境兼容性测试:在POD中定义多个Python版本容器,通过container指令切换运行环境。
Sidecar代理:部署独立容器处理日志、监控或安全代理,与主业务容器解耦。
动态资源分配减少人工干预,提高集群利用率。
自愈机制降低运维成本,保障服务连续性。
与Jenkins、Service Mesh等工具深度集成,支持复杂工作流。
通过CRD(自定义资源定义)扩展功能,适应多样化需求。
为微服务、无服务器计算等提供基础运行环境。
推动DevOps实践,加速应用交付周期。
POD定义:包含jnlp(通信)和python3(测试)容器,共享workspace-volume卷。
Pipeline定义:通过matrix策略并行测试多Python版本,动态选择容器环境。
容器间通过共享目录传递代码和结果。
通过标签(如qa: python3)实现POD精准调度。
总结:K8S的容器编排能力体现在对POD的精细化管理及容器间协作模式的支持。通过Sidecar模式、资源共享和自动化调度,K8S不仅简化了容器管理,更构建了高效、弹性的云原生应用运行环境。后续可进一步探索JOB等资源类型在批处理任务中的应用。