Kubernetes Handbook
  • Kubernetes 中文指南/云原生应用架构实践手册
  • 前言
    • 序言
  • 云原生
    • 云原生(Cloud Native)的定义
    • 云原生的设计哲学
    • Play with Kubernetes
    • 快速部署一个云原生本地实验环境
    • 使用Rancher在阿里云上部署Kubenretes集群
    • Kubernetes与云原生应用概览
    • 云原生应用之路——从Kubernetes到Cloud Native
    • 云原生编程语言
      • 云原生编程语言Ballerina
      • 云原生编程语言Pulumi
    • 云原生的未来
  • 概念与原理
    • Kubernetes架构
      • 设计理念
      • Etcd解析
      • 开放接口
        • CRI - Container Runtime Interface(容器运行时接口)
        • CNI - Container Network Interface(容器网络接口)
        • CSI - Container Storage Interface(容器存储接口)
    • Kubernetes中的网络
      • Kubernetes中的网络解析——以flannel为例
      • Kubernetes中的网络解析——以calico为例
      • 具备API感知的网络和安全性管理开源软件Cilium
        • Cilium架构设计与概念解析
    • 资源对象与基本概念解析
    • Pod状态与生命周期管理
      • Pod概览
      • Pod解析
      • Init容器
      • Pause容器
      • Pod安全策略
      • Pod的生命周期
      • Pod Hook
      • Pod Preset
      • Pod中断与PDB(Pod中断预算)
    • 集群资源管理
      • Node
      • Namespace
      • Label
      • Annotation
      • Taint和Toleration(污点和容忍)
      • 垃圾收集
    • 控制器
      • Deployment
      • StatefulSet
      • DaemonSet
      • ReplicationController和ReplicaSet
      • Job
      • CronJob
      • Horizontal Pod Autoscaling
        • 自定义指标HPA
      • 准入控制器(Admission Controller)
    • 服务发现
      • Service
      • Ingress
        • Traefik Ingress Controller
    • 身份与权限控制
      • ServiceAccount
      • RBAC——基于角色的访问控制
      • NetworkPolicy
    • 存储
      • Secret
      • ConfigMap
        • ConfigMap的热更新
      • Volume
      • Persistent Volume(持久化卷)
      • Storage Class
      • 本地持久化存储
    • 集群扩展
      • 使用自定义资源扩展API
      • 使用CRD扩展Kubernetes API
      • Aggregated API Server
      • APIService
      • Service Catalog
    • 资源调度
      • QoS(服务质量等级)
  • 用户指南
    • 用户指南
    • 资源对象配置
      • 配置Pod的liveness和readiness探针
      • 配置Pod的Service Account
      • Secret配置
      • 管理namespace中的资源配额
    • 命令使用
      • Docker用户过渡到kubectl命令行指南
      • kubectl命令概览
      • kubectl命令技巧大全
      • 使用etcdctl访问kubernetes数据
    • 集群安全性管理
      • 管理集群中的TLS
      • kubelet的认证授权
      • TLS bootstrap
      • 创建用户认证授权的kubeconfig文件
      • IP伪装代理
      • 使用kubeconfig或token进行用户身份认证
      • Kubernetes中的用户与身份认证授权
      • Kubernetes集群安全性配置最佳实践
    • 访问Kubernetes集群
      • 访问集群
      • 使用kubeconfig文件配置跨集群认证
      • 通过端口转发访问集群中的应用程序
      • 使用service访问群集中的应用程序
      • 从外部访问Kubernetes中的Pod
      • Cabin - Kubernetes手机客户端
      • Kubernetic - Kubernetes桌面客户端
      • Kubernator - 更底层的Kubernetes UI
    • 在Kubernetes中开发部署应用
      • 适用于kubernetes的应用开发部署流程
      • 迁移传统应用到Kubernetes中——以Hadoop YARN为例
      • 使用StatefulSet部署用状态应用
  • 最佳实践
    • 最佳实践概览
    • 在CentOS上部署Kubernetes集群
      • 创建TLS证书和秘钥
      • 创建kubeconfig文件
      • 创建高可用etcd集群
      • 安装kubectl命令行工具
      • 部署master节点
      • 安装flannel网络插件
      • 部署node节点
      • 安装kubedns插件
      • 安装dashboard插件
      • 安装heapster插件
      • 安装EFK插件
    • 生产级的Kubernetes简化管理工具kubeadm
      • 使用kubeadm在Ubuntu Server 16.04上快速构建测试集群
    • 服务发现与负载均衡
      • 安装Traefik ingress
      • 分布式负载测试
      • 网络和集群性能测试
      • 边缘节点配置
      • 安装Nginx ingress
      • 安装配置DNS
        • 安装配置Kube-dns
        • 安装配置CoreDNS
    • 运维管理
      • Master节点高可用
      • 服务滚动升级
      • 应用日志收集
      • 配置最佳实践
      • 集群及应用监控
      • 数据持久化问题
      • 管理容器的计算资源
      • 集群联邦
    • 存储管理
      • GlusterFS
        • 使用GlusterFS做持久化存储
        • 使用Heketi作为Kubernetes的持久存储GlusterFS的external provisioner
        • 在OpenShift中使用GlusterFS做持久化存储
      • GlusterD-2.0
      • Ceph
        • 用Helm托管安装Ceph集群并提供后端存储
        • 使用Ceph做持久化存储
        • 使用rbd-provisioner提供rbd持久化存储
      • OpenEBS
        • 使用OpenEBS做持久化存储
      • Rook
      • NFS
        • 利用NFS动态提供Kubernetes后端存储卷
    • 集群与应用监控
      • Heapster
        • 使用Heapster获取集群和对象的metric数据
      • Prometheus
        • 使用Prometheus监控kubernetes集群
        • Prometheus查询语言PromQL使用说明
      • 使用Vistio监控Istio服务网格中的流量
    • 分布式跟踪
      • OpenTracing
    • 服务编排管理
      • 使用Helm管理Kubernetes应用
      • 构建私有Chart仓库
    • 持续集成与发布
      • 使用Jenkins进行持续集成与发布
      • 使用Drone进行持续集成与发布
    • 更新与升级
      • 手动升级Kubernetes集群
      • 升级dashboard
  • 领域应用
    • 领域应用概览
    • 微服务架构
      • 微服务中的服务发现
      • 使用Java构建微服务并发布到Kubernetes平台
        • Spring Boot快速开始指南
    • Service Mesh 服务网格
      • 企业级服务网格架构
        • Service Mesh基础
        • Service Mesh技术对比
        • 采纳和演进
        • 定制和集成
        • 总结
      • Istio
        • 安装并试用Istio service mesh
        • 配置请求的路由规则
        • 安装和拓展Istio service mesh
        • 集成虚拟机
        • Istio中sidecar的注入规范及示例
        • 如何参与Istio社区及注意事项
        • Istio教程
        • Istio免费学习资源汇总
        • 深入理解Istio Service Mesh中的Envoy Sidecar注入与流量劫持
        • 深入理解Istio Service Mesh中的Envoy Sidecar代理的路由转发
      • Linkerd
        • Linkerd 使用指南
      • Conduit
        • Condiut概览
        • 安装Conduit
      • Envoy
        • Envoy的架构与基本术语
        • Envoy作为前端代理
        • Envoy mesh教程
      • SOFAMesh
        • SOFAMesh中的Dubbo on x-protocol
      • MOSN
        • 使用 MOSN 构建 SOFAMesh
    • 大数据
      • Spark standalone on Kubernetes
      • 运行支持Kubernetes原生调度的Spark程序
    • Serverless架构
      • 理解Serverless
      • FaaS-函数即服务
        • OpenFaaS快速入门指南
    • 边缘计算
    • 人工智能
  • 开发指南
    • 开发指南概览
    • SIG和工作组
    • 开发环境搭建
      • 本地分布式开发环境搭建(使用Vagrant和Virtualbox)
    • 单元测试和集成测试
    • client-go示例
    • Operator
      • operator-sdk
    • kubebuilder
    • 高级开发指南
    • 社区贡献
    • Minikube
  • CNCF(云原生计算基金会)
    • CNCF - 云原生计算基金会简介
    • CNCF章程
    • CNCF特别兴趣小组(SIG)说明
    • 开源项目加入CNCF Sandbox的要求
    • CNCF中的项目治理
    • CNCF Ambassador
  • 附录
    • 附录说明
    • Kubernetes中的应用故障排查
    • Kubernetes相关资讯和情报链接
    • Docker最佳实践
    • 使用技巧
    • 问题记录
    • Kubernetes版本更新日志
      • Kubernetes1.7更新日志
      • Kubernetes1.8更新日志
      • Kubernetes1.9更新日志
      • Kubernetes1.10更新日志
      • Kubernetes1.11更新日志
      • Kubernetes1.12更新日志
      • Kubernetes1.13更新日志
      • Kubernetes1.14更新日志
      • Kubernetes1.15更新日志
    • Kubernetes及云原生年度总结及展望
      • Kubernetes与云原生2017年年终总结及2018年展望
      • Kubernetes与云原生2018年年中总结及2019年展望
    • CNCF年度报告解读
      • CNCF 2018年年度报告解读
    • Kubernetes认证服务提供商(KCSP)说明
    • 认证Kubernetes管理员(CKA)说明
Powered by GitBook
On this page
  • Kubernetes
  • Kubernetes发展历史
  • Cloud Native
  • 容器是云原生的基石
  • 下一代云计算标准
  • 现状及影响
  • 当前存在的问题
  • 日益强大的社区
  • 创业公司与厂商支持
  • 2018年展望

Was this helpful?

  1. 附录
  2. Kubernetes及云原生年度总结及展望

Kubernetes与云原生2017年年终总结及2018年展望

PreviousKubernetes及云原生年度总结及展望NextKubernetes与云原生2018年年中总结及2019年展望

Last updated 5 years ago

Was this helpful?

本文主要关于Kubernetes及云原生生态圈在2017年取得的进展,及对2018年的展望。

云计算技术发展至今已经10多个年头了,从最开始的硬件虚拟化、IaaS、OpenStack、PaaS、容器设置到Serverless发展至今,已经越来约接近应用逻辑,容器实现了应用的分装,方便了应用在不同环境间的迁移,轻量级的特性又使它能够消耗更少的资源而带来更多的便利,但是独木难支,容器如果在单节点上运行并不能发挥它的最大效益,容器编排领域在2016年就成为了兵家必争之地。在新的一年即将到来时,本文将带您一起梳理2017年Kubernetes及云原生的发展,并对其在2018年的趋势作出预测。

Kubernetes

谈到就不得不谈到容器,容器从几年前的大热到现在的归于平淡,之前大家说容器通常是指Docker容器,甚至很多人就将容器等同于Docker,还有很多人像操作虚拟机一样得使用容器。

Kubernetes是谷歌根据其内部使用的Borg改造成一个通用的容器编排调度器,于2014年将其发布到开源社区,并于2015年将其捐赠给Linux基金会的下属的,也是GIFEE(Google Infrastructure For Everyone Else)中的一员,其他还包括HDFS、Hbase、Zookeeper等,见,下面就让我们来回顾一下Kubernetes的技术发展史。

Kubernetes发展历史

相信凡是关注容器生态圈的人都不会否认,Kubernetes已经成为容器编排调度的实际标准,不论Docker官方还是Mesos都已经支持Kubernetes,Docker公司在今年10月16日至19日举办的DockerCon EU 2017大会上宣布支持Kubernetes调度,就在这不久前Mesos的商业化公司Mesosphere的CTO Tobi Knaup也在官方博客中宣布Kubernetes on DC/OS。而回想下2016年时,我们还在为Swarm、Mesos、Kubernetes谁能够在容器编排调度大战中胜出而猜测时,而经过不到一年的发展,Kubernetes就以超过70%的市场占有率(据的调研报告)将另外两者遥遥的甩在了身后,其已经在大量的企业中落地,还有一些重量级的客户也宣布将服务迁移到Kubernetes上,比如GitHub(见),还有eBay、彭博社等。

Kubernetes自2014年由Google开源以来,至今已经发展到了1.9版本,下面是Kubernetes的版本发布路线图:

  • 2014年10月由Google正式开源。

  • 2015年7月22日发布1.0版本,在OSCON(开源大会)上发布了1.0版本。

  • 2015年11月16日发布1.1版本,性能提升,改进了工具并创建了日益强大的社区。

  • 2016年4月16日发布1.2版本,更多的性能升级加上简化应用程序部署和管理。

  • 2016年7月22日发布1.3版本,对接了云原生和企业级工作负载。

  • 2016年9月26日发布1.4版本,该版本起Kubernetes开始支持不同的运行环境,并使部署变得更容易。

  • 2016年12月13日发布1.5版本,该版本开始支持生产级别工作负载。

  • 2017年3月28日发布1.6版本,该版本支持多租户和在集群中自动化部署不同的负载。

  • 2017年6月29日发布1.7版本,该版本的kubernetes在安全性、存储和可扩展性方面有了很大的提升。

  • 2017年9月28日发布1.8版本,该版本中包括了一些功能改进和增强,并增加了项目的成熟度,将强了kubernetes的治理模式,这些都将有利于kubernetes项目的持续发展。

  • 2017年12月15日发布1.9版本,该版本最大的改进是Apps Workloads API成为稳定版本,这消除了很多潜在用户对于该功能稳定性的担忧。还有一个重大更新,就是测试支持了Windows了,这打开了在kubernetes中运行Windows工作负载的大门。

从上面的时间线中我们可以看到,Kubernetes的产品迭代周期越来越快,从2014年开源,2015年发布了两个版本,2016年发布了三个版本,而今年一年内就发布了4个大版本,Kubernetes已经变了的越来越稳定,越来越易用。

Cloud Native

国外已经有众多的Kubernetes和Cloud Native meetup定期举办,在中国今年可以说是小荷才露尖尖角。

另外还有由才云科技分别在北京、上海、深圳、青岛等地举办了多场k8smeetup。

容器是云原生的基石

容器最初是通过开发者工具而流行,可以使用它来做隔离的开发测试环境和持续集成环境,这些都是因为容器轻量级,易于配置和使用带来的优势,docker和docker-compose这样的工具极大的方便的了应用开发环境的搭建,同时基于容器的CI/CD工具如雨后春笋般出现。

下一代云计算标准

Google通过将云应用进行抽象简化出的Kubernetes中的各种概念对象,如Pod、Deployment、Job、StatefulSet等,形成了Cloud Native应用的通用的可移植的模型,Kubernetes作为云应用的部署标准,直接面向业务应用,将大大提高云应用的可移植性,解决云厂商锁定的问题,让云应用可以在跨云之间无缝迁移,甚至用来管理混合云,成为企业IT云平台的新标准。

现状及影响

Kubernetes既然是下一代云计算的标准,那么它当前的现状如何,距离全面落地还有存在什么问题?

当前存在的问题

如果Kubernetes被企业大量采用,将会是对企业IT价值的重塑,IT将是影响业务速度和健壮性的中流砥柱,但是对于Kubernetes真正落地还存在诸多问题:

  • 部署和运维起来复杂,需要有经过专业的培训才能掌握;

  • 企业的组织架构需要面向DevOps转型,很多问题不是技术上的,而是管理和心态上的;

  • 对于服务级别尤其是微服务的治理不足,暂没有一套切实可行可落地的完整微服务治理方案;

  • 对于上层应用的支持不够完善,需要编写配置大量的YAML文件,难于管理;

  • 当前很多传统应用可能不适合迁移到Kuberentes,或者是成本太高,因此可以落地的项目不多影响推广;

日益强大的社区

Kubernetes已成为GitHub上参与和讨论人数最多的开源项目,在其官方Slack上有超过两万多名注册用户(其中包括中文用户频道cn-users),而整个Kubernetes中文用户群可达数千名之众。

目前关于Kubernetes和云原生图书也已经琳琳总总,让人眼花缭乱。

另外,除了图书和官方Slack外,在中国还有很多厂商、社区、爱好者组织的meetup、微信群推广Kubernetes,同时吸引了大量的用户关注和使用Kubernetes。

创业公司与厂商支持

另外在国外还有一大批基于Kubernetes的创业公司,如Kubernetes创始人之一Joe Beda创立了Heptio(于今年9月获获得2500万美元B轮融资),还有Platform9、Kismatic、Diamanti、Bitnami、CoreOS、Hypernetes、Weave、NavOps等,他们中有的提供Kubernetes的技术咨询和培训,有的专研某项具体技术,还有一系列基于Kubernetes的自动化工具、监控厂商如雨后春笋般出现。

国内前几年诞生了多家容器创业公司,例如DaoCloud、精灵云、时速云、数人云、灵雀云、有容云、好雨云、希云、才云、博云等,这些厂商有的可能一开始不是基于Kubernetes作为容器编排调度引擎,但是现在已经全部支持,其中灵雀云于11月8日获得腾讯云领投的B轮融资。这些容器厂商全部涉及私有云业务,主要对接金融、政府和电信行业,帮助传统企业进行IT转型,虽然很多厂商都生成支持Kubernetes,但是在Kubernetes的易用性上还需要很多改进,单纯基于容器部署应用已经无法满足企业的需求,帮助企业上云、将传统应用改造以适应云的弹性与高效,构建PaaS平台,通过基于容器的基础调度平台运行大数据及AI应用,成为创业公司的众矢之的,对于特定行业的整体的解决方案将是国内的容器厂商的主要商业化方式。

目前大部分容器云提供的产品大同小异,从云平台管理、容器应用的生命周期管理、DevOps、微服务架构等,这些大多是对原有应用的部署和资源申请流程的优化,没有形成杀手级的平台级服务,这些都是原来容器时代的产物。而容器云进化到高级阶段Cloud Native(云原生)后,容器技术将成为该平台的基础,虽然大家都生成具有全面的功能,但是厂商在推行容器技术时需要结合企业的具体应用场景下进行优化。

2018年展望

在今年12月的KubeCon&CloudNativeCon Austin会议上,已经为2018年的云原生生态圈的发展确定几大关键词:

  • 服务网格(Service Mesh),在Kubernetes上践行微服务架构进行服务治理所必须的组件;

  • 无服务器架构(Serverless),以FaaS为代表的无服务器架构将会流行开来;

  • 加强数据服务承载能力,例如在Kubernetes上运行大数据应用;

  • 简化应用部署与运维包括云应用的监控与日志收集分析等;

这些功能是Kubernetes生态已有但是亟待加强的功能,它们能够解决我们在上文中提到的当前生态中存在的问题。

2018年的IaaS的运营商将主要提供基础架构服务,如虚拟机、存储和数据库等传统的基础架构和服务,仍然会使用现有的工具如Chef、Terraform、Ansible等来管理;Kubernetes则可能直接运行在裸机上运行,结合CI/CD成为DevOps的得力工具,并成为高级开发人员的应用部署首选;Kubernetes也将成为PaaS层的重要组成部分,为开发者提供应用程序部署的简单方法,但是开发者可能不会直接与Kubernetes或者PaaS交互,实际的应用部署流程很可能落在自动化CI工具如Jenkins上。

2018年,Kubernetes将更加稳定好用,云原生将会出现更多的落地与最佳实践,这都值得我们期待!

Kubernetes的架构做的足够开放,通过系列的接口,如CRI(Container Runtime Interface)作为Kubelet与容器之间的通信接口、CNI(Container Networking Interface)来管理网络、而持久化存储通过各种Volume Plugin来实现,同时Kubernetes的API本身也可以通过CRD(Custom Resource Define)来扩展,还可以自己编写和来基于Kubernetes实现更高级和复杂的功能。

在Kubernetes出现之前,就已经有人提出了云原生的概念,如2010年Paul Fremantle就在他的博客中提出了云原生的核心理念,但是还没有切实的技术解决方案。而那时候PaaS才刚刚出现,PaaS平台提供商Heroku提出了的理念,为构建SaaS应用提供了方法论,该理念在云原生时代依然适用。

现如今云已经可以为我们提供稳定的可以唾手可得的基础设施,但是业务上云成了一个难题,Kubernetes的出现与其说是从最初的容器编排解决方案,倒不如说是为了解决应用上云(即云原生应用)这个难题。中的托管的一系列项目即致力于云原生应用整个生命周期的管理,从部署平台、日志收集、Service Mesh(服务网格)、服务发现、分布式追踪、监控以及安全等各个领域通过开源的软件为我们提供一揽子解决方案。

2017年6月19日-20日,北京,(LinuxCon+ContainerCon+CloudOpen China)。CNCF(Cloud Native Computing Foundation)作为云原生应用的联合推广团体,也是由Google一手培植起来的强大“市场媒体”(Kubernetes是第一个入选该基金会的项目),第一次进入中国,华为、Google、Rancher、红帽等公司分别做了关于Kubernetes及Cloud Native的演讲。

2017年7月25日,北京、上海,,Kubernetes二周年北京-上海 Meetup双城庆生。

2017年9月12日,北京,,前Pivotal技术专家,现CapitalOne高级专家Kevin Hoffman做了的演讲。

2017年10月15日,杭州,。由才云科技(Caicloud)、美国 The Linux Foundation 基金会旗下 Cloud Native Computing Foundation (CNCF)、「K8sMeetup 中国社区」联合主办的聚焦Kubernetes中国行业应用与技术落地的盛会。

2017年12月13日-15日,杭州,。这次会议由谐云科技与网易云共同主办,主要探讨云原生技术与应用,同时还进行了云原生集训。

隔离的环境、良好的可移植性、模块化的组件、易于扩展和轻量级的特性,使得容器成为云原生的基石。但是容器不光是docker一种,还有、等支持OCI标准的容器,以及OpenStack基金会推出的兼容容器标准的号称是轻量级虚拟机的,Kubernetes并不绑定到某一容器引擎,而是支持所有满足OCI运行时标准的容器。

以上这些问题是企业真正落地Kubernetes时将会遇到的比较棘手的问题,针对这些问题,Kubernetes社区早就心领神会有多个[SIG]( Interest Group)专门负责不同领域的问题,而初创公司和云厂商们也在虎视眈眈觊觎这份大蛋糕。

英文版的讲解Kubernetes的书籍有:The Kubernetes Book、Kubernetes in Action、Kubernetes Microservices with Docker,关于云原生架构的Cloud Native Infrastructure: Patterns for Scalable Infrastructure and Applications in a Dynamic Environment等已发行和2018年即将发行的有十几本之多,同时还有关于云原生开发的书籍也鳞次栉比,如(这本书已经被翻译成中文,由电子工业出版社引进出版)、(已由电子工业出版社引进,预计2018年推出中文版),Cloud Native Java等。

关于Kuberentes和云原生的中文版的书籍有:《Kubernetes权威指南:从Docker到Kubernetes实践全接触》,《Java云原生》(预计2018年出版),还有一系列开源的电子书和教程,比如我写的,同时Kubernetes官方官网文档也即将推出完整的汉化版本,该项目目前还在进行中,见。

国外的Google的GKE、微软的Azure ACS、AWS的和2018年即将推出的EKS、Rancher联合Ubuntu推出的RKE,国内的华为云、腾讯云、阿里云等都已推出了公有云上的Kuberentes服务,Kubernetes已经成为公有云的容器部署的标配,私有云领域也有众多厂商在做基于Kubernetes的PaaS平台。随着企业落地Kubernetes的日益增长,相关的人才缺口也将日益显现。CNCF又就此推出了CKA(Certified Kubernetes Administrator)和CKD(Certified Kubernetes Developer),假若在Kubernetes的生态构建与市场发展顺利的情况下,该证书将会展现其含金量。

2017年可以说是Cloud Native蓬勃发展和大发异彩之年,Kuberentes在这一年中连续发布了4个版本,从1.6到1.9,、、、分别发布自己的1.0版本。

Kuberentes
云原生计算基金会(CNCF)
https://github.com/GIFEE/GIFEE
TheNewStack
Kubernetes at GitHub
Operator
Service Catalog
12因素应用
CNCF
L3大会
k8smeetup
T11大会
High Level Cloud Native Concepts
KEUC 2017- Kubernetes 中国用户大会
云原生技术大会——CNTC
cri-o
rkt
Kata Containers
https://github.com/kubernetes/kubernetes/wiki/Special-Interest-Groups-(SIGs))(Special
Cloud Native Go
Cloud Native Python
kubernetes-handbook
kubernetes-docs-cn
Fargate
Containerd
Fluentd
CoreDNS
Jeager