K8S原理剖析:工作负载原理剖析和实践

简介: K8S原理剖析:工作负载原理剖析和实践

Kubernetes的魔法


Kubernetes是容器化应用程序模式的平台。这些模式使应用程序更易于部署,管理,扩展和从故障中恢复 - 这是”魔法”。


大纲

• 无状态模式

• 有状态模式

守护进程模式

• 批处理模式


无状态模式

不必为你的应用保持状态/持久化数据

• 典型应用代表: Nginx, Tomcat

• Replication Controller

• ReplicaSet

• Deployment


Replication Controller


ReplicaSet


Deployment


Deployment的常见用法

• 升级/回滚

kubectl set resources deployment nginx-deployment -c=nginx --limits=cpu=200m,memory=512Mi

kubectl rollout history deployment/nginx-deployment --revision=2

kubectl rollout undo deployment/nginx-deployment --to-revision=2

• 暂停/恢复

kubectl rollout pause deployment/nginx-deployment

kubectl rollout resume deploy/nginx-deployment

• 弹性、按比例扩/缩容

kubectl scale deployment nginx-deployment --replicas=10

kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80 # 需要和HPA联动

maxSurge=3; 25%(默认)

maxUnavailable=2; 25%(默认)


有状态模式

• 典型应用: Zookeeper, MongoDB, MySQL, etcd

• StatefulSet(曾用名: PetSet)

• StatefulSet的Pod和普通Pod区别: 有身份的!

StatefulSet身份三要素:

  • - 域名(网络) < - 容器IP易变
  • - PVC(存储)
  • - Pod Name(主机名)

• 配合headless service, PVC一起使用

• 严格的启动/删除顺序: 0, 1, 2…


守护进程模式

典型应用: fluentd, linkderd, ceph, kube-proxy

DaemonSet:保证每个节点总是运行一个Pod实例

  • - NodeSelector或NodeAffinity指定Node
  • - 经过( 1.11 Alpha特性) / 不经过调度器(不管Node状态)
  • - 支持滚动升级
  • - 支持级联/非级联删除


批处理模式

典型应用:并发执行的作业 – batch job

  • - 相关但独立的工作项:发邮件、数据扫描、文件转码

Job

  • - 保证指定数量Pod成功运行结束 - completions
  • - 支持并行 - parallelism
  • - 支持错误自动重试( 10s, 20s, 40s,… 6min)
  • - 删除Job会触发对应Pod删除

CronJob

  • - 基于时间调度的Job( Cron格式
  • - 用户可以暂停/恢复Job的周期性调度 .spec.suspend={true,false}
  • - 管理Job -> Pod


Job


Job常见使用方法

做不同的事情

  • - 扩展Job Expansion,传入参数、环境变量

做同样的事情

  • - 工作队列形式, 与Work Queue( RabbitMQ)结合


CronJob


K8S工作负载总结

  • 无状态模式: 使用Deployment提供高可用、弹性扩/缩容、升级 /回滚
  • 有状态模式:使用StatefulSet提供一致性, Pod的唯一/粘性的身份标识、存储,按序部署、扩缩容
  • 守护进程模式:一个节点部署一个(可自定义节点范围)
  • 批处理模式:并行跑多个Pod,并且保证都成功返回


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
16天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
56 2
|
3月前
|
Kubernetes 持续交付 开发者
探索并实践Kubernetes集群管理与自动化部署
探索并实践Kubernetes集群管理与自动化部署
116 4
|
16天前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
50 1
|
26天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
72 4
|
27天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
60 3
|
2月前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
36 2
|
2月前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
88 2
|
18天前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
18天前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
36 0
|
3月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践