2020版Kubernetes快速上手指南

2021-01-28 11:16

阅读:707

Kubernetes作为新一代云计算平台,自2014年开源以来得到快速发展(2016年)并逐步成熟(2018年),极大推动了云原生领域及技术(微服务、FaaS和Serverless)的发展,被誉为影响云计算未来10年的革新技术。随着Kubernetes及其生态的广泛成熟,我想2020年除了那些大厂外,在中小型IT公司Kubernetes也一定得到的普遍青睐和积极采用。可以说2020年是Kubernetes大踏步进入中小企业市场的最佳时机,因此作为开发人员,很有必要花点时间跟进学习下Kubernetes这门新技术。本文结合自己的实践分享下Kubernetes简单快速上手过程(简称快手指南,哈哈),希望对大家有所帮助。

注:从 Google 搜索引擎的趋势数据来看,Kubernetes和Spring Boot的关注度同趋势地从2016年后迅猛增长,而相应OpenStack和Hadoop在2016后遇冷下降明显,折射着云计算2.0时代的到来。

技术图片

 

 

目标

作为新人,Kubernetes上手普遍存在如下痛点:

技术门槛较高,有较多概念和依赖。例如:Docker技术栈、Kubernetes体系新名词、复杂的YAML配置让人头疼。部署困难。例如:多节点群集,多个部署工具和方式选择困难,Kubernetes部署过程中问题多。欠缺好的文章指导,目前能Google搜索的技术文章不是滞后就是凌乱,而官方文档虽然权威、详尽,但新人起步的针对性不足。让人心烦的网络和存储配置。作为云计算平台,除了计算容器化外,平台的网络和存储需要额外选择和配置。额外的应用适配。搭建好了的平台,只有跑上我们开发的应用才是终极胜利。但这又是另外一件不很轻松的事情。

基于以上常见痛点,本文结合实验室搭建的Kubernetes演示环境,通过“所见即所得”方式来讲解下具体的实践过程,希望能达到如下目标:

通过试用免费开放的实验环境,增强体验感和可操作性;Github提供同步学习的源代码,增强演示过程的可复制性,让所见即所得;精简Kubernetes概念,快速了解核心内容;同步最新版本,通过Step-by-Step方式跳过各种坑,轻松部署Kubernetes;通过运行演示的NodeJs和SpringBoot应用,达到学以致用的最终目标;面向产线增加关键知识点延伸,便于接下来进一步拓展学习;

预演

本教程涉及源代码可以通过如下方式下载:

国内Gitlab: https://gitlab.abcxlab.com/bootcamp/k8s-quick-start国外Github:https://github.com/abcxlab/k8s-quick-start

本教程支持在线演示环境体验,具体访问方式如下:

群集演示地址: https://k8s.abcxlab.com/演示登录Token: 关注ABC实验室微信公众号,输入"k8s" 即可获取

eyJhbGciOiJSUzI1NiIsImtpZCI6ImFsNzE2YkJFUXV0MnlzNXJHOHRuRFZoZ3FyNGxkb00tUkJGNFVTZ2lQWm8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJyZWFkLW9ubHktdG9rZW4tbnZrenQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicmVhZC1vbmx5Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjE5NDZjYTMtMTBiMy00YTQ5LWI1MDEtZjZiYjQyMDQ4NTJjIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOnJlYWQtb25seSJ9.rV-wXUqMZE2Ppv_po7rOm9JJdWbRCM0_gFo-IJaVWE5GtaJh0qFHSI6D7rjtYYIMKaWV4gzAzy-RcuYgj0Fok6xo1s6yTpNOHN-X4tuuX6MiXBkIcpT1hQ1tI53YLrR7dKJi7NmtDgyFrw75URd1RhFciKf2-KQlxuDrIG75z7Gw0P7FhHaPFXnCYkxtkXAW-UkcIF4y5qKKFMuWA-0EOxB6DKlSLC_zHzY_qiQIvMSzE5eYjWpWxkW-3s6VsjEMIV8lCTdCxEEN1bMtHpFOf9xwuolbWF23U2edJOOMkwOEUGCTS-kxHN8F9Qn7XRqbdXmB10FoeKw6d38Rj_bDaw

演示群集Dashboard截图

技术图片

 

 

建议先体验演示环境,获取直观感受!

概述

Kubernetes 希腊语为“舵手”,是一个轻便、可扩展的工业级容器编排平台,用于管理容器化应用和服务。Google基于内部Borg系统研发并于2014年正式开源,目前最新发布了V1.18版本。

架构

Kubernetes架构如下图所示

技术图片

 

 

Kubernetes群集一个主从的分布式架构,由Master节点(多个)组成的控制平面和Work节点(多个)组成的数据计算平面共同组成。主要组件如下:

API Server:负责所有组件之间通信,并负责存储状态和配置到Etcd库中;

Controller Manager:包含不同类型的群集控制器(如ReplicationSet/Deployment/Service等控制器),执行群集级别的功能,如复制组件、持续跟踪工作节点、处理节点识别等;

Scheduler:重点负责给应用的Pod调度分配相应节点;

Etcd:一个可靠的分布式数据存储,持久化保存群集状态和元数据;Kubelet:管理所在工作节点的所有容器,并持续跟踪和保持和API Server通讯,响应相关容器管理事件;

Kube-proxy:他负责组件之间的负载均衡和服务的网络连通;Docker引擎:底层运行环境,可以是docker、rtk或其他引擎;

核心概念

Pod:最小的调度分配单元,可包含一组容器和卷组成,同一个Pod的容器组共享同一个网络命名空间;

ReplicationController/ReplicateSet: 用于控制Pod副本数量,保证Pod始终运行;

DeamonSet: 保证在所有群集节点上运行一个Pod;

Service: 为一组功能相同的Pods提供单一不变的接入点,解耦Pods伸缩能力;

Deployment:类似ReplicationController/ReplicateSet, 增加滚动升降级策略和能力;

ConfigMap:配置选项,支持配置从Pod解耦分离;Secret:类似ConfigMap,用于敏感数据保存;

StatefulSet:类似ReplicateSet,但StatefulSet提供Pod状态保持,在重新调度后保留他们的标识和状态,适合数据库等有状态应用场景;

特点

Kubernetes平台有如下典型特征:

容器的自动装箱,即调度;水平扩容和伸缩,控制Pod副本数达到;

服务发现和负载均衡;

服务自愈和恢复能力;

应用自动发布和回滚;

服务流量路由;

可扩展跟踪;


评论


亲,登录后才可以留言!