[TOC]
导读
十年云计算浪潮下,DevOps、容器、微服务等技术飞速发展,云原生成为潮流。
云原生2.0是企业化从“ON Cloud”走向“IN Cloud”,成为“新云原生企业”,新生能力与既有能力立而不破、有机协同,实现资源高效、应用敏捷、业务智能、安全可信。
云原生基础介绍
云原生技术发展历程
了解云原生的发展历程,学习云原生的基本概念以及技术体系。

image-20210725115217390
云计算发展历程

image-20210725153229573
凭借其先进的理念以及活跃的社区生态,kubernetes 是近 三十年来增长最快的开源项目之一。带领了云原生的发展。

image-20210725115339664
CNCF 在国内有60➕企业成员参与

image-20210726145805590

image-20210725115829456
云原生核心概念
声明式API 面向开发者提供全新分布式原语

image-20210725120404011
服务网格,剥离业务代码和分布式框架

image-20210725120624642
云原生技术体系
CNCF(云原生基金会) 已成为云计算领域新的 “标准” 制定者。

image-20210725142931929
开源社区是云原生技术的推动者(加快技术的普及),同时是相关技术标准的制定者(厂商共同联合开发)。

image-20210725141912134
云原生技术版图

image-20210725143134999
CNCF 的项目成熟度模型
Graduation (毕业):
Incubating (孵化):
Sandbox(模型) : 宽松的许可比如apache 2.0,让更改多厂商参与
云原生平台技术架构发展方向:以 “应用” 为中心的云 “OS”

image-20210725143959696
判断题
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
true 正确
false
单选题
云原生技术的官方推广组织是哪个?
openstack社区
CNCF 正确
Docker公司
多选题
以下哪些是云原生的代表技术?
容器
微服务
服务网格
声明式API
正确
以下关于云原生理念的说法正确的是?
解耦软件开发,提高灵活性和可维护性
多云支持,避免厂商锁定
避免侵入式定制
提高工作效率和资源利用率
正确
容器技术基础介绍 加深学习
介绍云原生技术体系中的基石容器技术。
容器技术基础,详细阐述了整个容器的结构和技术构成,清晰的分解了容器的架构和技术交互原理,方便理解核心基础的相关知识能力,为集群构建的理解奠定基础
第1章 容器技术发展简介
引入容器技术的背景

image-20210725144823022
基础概况:

image-20210725144923953
Cgroup

image-20210725145003025
Namespace 概念

image-20210725145035621
Linux Namespace是一种资源限制的方案。
true
false 正确
单线题
以下哪个命令不是docker命令?
docker run
docker build
docker kill 正确
多选题
Cgroups包含以下哪些子系统?
cpu 子系统
memory 子系统
devices 子系统
swap子系统 x
正确
Linux Namespace包含以下哪些类型?
pid namespace
uts namespace
user namespace
mount namespace
第2章 Docker容器和容器镜像技术介绍

image-20210725145216050
Docker VS VM

image-20210725145335687
使用流程

image-20210725145425672
docker 镜像

image-20210725145622236

image-20210725145629243
优势与分层结构

image-20210725145713062
第3章 镜像仓库介绍

image-20210725145824583
第4章 如何使用Dockerfile进行构建
什么是dockerfile?

image-20210725150022221
使用dockerfile构建

image-20210725150136973
常用参数:

image-20210725150205159
新的镜像构建工具产生背景

image-20210725150256825
总结 :
Kubernetes 系统快速入门
介绍云原生技术体系中Kubernetes的相关概念和技术架构。
kubernetes的系统入门,简介明了的讲解kubernetes整体组件和构成,加深对kubernetes的结构认识以及各个模块如何技术交互完成应用的部署和管理,非常使用的基础课程讲解
第1章 kubernetes介绍
kubernetes 架构 生态主要层次

image-20210725153617670
kubernetes 模型对象 、功能组件 与 特性

image-20210725154114365
第2章 Kubernetes基本概念
Pod 概念:

image-20210725153939275
Pod Containers
基础容器:
$ vim /var/lib/kubelet/kubeadm-flags.env
–pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 K8s v1.23.1

image-20210725154148261
容器基础组成
Pod 与 Work 负载关系
label-selector : 在 brog 中学习到的经验
ownReference : 1.15 或者 1.16 之后,希望Pod有唯一的控制者 (指向的关系)
HA :
ReplicaSet : 保证Pod副本的数量,用于无状态服务,现在主要使用Deployment

image-20210725154831348
Deployment
第3章 kubernetes总体架构
系统组件:

image-20210725155133990
总体架构:
基于List-Watch机制的控制器架构

image-20210725155906243
kubernetes Controllers : 保持副本数量

image-20210725155817798
Scheduler : 为Pod找到一个合适的Node , 后续涉及 节点 亲和 、Pod 亲和

image-20210725160312283
Default Scheduler:

image-20210725160459633
判断题
Kubernetes属于CNCF基金会。
true 正确
false
单选题
Kubernetes中,能够创建、调度、和管理的最小部署单元是什么?
Pod 正确
container
ReplicaSet
Deployment
多选题
Pod 中的容器包含哪几种?
基础容器
初始化容器
业务容器
回收容器
正确
Kubernetes架构共分为哪几层?
生态层
接口层
治理层
应用层
内核层
正确
Kubernetes 集群管理
清晰讲解了Kubernetes集群的整体架构和各个组件运行机理,方便快速理解设计思路,为后续kubernetes管理运维奠定基础,非常受用的课程讲解。
1.1 kubernetes集群生命周期管理介绍
常见的部署形态:

image-20210725221126321
常用部署方式:

image-20210725221316057
kubernetes 生产集群

image-20210725221531427
CCE 集群

image-20210725221651848
1.2 kubernetes节点与节点池生命周期管理介绍
Node 定义

image-20210725222023620
下面哪一项不属于Kubernetes生产集群的关键诉求?
高可用 Availability
弹性伸缩 Scale
V 无服务器化 Serverless
安全和权限管理 Security and access management
Kubernetes工作负载管理
1.1 deployment概念及使用场景
工作负载介绍

image-20210725223400063
Deployment 概述

image-20210725223721810
语法:

image-20210725223942484
常用操作
kubectl create deployment -n test –image=nginx:latest –replicas 1 nginx-demo
-l app=nginx
deployment.apps/nginx-demo created
kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-demo-9454dc46c-9g8mb 1/1 Running 0 102s
nginx-demo-9454dc46c-mc4bh 1/1 Running 0 102s
nginx-demo-9454dc46c-w4cch 1/1 Running 0 102s
kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-demo 3/3 3 3 2m27s
使用总结:

image-20210725224555868
1.2 daemonset概念及使用场景
概述

image-20210726093052846
json 获取

image-20210726093309276

image-20210726093335727
1.3 job/cronjob概念及使用场景
Job / CronJob 概述

image-20210725224746030
语法

image-20210725224940307

image-20210725225338252
总结记录

image-20210725225419454

image-20210726093736894
单选题
下面哪条命令可以对Deployment进行回滚?
kubectl rollout history deploy/nginx
kubectl rollout undo deploy/nginx 正确
kubectl rollout status deploy/nginx
当CronJob在创建任务执行时,发生重叠时的处理策略可以通过以下哪个字段设置?
Schedule
ConcurrencyPolicy 正确
Suspend
多选题
以下哪些命令可以对Deployment进行更新?
kubectl edit deploy/nginx v
kubectl apply -f nginx.yaml v
kubectl set image deploy/nginx nginx=nginx:1.9.1 v
kubectl create -f nginx.yaml
正确
下列哪些应用适合用DaemonSet部署?
fluentd v
node problem detector v
gpu device plugin v
nginx
正确
Kubernetes持久化数据卷管理
1.1PersistentVolume的概念及使用场景
无状态与有状态应用对比说明

1.2 PersistentVolumeClaim的概念及使用场景
PV/PVC/SC 基础介绍

image-20210726095353400
1.3 Statefulset的概念和使用
statefulset 概念

image-20210726095034804

image-20210726100433403
Kubernetes 网络与服务管理
详细介绍Kubernetes service和Kubernetes ingress的概念及使用场景。

第1章 Kubernetes service 概念及使用场景介绍
基础概念:
1 | kubectl get ep -n weiyigeek |
Service 定义

image-20210726102948709
ClusterIP 集群内部微服务之间访问。

image-20210726113346954
Service类型1 :Services Without Selectors (服务转发)

image-20210726112358866
主要用于有状态服务的场景。

image-20210726112433848
$num=0;Get-ChildItem -Path . -Recurse -Name 111.txt | %{ echo $_ ; $num += (GC $_ | Measure-Object).count };echo $num
ExternalName Service

image-20210726113837474
Kube-proxy 实现 Services 原理

image-20210726114034203
第2章 Kubernetes ingress概念及使用场景介绍
七层流量转发(http)
ingress 模型,依赖Service

image-20210726114138602

ingress 实现

image-20210726114418282
Kubernetes应用配置管理
Configmap是应用部署配置必备的资源,数据库配置、环境变量使用很频繁,Secret密码或者类似的安全认证或证书等基本都通过它来使用也是很常用的基本能力
配置概述:

image-20210726124204449

image-20210726142457030
1.1 Configmap应用配置概念及使用场景

image-20210726141253895
ConfigMap 创建

image-20210726141511246

image-20210726141540326
总结说明: 数据块不能超过 1MB, 特别注意挂载配置文件和配置环境变量时的区别。

image-20210726124627790
1.2 Secret概念及使用场景
概述:

image-20210726141834099

image-20210726141915683

image-20210726142021060

image-20210726142121233
使用小结

image-20210726125010351
判断题
Pod只能使用相同命名空间(namespace)中的ConfigMap。
true 正确
false
Secret专用于保存敏感数据,Kubernetes默认会对其进行加密来提供安全保障。
true
false 正确
单选题
下面说法正确的是?
ConfigMap大小不受限制。
ConfigMap必须先于Pod创建,否则Pod无法启动。 正确
ConfigMap是一种不安全的配置资源,不推荐使用。
多选题
下面说法正确的是?
ConfigMap常用于保存非敏感应用配置。
Secret常用于保存敏感的应用配置。
Secret的安全性需要管理员配置RBAC规则等手段进行保证。
ConfigMap和Secret可以同时使用。
Istio服务网格快速入门
详细介绍服务网格的概念和Istio服务网格架构及使用场景。
官网链接: https://istio.io/

image-20210726145830112
1.1 服务网格的概念介绍
基本概念:
服务网格是承载微服务架构理念的云原生技术形态。

image-20210726150053431
发展历程:

image-20210726150259727
1.2 Istio服务网格架构及使用场景介绍
基本概念:
What:Istio是什么;
Why:为什么要用Istio;
How:怎么使用Istio。

image-20210726150312499
例子: 实现 80% 流量 去往 微服务1 , 20% 流量去往微服务2。
四个特性:Connect 、Secure、Observe、Control
Proxy: 数据面代理
Ingress Gateway 资源: 网格入口,所有访问流量都要经过他。
Virtual Services: 所有的功能都是通过配置策略来实现的,例如实现服务之间的访问互通,流量注入,重试,超时功能等
Destination Rule: 服务集合,流量治理策略、负载均衡模式, LPS的通信,熔断
Tips : 所有的配置文件都是通过yaml格式实现的。
控制面组件与功能: 然后通过Galley组件来解析配置并通过Pilot组件下发到proxy并执行策略,最后 Citadel 安全方面的服务治理(服务间认证、与授权),由上述三个组件共同组建成为了lstiod
作为一个Pod运行在集群之中。

image-20210726152310217
基础示例:

image-20210726175018553

image-20210726175202745
技术架构\:

image-20210726185348964
功能特性:

image-20210726185544130
应用场景:

image-20210726191420464
判断题
对于云原生应用,采用 Kubernetes 构建微服务部署和集群管理能力,采用 Istio 构建服务治理能力,将逐渐成为应用微服务转型的标准配置。
true 正确
false
单选题
以下哪个组件不是Istio的核心组件?
Pilot
kubelet 正确
Galley
Citadel
多选题
Istio的基本资源包括哪些?
Gateway
Virtual Service
Deployment
Destination Rule
正确
Istio的应用场景有哪些?
灰度发布
流量管理
访问可视化
开发应用
正确
Istio灰度发布管理
复习:
前言: 详细介绍灰度发布的定义,分类,流程及ASM灰度发布功能与使用场景。
1.1 业务灰度发布概述
WHAT : 什么是灰度发布? (概念和分类以及流程)
金丝雀发布 : 平滑升级、安全迭代。
蓝绿发布 : 零停机、快速升级、一键回退。

image-20210727092830384
1.2 灰度发布功能与使用场景介绍
WHY : 为什么要用灰度发布? (功能优势以及使用场景)
HOW : 如何使用灰度发布?(实践)

image-20210727093223066

image-20210727093233635
基于权重的灰度发布与上面基于内容发布的区别在于VirtualService

image-20210727093912750
蓝绿发布 (与灰度发布的类似)

image-20210727094050838

image-20210727094229186
判断题
灰度发布是软件开发的一种重要手段。
true
false 正确
单选题
关于蓝绿发布,以下哪个描述不正确?
蓝绿发布提供了一种零宕机的部署方式。
蓝绿发布支持在新旧两个版本间快速切换。
蓝绿发布指的是引一部分实际流量对一个新版本进行测试。 正确
多选题
灰度发布具体包括以下哪些类型?
蓝绿发布
基于权重的灰度发布
基于内容的灰度发布
基于请求体的灰度发布
正确
Istio流量治理与监控管理
详细介绍Istio典型、常用的流量治理策略,Istio的可观测性:访问日志、调用链、监控指标等。
1.1 Istio非侵入式服务治理概念介绍
(1)微服务

image-20210727095332199

image-20210727095448677
微服务框架 与 服务网格间的差别。
pageid: 480
- Sidecar模式:下一代微服务架构的关键
https://www.jianshu.com/p/330b00dc40d7
- Envoy 是专为大型现代 SOA(面向服务架构)架构设计的 L7 代理和通信总线,经常被用在 Service Mesh 中作为 Sidecar。
https://www.jianshu.com/p/d9db52330c0f
https://www.sohu.com/a/244966023_268033
1.2 流量治理
流量治理策略 (限流 、发布)
- 1.2.1 服务注册与发现

image-20210727100204030

image-20210727100635568
使用案例:

image-20210727100733725

image-20210727100745604
- 1.2.3 路由匹配(流量切分、灰度发布)

image-20210727101309762

image-20210727101438755
- 1.2.4 熔断降级:

image-20210727101553487

image-20210727101721013
- 1.2.5 故障注入 以及 使用说明

image-20210727101839486

image-20210727102003563
1.2.6 限流
本地限流 好处是 响应更快、因为它不需要发送限流请求到中心限流服务中

image-20210727102049602

image-20210727102412997

image-20210727102429034
- 1.2.7 失败重试(failr retry)

image-20210727102629033

image-20210727102616820
1.3 基本监控功能与使用场景介绍

image-20210727102949265
Istio 访问日志

image-20210727103209827
判断题
Istio故障注入只支持访问时延注入。
true
false 正确
单选题
Istio负载均衡通过哪个API设置?
Virtual Service
Destination Rule 正确
ServiceEntry
多选题
下面哪些属于服务网格的优势?
业务代码无侵入
开发语言无关
动态配置策略
支持业务优雅升级
正确
Istio支持的Trace后端包括哪些?
Zipkin
Jaeger
LightStep
Datadog
正确
- Hugo 是 Go 编写的静态网站生成器,速度快,易用,可配置。Hugo 有一个内容和模板目录,把他们渲染到完全的 HTML 网站。
https://www.gohugo.org/
https://gohugo.io/getting-started/
ugo 依赖于 Markdown 文件,元数据字体 。用户可以从任意的目录中运行 Hugo,支持共享主机和其他系统。
Hugo 只需要几分之一秒就可以渲染一个经典的中型网站,最好网站的每个部分渲染只需 1 毫秒。
Hugo 非常适合博客,文档等等网站的生成。
Hugo 当前提供 Windows,Linux,FreeBSD,NetBSD 和 OS X (Darwin) 的 x64, i386 和 ARM 架构的二进制预构建包。
Hugo 的源代码可以通过 Go 编译器工具链编译到任意地方运行,例如: DragonFly BSD, OpenBSD, Plan 9 和 Solaris。