专栏名称: 细说云计算
关注云平台的网络技术、存储技术,以及少量架构技术。
目录
相关文章推荐
美团技术团队  ·  可信实验白皮书系列04:随机轮转实验 ·  2 天前  
美团技术团队  ·  可信实验白皮书系列03:随机对照实验 ·  2 天前  
架构师之路  ·  爸爸!除了你,沈括,沈万三... ... ·  3 天前  
字节跳动技术团队  ·  掘金 AI 编程社区- 人人都是 AI 编程家竞赛 ·  2 天前  
51好读  ›  专栏  ›  细说云计算

Kubernetes与云原生应用概览

细说云计算  · 公众号  · 架构  · 2017-11-06 21:55

正文

请到「今天看啥」查看全文


2、依赖

显式得声明代码中的依赖,使用软件包管理工具声明,比如 Go 中的 Glide。

3、配置

将配置与代码分离,应用部署到 kubernete 中可以使用容器的环境变量或 ConfigMap 挂载到容器中。

4、后端服务

把后端服务当作附加资源,实质上是计算存储分离和降低服务耦合,分解单体应用。

5、构建、发布、运行

严格分离构建和运行,每次修改代码生成新的镜像,重新发布,不能直接修改运行时的代码和配置。

6、进程

应用程序进程应该是无状态的,这意味着再次重启后还可以计算出原先的状态。

7、端口绑定

在 kubernetes 中每个 Pod 都有独立的 IP,每个运行在 Pod 中的应用不必关心端口是否重复,只需在 service 中指定端口,集群内的 service 通过配置互相发现。

8、并发

每个容器都是一个进程,通过增加容器的副本数实现并发。

9、易处理

快速启动和优雅终止可最大化健壮性,kuberentes优秀的Pod生存周期控制。

10、开发环境与线上环境等价

在kubernetes中可以创建多个namespace,使用相同的镜像可以很方便的复制一套环境出来,镜像的使用可以很方便的部署一个后端服务。

11、日志

把日志当作事件流,使用stdout输出并收集汇聚起来,例如到ES中统一查看。

12、管理进程

后台管理任务当作一次性进程运行,kubectl exec进入容器内部操作。

另外,Cloud Native Go这本书的作者,CapitalOne 公司的Kevin Hoffman 在TalkingData T11 峰会上的High Level Cloud Native的演讲中讲述了云原生应用的 15 个因素,在原先的 12 因素应用的基础上又增加了如下三个因素:

API 优先

  • 服务间的合约

  • 团队协作的规约

  • 文档化、规范化

  • RESTful 或 RPC

监控

  • 实时监控远程应用

  • 应用性能监控(APM)

  • 应用健康监控

  • 系统日志

  • 不建议在线 Debug

认证授权

  • 不要等最后才去考虑应用的安全性

  • 详细设计、明确声明、文档化

  • Bearer token、OAuth、OIDC 认证

  • 操作审计

资源管理与容器设计模式

Kubernetes 通过声明式配置,真正让开发人员能够理解应用的状态,并通过同一份配置可以立马启动一个一模一样的环境,大大提高了应用开发和部署的效率,其中 kubernetes 设计的多种资源类型可以帮助我们定义应用的运行状态,并使用资源配置来细粒度得明确限制应用的资源使用。

容器的设计模式

Kubernetes 提供了多种资源对象,用户可以根据自己应用的特性加以选择。这些对象有:

在 Kubernetes 系统中,Kubernetes 对象 是持久化的条目。Kubernetes 使用这些条目去表示整个集群的状态。特别地,它们描述了如下信息:

  • 什么容器化应用在运行(以及在哪个 Node 上)

  • 可以被应用使用的资源

  • 关于应用如何表现的策略,比如重启策略、升级策略,以及容错策略

Kubernetes 对象是 “目标性记录” —— 一旦创建对象,Kubernetes 系统将持续工作以确保对象存在。通过创建对象,可以有效地告知 Kubernetes 系统,所需要的集群工作负载看起来是什么样子的,这就是 Kubernetes 集群的 期望状态

资源限制与配额

两层的资源限制与配置:

  • Pod 级别,最小的资源调度单位

  • Namespace 级别,限制资源配额和每个 Pod 的资源使用区间

管理 Kubernetes 集群

手工部署 Kubernetes 是一个很艰巨的活,你需要了解网络配置、docker 的安装与使用、镜像仓库的构建、角色证书的创建、kubernetes 的基本原理和构成、kubernetes 应用程序的 yaml 文件编写等。

我编写了一本kubernetes-handbook(https://jimmysong.io/kubernetes-handbook/)可供大家免费阅读,该书记录了本人从零开始学习和使用 Kubernetes 的心路历程,着重于经验分享和总结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路。

部署 Kubernetes 集群






请到「今天看啥」查看全文