云原生
一句话介绍云原生应用
云原生本身甚至不能称为是一种架构,它首先是一种基础设施,运行在其上的应用称作云原生应用,只有符合云原生设计哲学的应用架构才叫云原生应用架构。
云原生系统的设计理念
面向分布式设计(Distribution):容器、微服务、API 驱动的开发;
面向配置设计(Configuration):一个镜像,多个环境配置;
面向韧性设计(Resistancy):故障容忍和自愈;
面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应;
面向交付设计(Delivery):自动拉起,缩短交付时间;
面向性能设计(Performance):响应式,并发和资源高效利用;
面向自动化设计(Automation):自动化的 DevOps;
面向诊断性设计(Diagnosability):集群级别的日志、metric 和追踪;
面向安全性设计(Security):安全端点、API Gateway、端到端加密;
云原生不是什么
基础设施即代码
云原生不是基础设施即代码,后者在提供必要的抽象来描述超出单个服务器的基础设施方面存在缺陷。
微服务
虽然微服务是实现您的应用程序灵活性的一种方式,但正如我们之前所说的,它们不是云原生应用程序的必需条件。
云原生建构
云原生基础设施在提供自主应用管理的IaaS之上创建了一个平台。该平台建立在动态创建的基础设施之上,以抽象出单个服务器并促进动态资源分配调度。
术语
- 调度器
- 编排器
Kubernates
一句话介绍Kubernates
跨主机集群的开源容器调度平台。
特点
- 可预测地部署应用程序。
- 在不影响现有业务的情况下,发布新功能。
功能
- Pod 提供复合应用并保留一个应用一个容器的容器模型,
- 挂载外部存储,
- Secret管理,
- 应用健康检查,
- 副本应用实例,
- 横向自动扩缩容,
- 服务发现,
- 负载均衡,
- 滚动更新,
- 资源监测,
- 日志采集和存储,
- 支持自检和调试,
- 认证和鉴权.
k8s架构
包含一个master和多个node节点
- master是控制中信
- node是提供cpu、内存和存储资源的节点
Master
Master 上运行着多个进程,包括面向用户的 API 服务、负责维护集群状态的 Controller Manager、负责调度任务的 Scheduler 等。
Node
- 节点是Kubernetes中最小的计算硬件单元。它是集群中单个机器的表示。在大多数生产系统中,节点很可能是数据中心中的物理机器,或者是托管在像谷歌云平台这样的云供应商上的虚拟机。不过,不要让惯例限制了你的想象力,从理论上讲,你可以把任何东西做成一个结点。
- 每个 node 上运行着维护 node 状态并和 master 通信的 kubelet,以及实现集群网络服务的 kube-proxy。
- 一个node上可以安装多个pods。
容器
应该将自己限制为每个容器的一个进程。拥有很多小容器比一个大容器好。如果每个容器都有一个紧密的焦点,那么更新更容易部署,并且问题更容易诊断。
pod实例
- k8s中部署的最小单位。
- Kubernetes不直接运行容器。它将一个或多个容器封装到一个称为Pod的高级结构中。相同Pod中的任何容器都将共享相同的名称空间和本地网络。容器可以很容易地与其他容器在相同的容器中进行通信,就像它们在同一台机器上同时保持一定程度的隔离。
- 在与 Docker 结合使用时,一个 pod 中可以包含一个或多个 Docker 容器。但除了有紧密耦合的情况下,通常一个 pod 中只有一个容器,这样方便不同的服务各自独立地扩展。避免在缩放中浪费资源。通常只保留一个主进程和紧密耦合的辅助容器(这些辅助容器通常被称为“侧三轮摩托车”)。
Docker
Kubernetes 是不依赖于 Docker 的,完全可以使用其他的容器引擎在 Kubernetes 管理的集群中替代 Docker。
持久卷
为了永久存储数据,Kubernetes使用持久卷(Persistent Volumes)。虽然所有节点的CPU和RAM资源都被集群有效地汇集和管理,但持久的文件存储却不是。相反,本地或云驱动器可以作为持久卷附加到集群上。这可以看作是将外部硬盘插入到集群中。持久卷提供了可以挂载到集群的文件系统,而不与任何特定节点相关联。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。