云原生虚拟化+Docker+k8s+Istio

目录

一:云原生

二:容器技术基础介绍

开发运维的问题

容器的概念

概念-Cgroups

概念-Namespace

Docker介绍

Docker VS VM

Docker使用流程

Docker镜像

镜像仓库

使用Dockerfile进行镜像构建

三:Kubernetes系统快速入门

1、 K8S介绍

​编辑

2、 K8S基本概念

3、 K8S总体架构

四:K8S集群管理

生产集群及其特点

K8S节点生命周期介绍

K8S工作负载管理

工作负载(Workload)介绍

Deployment概述

Job/CronJob概述

DaemonSet概述

总结

五:持久化数据卷管理

小结

六:网络与服务管理

Service基本概念和使用场景

​编辑

Ingress基本概念和使用场景

七:K8S应用配置管理

应用配置管理概述

ConfigMap概述

Secret概述

Secret使用小结

八:Istio服务网格快速入门

服务网格的基本概念和发展历程

Istio的基本概念、技术架构和功能特性

1 基本概念

2 Istio技术架构

3 Istio功能特性

Istio的应用场景

10:Istio灰度发布管理

灰度发布的定义和分类

灰度发布的流程

十:Istio流量治理与监控管理

1 Istio服务治理介绍

2 Istio常用的流量治理策略

3 Istio监控介绍


一:云原生

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术:容器、服务网格、微服务、不可变基础设施、声明式API

云原生核心概念

  • 解耦软件开发,提高灵活性和可维护性
  • 多云支持,避免厂商锁定
  • 避免倾入式定制
  • 提高工作效率和资源利用率

二:容器技术基础介绍

开发运维的问题
  • 应用与运行环境分开交付,无法保证环境的一致性
  • 资源、环境的隔离问题
  • 之前有大量探索,例如虚拟机层面的隔离,应用层面的隔离,探索追求更好的隔离性、高高的资源利用率及启动时间
容器的概念

在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机相同的是,可以为这些容器设置计算资源限制,挂载存储,连接网络,而与虚拟机不同的是,这些应用运行时共用一个Kernel
这些技术的基础是Linux的LXC(linux Container),通过将Cgroups的资源管理能力Linux Namespace的隔离能力组合在一起。

概念-Cgroups

其名称源自控制组群(Control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(包含cpu、内存-memory、devices子系统、磁盘输入与输出等)。

概念-Namespace

提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的Namespcae中,实现资源隔离的目的。不同的Namespace程序,可以享有一份独立的系统资源。

隔离内容包括:

  • UTS-主机名与域名
  • IPC-信号量、消息队列和共享内存
  • PID-进程编号
  • Network-网络设备,网络栈、端口
  • Mount-挂载点(文件系统)
  • User-用户和用户组
Docker介绍

一个用于开发,交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而快速交付软件。大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker VS VM
  • 1 Docker启动快速属于秒级别,虚拟机通常几分钟去启动
  • 2 Docker需要的资源更少,docker在操作系统级别进行虚拟化,docker容器和内核交互,几乎没有性能损耗,性能优于通过Hypervisor层和内核层的虚拟化
  • 3 docker更轻量,docker的架构可以公用一个内核与共享应用程序库,所占内存极小
  • 4 高可用和可恢复性:docker对业务的高可用支持是通过快速重新部署实现的
  • 5 快速创建、删除:虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间
  • 6 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker在Dockerfile中记录了容器构建过程,可以在集群中实现快速分发和快速部署
Docker使用流程

  • 1 首先开发者在开发环境机器上开发应用并制作镜像。Docker执行命令,构建镜像并存储在机器上。
  • 2 开发者发送上传镜像命令,docker收到命令后,将本地镜像上传到镜像仓库
  • 3 开发者向生产环境机器发送运行镜像命令,生产环境机器收到命令后,docker会从镜像仓库拉取镜像到仓库上,然后基于镜像运行容器。
Docker镜像

一种新型的应用打包、分发和运行机制。容器镜像将应用环境,包括代码、依赖库、工具、资源文件和元信息等,打包成一种操作系统发行版无关的不可变更软件包。

镜像仓库

容器镜像服务(Software Repository for Container,简称SWR)是一种支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理服务,帮助快速不是容器化服务。

  • 核心功能:镜像全生命周期管理、私有镜像仓库、镜像源加速、镜像仓库触发器、镜像安全扫描
使用Dockerfile进行镜像构建

Build image-->push image-->pull image
结合阿里云平台的提交过程:Docker初体验-“AI Earth”人工智能创新挑战赛——AI助力精准气象和海洋预测 - 简书

# Dockerfile文件
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /

## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /

## Install Requirements
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

## 镜像启动后统一执行 sh run.sh
## 本题用如下代码,如果自己测试,用此代码,CMD ["sh", "code/run.sh"]
CMD ["sh", "run.sh"]

三:Kubernetes系统快速入门

“云”的资源在使用者看来是无限扩展的,并且可以随时获取、按需使用、随时扩展,按使用付费。

1、 K8S介绍

可分为内核层、应用层、治理层、接口层,其中生态层不属于K8S范围

K8S架构分层

各层的详细定义

接口层(工具、SDK库、UI等)

  • K8S官方的项目会提供库、工具、UI等外围工具
  • 外部可提供自有的实现

治理层:策略执行和自动化编排

  • 对应用运行的可选层,没有这层功能不影响应用的执行
  • 自动化API:水平弹性伸缩、租户管理、集群管理、动态LB等
  • 策略API:限速、资源配额、pod可靠性策略、network policy等

应用层:部署(无状态/有状态应用、批处理、集群应用等)和路由(服务发现、DNS解析等)

  • K8S发行版必备功能和API,K8S会提供默认的实现,如scheduler
    controller和scheduler可以被替换为各自的实现,但必须通过一致性测试
    业务管理类Controller

内核层:K8S最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境

  • 由主流K8S codebase实现(主项目),属于K8S的内核,最小特性表。等同于Linux Kernel
  • 提供必不可少的Controller, Scheduler的默认实现
  • 集群管理类Controller
2、 K8S基本概念

关键概念-pod

  • pod是能够创建、调度、管理的最小部署单元,是一组容器的集合,而不是单独的应用容器
  • 同一个pod里面的容器共享同一个网络命名空间,IP地址及端口空间
  • 从生命周期来说,pod是短暂的而不是长久的的应用。pods被调度到节点,保持在这个节点上直到被销毁
  • 容器包括:基础容器(infrastructure container)、初始化容器(InitContainers)、业务容器(containers)

pod与工作负载的关系

  • pod通过工作负载(work load)实现应用的运维,如伸缩、升级等
3、 K8S总体架构

基于list-watch机制的控制器架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值