[TOC]

导读

十年云计算浪潮下,DevOps、容器、微服务等技术飞速发展,云原生成为潮流。
云原生2.0是企业化从“ON Cloud”走向“IN Cloud”,成为“新云原生企业”,新生能力与既有能力立而不破、有机协同,实现资源高效、应用敏捷、业务智能、安全可信。

云原生基础介绍

云原生技术发展历程

了解云原生的发展历程,学习云原生的基本概念以及技术体系。

image-20210725115217390

image-20210725115217390

云计算发展历程

image-20210725153229573

image-20210725153229573

image-20210725115154571

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

image-20210725115339664

image-20210725115339664

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

image-20210725115657592

image-20210725115741523

image-20210726145805590

image-20210726145805590

image-20210725115829456

image-20210725115829456

云原生核心概念

image-20210725120259500

声明式API 面向开发者提供全新分布式原语

image-20210725120404011

image-20210725120404011

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

image-20210725120624642

image-20210725120624642

云原生技术体系

CNCF(云原生基金会) 已成为云计算领域新的 “标准” 制定者。

image-20210725142931929

image-20210725142931929

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

image-20210725141912134

image-20210725141912134

云原生技术版图

image-20210725143134999

image-20210725143134999

CNCF 的项目成熟度模型

  • image-20210725143338536

  • Graduation (毕业):

  • Incubating (孵化):

  • Sandbox(模型) : 宽松的许可比如apache 2.0,让更改多厂商参与

image-20210725143735070

云原生平台技术架构发展方向:以 “应用” 为中心的云 “OS”

image-20210725143959696

image-20210725143959696

判断题

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。

​ true 正确

​ false

单选题

云原生技术的官方推广组织是哪个?

​ openstack社区

​ CNCF 正确

​ Docker公司

多选题

以下哪些是云原生的代表技术?

​ 容器

​ 微服务

​ 服务网格

​ 声明式API

​ 正确

以下关于云原生理念的说法正确的是?

​ 解耦软件开发,提高灵活性和可维护性

​ 多云支持,避免厂商锁定

​ 避免侵入式定制

​ 提高工作效率和资源利用率

​ 正确


容器技术基础介绍 加深学习

介绍云原生技术体系中的基石容器技术。

容器技术基础,详细阐述了整个容器的结构和技术构成,清晰的分解了容器的架构和技术交互原理,方便理解核心基础的相关知识能力,为集群构建的理解奠定基础

第1章 容器技术发展简介

引入容器技术的背景

image-20210725144823022

image-20210725144823022

基础概况:

image-20210725144923953

image-20210725144923953

Cgroup

image-20210725145003025

image-20210725145003025

Namespace 概念

image-20210725145035621

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

image-20210725145216050

Docker VS VM

image-20210725145335687

image-20210725145335687

使用流程

image-20210725145425672

image-20210725145425672

docker 镜像

image-20210725145622236

image-20210725145622236

image-20210725145629243

image-20210725145629243

优势与分层结构

image-20210725145713062

image-20210725145713062

第3章 镜像仓库介绍

image-20210725145824583

image-20210725145824583

第4章 如何使用Dockerfile进行构建

什么是dockerfile?

image-20210725150022221

image-20210725150022221

使用dockerfile构建

image-20210725150136973

image-20210725150136973

常用参数:

image-20210725150205159

image-20210725150205159

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

image-20210725150256825

image-20210725150256825

总结 :

image-20210725152233496

Kubernetes 系统快速入门

介绍云原生技术体系中Kubernetes的相关概念和技术架构。

kubernetes的系统入门,简介明了的讲解kubernetes整体组件和构成,加深对kubernetes的结构认识以及各个模块如何技术交互完成应用的部署和管理,非常使用的基础课程讲解

第1章 kubernetes介绍

kubernetes 架构 生态主要层次

image-20210725153617670

image-20210725153617670

image-20210725153806936

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

image-20210725154114365

image-20210725154114365

第2章 Kubernetes基本概念

Pod 概念:

image-20210725153939275

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

image-20210725154148261

容器基础组成

image-20210725154357329

image-20210725154418703

Pod 与 Work 负载关系

label-selector : 在 brog 中学习到的经验

ownReference : 1.15 或者 1.16 之后,希望Pod有唯一的控制者 (指向的关系)

HA :

image-20210725154534499

ReplicaSet : 保证Pod副本的数量,用于无状态服务,现在主要使用Deployment

image-20210725154831348

image-20210725154831348

Deployment

image-20210725155042855

第3章 kubernetes总体架构

系统组件:

image-20210725155133990

image-20210725155133990

总体架构:

image-20210725155249452

基于List-Watch机制的控制器架构

image-20210725155906243

image-20210725155906243

kubernetes Controllers : 保持副本数量

image-20210725155817798

image-20210725155817798

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

image-20210725160312283

image-20210725160312283

Default Scheduler:

image-20210725160459633

image-20210725160459633

判断题

Kubernetes属于CNCF基金会。

​ true 正确

​ false

单选题

Kubernetes中,能够创建、调度、和管理的最小部署单元是什么?

​ Pod 正确

​ container

​ ReplicaSet

​ Deployment

多选题

Pod 中的容器包含哪几种?

​ 基础容器

​ 初始化容器

​ 业务容器

​ 回收容器

​ 正确

Kubernetes架构共分为哪几层?

​ 生态层

​ 接口层

​ 治理层

​ 应用层

​ 内核层

​ 正确


Kubernetes 集群管理

清晰讲解了Kubernetes集群的整体架构和各个组件运行机理,方便快速理解设计思路,为后续kubernetes管理运维奠定基础,非常受用的课程讲解。

1.1 kubernetes集群生命周期管理介绍

常见的部署形态:

image-20210725221126321

image-20210725221126321

常用部署方式:

image-20210725221316057

image-20210725221316057

kubernetes 生产集群

image-20210725221531427

image-20210725221531427

CCE 集群

image-20210725221651848

image-20210725221651848

1.2 kubernetes节点与节点池生命周期管理介绍

Node 定义

image-20210725222023620

image-20210725222023620

下面哪一项不属于Kubernetes生产集群的关键诉求?

​ 高可用 Availability

​ 弹性伸缩 Scale

​ V 无服务器化 Serverless

​ 安全和权限管理 Security and access management

Kubernetes工作负载管理

1.1 deployment概念及使用场景

工作负载介绍

image-20210725223400063

image-20210725223400063

Deployment 概述

image-20210725223721810

image-20210725223721810

语法:

image-20210725223942484

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-20210725224330473

使用总结:

image-20210725224555868

image-20210725224555868

1.2 daemonset概念及使用场景

概述

image-20210726093052846

image-20210726093052846

image-20210726093218144

json 获取

image-20210726093309276

image-20210726093309276

image-20210726093335727

image-20210726093335727

1.3 job/cronjob概念及使用场景

Job / CronJob 概述

image-20210725224746030

image-20210725224746030

语法

image-20210725224940307

image-20210725224940307

image-20210725225053900

image-20210725225259489

image-20210725225338252

image-20210725225338252

总结记录

image-20210725225419454

image-20210725225419454

image-20210726093402688

image-20210726093736894

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

image-20210726095353400

image-20210726095711573

image-20210726095811499

image-20210726095547183

image-20210726100319077

1.3 Statefulset的概念和使用

statefulset 概念

image-20210726095034804

image-20210726095034804

image-20210726095135348

image-20210726095221475

image-20210726100433403

image-20210726100433403

image-20210726101243353

Kubernetes 网络与服务管理

详细介绍Kubernetes service和Kubernetes ingress的概念及使用场景。

第1章 Kubernetes service 概念及使用场景介绍

基础概念:

image-20210726102316263

1
2
3
kubectl get ep -n weiyigeek
NAME ENDPOINTS AGE
nginx-service 192.168.109.74:80,192.168.109.75:80 12d

Service 定义

image-20210726102948709

image-20210726102948709

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

image-20210726113346954

image-20210726113346954

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

image-20210726112358866

image-20210726112358866

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

image-20210726112433848

image-20210726112433848

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

image-20210726113156857

image-20210726113539619

image-20210726113659654

ExternalName Service

image-20210726113837474

image-20210726113837474

image-20210726113756536

Kube-proxy 实现 Services 原理

image-20210726114034203

image-20210726114034203

第2章 Kubernetes ingress概念及使用场景介绍

七层流量转发(http)

ingress 模型,依赖Service

image-20210726114138602

image-20210726114138602

ingress 定义



image-20210726114350831



ingress 实现

image-20210726114418282

image-20210726114418282

Kubernetes应用配置管理

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

前言:

image-20210726124129667

image-20210726124129667

配置概述:

image-20210726124204449

image-20210726124204449

image-20210726142457030

image-20210726142457030

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

image-20210726141253895

image-20210726141253895

image-20210726141342151

ConfigMap 创建

image-20210726141511246

image-20210726141511246

image-20210726141540326

image-20210726141540326

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

image-20210726124627790

image-20210726124627790

1.2 Secret概念及使用场景

概述:

image-20210726141834099

image-20210726141834099

image-20210726141915683

image-20210726141915683

image-20210726142021060

image-20210726142021060

image-20210726142121233

image-20210726142121233

使用小结

image-20210726125010351

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

image-20210726145830112

1.1 服务网格的概念介绍

基本概念:

服务网格是承载微服务架构理念的云原生技术形态。

image-20210726150053431

image-20210726150053431

发展历程:

image-20210726150259727

image-20210726150259727

1.2 Istio服务网格架构及使用场景介绍

基本概念:

What:Istio是什么;

Why:为什么要用Istio;

How:怎么使用Istio。

image-20210726150312499

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-20210726152310217

基础示例:

image-20210726175018553

image-20210726175018553

image-20210726175202745

image-20210726175202745

技术架构\:

image-20210726185348964

image-20210726185348964

功能特性:

image-20210726185544130

image-20210726185544130

应用场景:

image-20210726191420464

image-20210726191420464

判断题

对于云原生应用,采用 Kubernetes 构建微服务部署和集群管理能力,采用 Istio 构建服务治理能力,将逐渐成为应用微服务转型的标准配置。
true 正确
false

单选题

以下哪个组件不是Istio的核心组件?
Pilot
kubelet 正确
Galley
Citadel

多选题

Istio的基本资源包括哪些?
Gateway
Virtual Service
Deployment
Destination Rule
正确

Istio的应用场景有哪些?
灰度发布
流量管理
访问可视化
开发应用
正确

Istio灰度发布管理

复习:

image-20210727092420661

前言: 详细介绍灰度发布的定义,分类,流程及ASM灰度发布功能与使用场景。

1.1 业务灰度发布概述

WHAT : 什么是灰度发布? (概念和分类以及流程)

金丝雀发布 : 平滑升级、安全迭代。

蓝绿发布 : 零停机、快速升级、一键回退。

image-20210727092715986

image-20210727092830384

image-20210727092830384

流程:

image-20210727093013015

image-20210727093013015

1.2 灰度发布功能与使用场景介绍

WHY : 为什么要用灰度发布? (功能优势以及使用场景)

HOW : 如何使用灰度发布?(实践)

image-20210727093223066

image-20210727093223066

image-20210727093233635

image-20210727093233635

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

image-20210727093912750

image-20210727093912750

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

image-20210727094050838

image-20210727094050838

image-20210727094229186

image-20210727094229186

判断题

灰度发布是软件开发的一种重要手段。
true
false 正确

单选题

关于蓝绿发布,以下哪个描述不正确?
蓝绿发布提供了一种零宕机的部署方式。
蓝绿发布支持在新旧两个版本间快速切换。
蓝绿发布指的是引一部分实际流量对一个新版本进行测试。 正确

多选题

灰度发布具体包括以下哪些类型?
蓝绿发布
基于权重的灰度发布
基于内容的灰度发布
基于请求体的灰度发布
正确

Istio流量治理与监控管理

详细介绍Istio典型、常用的流量治理策略,Istio的可观测性:访问日志、调用链、监控指标等。

1.1 Istio非侵入式服务治理概念介绍

(1)微服务

image-20210727095332199

image-20210727095332199

image-20210727095448677

image-20210727095448677

微服务框架 与 服务网格间的差别。

pageid: 480

image-20210727095723572

1.2 流量治理

流量治理策略 (限流 、发布)

  • 1.2.1 服务注册与发现
image-20210727100204030

image-20210727100204030

  • 1.2.2 负载均衡与API 对象

    image-20210727100625418

image-20210727100635568

image-20210727100635568

使用案例:

image-20210727100733725

image-20210727100733725

image-20210727100745604

image-20210727100745604

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

image-20210727101309762

image-20210727101438755

image-20210727101438755

  • 1.2.4 熔断降级:
image-20210727101553487

image-20210727101553487

image-20210727101721013

image-20210727101721013

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

image-20210727101839486

image-20210727102003563

image-20210727102003563

  • 1.2.6 限流

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

image-20210727102049602

image-20210727102049602

image-20210727102412997

image-20210727102412997

image-20210727102429034

image-20210727102429034

  • 1.2.7 失败重试(failr retry)
image-20210727102629033

image-20210727102629033

image-20210727102616820

image-20210727102616820

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

image-20210727102949265

image-20210727102949265

Istio 访问日志

image-20210727103209827

image-20210727103209827

判断题
Istio故障注入只支持访问时延注入。
true
false 正确

单选题

Istio负载均衡通过哪个API设置?
Virtual Service
Destination Rule 正确
ServiceEntry

多选题

下面哪些属于服务网格的优势?
业务代码无侵入
开发语言无关
动态配置策略
支持业务优雅升级
正确

Istio支持的Trace后端包括哪些?
Zipkin
Jaeger
LightStep
Datadog
正确


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。

https://www.cnblogs.com/20175211lyz/