云原生的发展

云原生是一条最佳路径或者最佳实践。更详细的说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。因此,云原生其实是一套指导进行软件架构设计的思想。

2004 年— 2007 年,Google 已在内部大规模地使用像 Cgroups 这样的容器技术;

2008 年,Google 将 Cgroups 合并进入了 Linux 内核主干;

2013 年,Docker 项目正式发布。

2014 年,Kubernetes 项目也正式发布。这样的原因也非常容易理解,因为有了容器和 Docker 之后,就需要有一种方式去帮助大家方便、快速、优雅地管理这些容器,这就是 Kubernetes 项目的初衷。在 Google 和 Redhat 发布了 Kubernetes 之后,这个项目的发展速度非常之快。

2015 年,由Google、Redhat 以及微软等大型云计算厂商以及一些开源公司共同牵头成立了 CNCF 云原生基金会。CNCF 成立之初,就有 22 个创始会员,而且 Kubernetes 也成为了 CNCF 托管的第一个开源项目。在这之后,CNCF 的发展速度非常迅猛;

2017 年,CNCF 达到 170 个成员和 14 个基金项目;

2018 年,CNCF 成立三周年有了 195 个成员,19 个基金会项目和 11 个孵化项目,如此之快的发展速度在整个云计算领域都是非常罕见的。

什么是 Kubernetes?

Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”,它是通过将8个字母“ubernete ”替换为“8”而导致的一个缩写。

如今,Kubernetes 和更广泛的容器生态系统日益成熟,成为通用的计算平台和生态系统,可与作为现代云基础架构和应用基本构建块的虚拟机 (VM) 一争高下,甚至大有后来居上之势。这个生态系统使组织能够交付高效的平台即服务 (PaaS),用于应对与基础架构和运营相关的多个云原生开发任务和问题,从而使开发团队能够专心致志地从事编码和创新工作。

为什么需要 Kubernetes,它能做什么?

  • 部署

    将指定数量的容器部署到指定的主机,并确保它们以期望的状态持续运行。

  • 服务发现和负载均衡

    Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

  • 存储编排

Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

  • 自动部署和回滚

    你可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。

  • 自动完成装箱计算

    你为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。

  • 自我治愈以实现高可用性

    当某个容器出现故障时,Kubernetes 可自动重新启动或替换它,以防止发生宕机情况。 它还可以关闭不满足运行状况检查要求的容器。

  • 密钥与配置管理

    Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

k8s的演变

面向对象

k8s将一切资源抽象成对象,核心对象包括

  • node:计算节点抽象,用来描述计算节点的资源抽象、健康状态等,可以是虚拟机或者是物理机(集群管理)
  • namespace:资源隔离的基本单位,是一个逻辑概念, 可以简单理解为文件系统中的目录结构
  • pod:用来描述应用实例的基本单位,调度的基本单元。包括镜像地址、资源需求等,k8s中最核心的对象,也是打通应用和基础架构的核心
  • service:将一组应用实例(pod)看做一个整体对外发布为服务,本质上是负载均衡和域名服务的声明(服务发现)

声明式系统

命令式:我要你做什么,怎么做,严格按照我说的做

声明式:我需要什么,而不是告诉你应该怎样做

声明式操作在分布式系统中的好处主要包括稳定性以及可预测性。在分布式系统中,如果一个操作是声明式的,例如设置副本数为3,无论运行多少次这个操作,结果都是一样的。相对而言,如果是一个命令式的操作,例如给副本数加1,那么运行多次就会得到不同的结果,这就可能导致系统的稳定性受到影响。

参考

kubernetes 概述的更多相关文章

  1. 第一章 kubernetes概述

    一.Kubernetes概述 1.官网地址:https://kubernetes.io 2.GuiHub:https://github.com/kubernetes/kubernetes 3.又来:谷 ...

  2. Kubernetes 概述和搭建(多节点)

    一.Kubernetes整体概述和架构 Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务.通过Kubernetes能够进行应用的自动化部署和扩缩 ...

  3. Kubernetes概述

    1. Kubernetes是什么 Kubernetes是一个可移植的.可扩展的.用于管理容器化工作负载和服务的开源平台,它简化(促进)了声明式配置和自动化.它有一个庞大的.快速增长的生态系统.Kube ...

  4. 入门-Kubernetes概述 (一)

    1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S. K8S用于容器化应用程序的部署,扩展和管理. K8S提供了容 ...

  5. 【Kubernetes 系列一】Kubernetes 概述

    以下内容还可以通过 Google Slide 查看:https://docs.google.com/presentation/d/1eYP4bkVBojI_e6PqdpxIf0hvWO-JwAf-fy ...

  6. [Kubernetes]关于K8s,你应该知道的一些东西

    Kubernetes概述 Kubernetes(也常称K8s,用8代替8个字符"ubernete"而成的缩写),是一个开源的,用于管理云平台中多个主机上的容器化应用. 它的一个核心 ...

  7. 001.Kubernetes简介

    一 Kubernetes概述 Kubernetes是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker ...

  8. 一线工程师带你深入学习和使用Kubernetes

    http://page.factj.com/tor/xoxaHR0cDovL2RvY2tvbmUuaW8vYXJ0aWNsZS8yMzM0 Kubernetes是Google开源的容器集群管理系统,它 ...

  9. 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)

    [编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...

  10. (一)Kubernetes 系统基础

    Kubernetes介绍 什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. 使用Kubernetes可以: ...

随机推荐

  1. 根据模板动态生成word(一)使用freemarker生成word

    @ 目录 一.准备模板 1.创建模板文件 2.处理模板 2.1 处理普通文本 2.2 处理表格 2.3 处理图片 二.项目代码 1.引入依赖 2.生成代码 三.验证生成word 一.准备模板 1.创建 ...

  2. 图扑 AR 技术应用与管理:施工建造、机柜扫描、办公室导航解决方案

    随着科技的不断革新和创新,越来越多的行业开始迎来数字化时代的变革.建筑行业作为人类历史上最重要的产业之一,在数字化转型方面同样也在不断推进.图扑软件结合 AR 技术的应用,为建筑行业带来了更加便捷高效 ...

  3. ISP图像处理之Demosaic算法及相关

    CFA及Demosaic介绍 1.Bayer(拜耳滤波器得到彩色) 图像在将实际的景物转换为图像数据时, 通常是将传感器分别接收红. 绿. 蓝三个分量的信息, 然后将红. 绿. 蓝三个分量的信息合成彩 ...

  4. 安装mysql5.7.20,和遇到的一些错误及解决方案

    下载: mysql-5.7.20是解压版免安装的,mysql-5.7.20下载地址:http://dev.mysql.com/downloads/mysql/ 2.安装 解压在你喜欢的位置 3.配置 ...

  5. 【调制解调】FM 调频

    说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 FM ...

  6. 学习OI两年我到底收获了什么

    做一个小小的总结 学习了两年的代码,刚刚要进入高中,留下一点文字给以前的学习做一个总结. 命中注定の邂逅-- 这两年之间,和编程产生了比学习更为低调的羁绊关系(我觉得用这个词语比较合适).编程给我带来 ...

  7. mybatis系列: 简介以及使用

    目录 一.简介 二.简单使用 一.简介 MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD. MyBatis在三层架构中负责持久层的,属于持久层框架. MyBatis的发展历程: ...

  8. Java代码审计之某博客

    对某博客的代码审计 在gitee上面找了一个个人博客项目,来进行实战代码审计,主要还是学习为主 技术菜菜,哪里错误希望师傅们指正 1.SQL注入 先了解Java Web中的数据传输流程 graph T ...

  9. 云原生 | 企业内使用 CoreDNS 构建高性能、插件化的DNS服务器

    [点击 关注「 全栈工程师修炼指南」公众号 ] 设为「️ 星标」带你从基础入门 到 全栈实践 再到 放弃学习! 涉及 网络安全运维.应用开发.物联网IOT.学习路径 .个人感悟 等知识分享. 希望各位 ...

  10. 10款Visual Studio实用插件

    前言 俗话说的好工欲善其事必先利其器,安装一些Visual Studio实用插件对自己日常的开发和工作效率能够大大的提升,避免996从选一款好的IDE实用插件开始.以下是我认为比较实用的Visual ...