vlambda博客
学习文章列表

云原生三驾马车之Kubernetes探析

什么是云原生?

云原生就是面向云环境的,从设计层面支持自动伸缩容,资源控制和支持统一服务注册/发现的应用。



云原生三驾马车之Kubernetes探析


第一驾马车:Kubernetes核心组件介绍

Kubernetes和云原生的联系

在云原生领域,行业最佳实践一直将服务器作为一种商品。其思想是, 没有哪一台服务器是独一无二、不可或缺或不可替换的。任何一个部  件都可以被悄无声息的取下并替换。如果一台服务器宕了,那没什么问题,另换一台就是了。


云原生三驾马车之Kubernetes探析


Kubernetes架构图

API Server 核心组件。对外公开 Kubernetes API

Etcd 持久化所有的数据内容

Scheduler 负责监视新创建的、未指定运行节 点(node)的 Pods,选择Pod运行节点

Controller-Manager 管理所有的 控制器

Kubelet 每个Node上运行的代理,保证 容器运行在指定节点中

云原生三驾马车之Kubernetes探析


云原生三驾马车之Kubernetes探析


Kubernetes实现服务编排的奥秘

服务编排通俗的说就是将一个服务在合适的时间放在一个合适的地方,让其按照规划的方式运行。--- 这就是服务编排 

核心概念

一组(一个或多个) 容器

共享存储、网络、以及怎样运行这些容器的声明

Pod是可以创建和管理的、最小单位可部署的计算 单元

被某种工作负载或者控制器管理

云原生三驾马车之Kubernetes探析



工作负载类型

云原生三驾马车之Kubernetes探析


Deployment 集群上的无状态应用

StatefulSet 通过一个或者多个以某种方式 跟踪状态的应用,用于有状态应用

Daemonset 本地节点常驻运行的应用

Job/CronJob 定时创建可以一直运行到结束 并停止的无状态应用

Services 一组相同Pods构成的网络组


Deployment 是保证其管理的Pod数量永远符合用户的期望

用户期望拥有三个运行 nodejs 的pod,  Deployment会时刻监控pod状态,当出现数量不足时,会自动补齐

云原生三驾马车之Kubernetes探析


云原生三驾马车之Kubernetes探析

服务编排的过程

云原生三驾马车之Kubernetes探析

List Watch

集群控制模块最核心的设计

采用统一的异步消息处理机制,保证了消 息的实时性、可靠性、顺序性和性能

云原生三驾马车之Kubernetes探析


List Watch关键设计

  1. 基于chunk的消息通知 

    云原生三驾马车之Kubernetes探析

2.本地缓存 & 本地索引 

云原生三驾马车之Kubernetes探析

3.无界队列 & 事件去重 

云原生三驾马车之Kubernetes探析

4.基于观察者模式的注册

云原生三驾马车之Kubernetes探析


Kubernetes落地最佳实践

SideCar 只设置辅助类的工具、SideCar 不要用于Init初始化

云原生三驾马车之Kubernetes探析

单集群高可用性

云原生三驾马车之Kubernetes探析

Kubernetes In Kubernetes


K8S多可用区建设

通过K8s on K8s实现多个集群托管

通过外部LB进行流量控制

单集群高可用是基础,然后在规划多可用区

K8s on K8s是一套‘自举’托管方案,可以增加集群水平扩展性。