kubernetes 概述
云原生的发展
云原生是一条最佳路径或者最佳实践。更详细的说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。因此,云原生其实是一套指导进行软件架构设计的思想。
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,那么运行多次就会得到不同的结果,这就可能导致系统的稳定性受到影响。
参考
- https://developer.aliyun.com/learning/roadmap/cloudnative?accounttraceid=7e0634e0241448e5bb170ee0ea97ae2frhfp
- https://kubernetes.io/docs/concepts/overview/
- https://www.ibm.com/topics/kubernetes
kubernetes 概述的更多相关文章
- 第一章 kubernetes概述
一.Kubernetes概述 1.官网地址:https://kubernetes.io 2.GuiHub:https://github.com/kubernetes/kubernetes 3.又来:谷 ...
- Kubernetes 概述和搭建(多节点)
一.Kubernetes整体概述和架构 Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务.通过Kubernetes能够进行应用的自动化部署和扩缩 ...
- Kubernetes概述
1. Kubernetes是什么 Kubernetes是一个可移植的.可扩展的.用于管理容器化工作负载和服务的开源平台,它简化(促进)了声明式配置和自动化.它有一个庞大的.快速增长的生态系统.Kube ...
- 入门-Kubernetes概述 (一)
1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S. K8S用于容器化应用程序的部署,扩展和管理. K8S提供了容 ...
- 【Kubernetes 系列一】Kubernetes 概述
以下内容还可以通过 Google Slide 查看:https://docs.google.com/presentation/d/1eYP4bkVBojI_e6PqdpxIf0hvWO-JwAf-fy ...
- [Kubernetes]关于K8s,你应该知道的一些东西
Kubernetes概述 Kubernetes(也常称K8s,用8代替8个字符"ubernete"而成的缩写),是一个开源的,用于管理云平台中多个主机上的容器化应用. 它的一个核心 ...
- 001.Kubernetes简介
一 Kubernetes概述 Kubernetes是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker ...
- 一线工程师带你深入学习和使用Kubernetes
http://page.factj.com/tor/xoxaHR0cDovL2RvY2tvbmUuaW8vYXJ0aWNsZS8yMzM0 Kubernetes是Google开源的容器集群管理系统,它 ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- (一)Kubernetes 系统基础
Kubernetes介绍 什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. 使用Kubernetes可以: ...
随机推荐
- 一次oracle行级锁导致的问题
分析问题:我在plsql/developer是用的system用户连接的数据库,而在crt用 sqlplus / as sysdba 连接数据库,是sys用户.现在在plsql/developer ...
- 3D降噪_运动估计块运动匹配
运动估计 运动估计是视频去噪技术的重要组成之一,计算相邻两帧视频序列各像素的相对运动偏移量,从而得到其运动轨迹. 点 ( i , j ) (i,j) (i,j)和 ( x , y ) (x,y) (x ...
- Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用
Unity UGUI的CanvasScaler(画布缩放器)组件的介绍及使用 1. 什么是CanvasScaler组件? CanvasScaler是Unity中UGUI系统中的一个组件,用于控制画布的 ...
- Java生成图片(简版)
1.图片模板示例 2.Java代码(简版) public static void main(String[] args) throws FileNotFoundException, IOExcepti ...
- linux内核笔记(二)微机计算机组成结构
一个系统有四个基本组成部分: 输入部分:接收系统的数据(键盘等) 处理中心:处理(cpu) 能源部分:处理需要的硬件资源(内存等) 输出部分:显示给用户(显示器等) 计算机系统分为: 计算机系统分为软 ...
- vulnhub billu:b0x
知识点 SQLi.目录爆破.数据库操作.文件包含漏洞.提权.反弹shell 解题步骤 nmap扫描有80,22端口 nmap -sV -Pn -T 4 192.168.220.132 访问网页提示sq ...
- QTextEdit的使用
import sys from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit,QVBoxLayout, QPushButton cla ...
- 给你推荐一款快速通过 typescript 生成 jsonschema 的包处理器
theme: github fast-typescript-to-jsonschema Typescript 生成 jsonschema 数据插件 性能 案例 interface AAA { a: n ...
- 关于微信小程序原生组件与uniApp混合开发过程遇到的问题与解决方式
前言: 在实际开发过程中,尤其是小程序的开发,我们常常会遇到一些在文档中解决不了的问题,在这里,我就浅谈一下我遇到的一些问题 1.小程序的构建框架是uni-app,却突然被要求用原生的微信小程序代码来 ...
- DDD项目落地之充血模型实践
背景: 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率.提升可维护性: 1.DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务( ...