云原生及容器基本概念
云原生
技术范畴
1 云应用定义与开发流程:应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库
2 应用的编排与管理流程:应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh
3 监控与可观测性:云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念
4 云原生的底层技术:容器运行时、云原生存储技术、云原生网络技术
5 云原生工具集:流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理
6 Serverless
理论基础
1 不可变基础设施
2 云应用编排理论
基础设施向云演进的过程
云时代的基础设施就像是可以替代的“牲口”,可以随时替换
云演进的意义
基础设施的一致性和可靠性
镜像本身就是自包含的,其包含了应用运行所需要的所有依赖,因此也可以漂移到云上的任何一个位置
关键技术点
1 如何构建自包含、可定制的应用镜像
2 能不能实现应用快速部署与隔离能力
3 应用基础设施创建和销毁的自动化管理
4 可复制的管控系统和支撑组件
定义
1 云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径
2 指导进行软件架构设计的思想
3 认为未来的软件,会从诞生起就生长在云上,并且遵循一种新的软件开发、发布和运维模式,从而使得软件能够最大化地发挥云的能力
容器
容器就是一个视图隔离、资源可限制、独立文件系统的进程集合
隔离及控制技术
1 namespace
2 cgroup-限制其资源使用率
3 文件系统-chroot
4 镜像- changeset 每个构建步骤都会对已有的文件系统进行操作,这样就会带来文件系统内容的变化,我们将这些变化称之为 changeset
5 当 initial 进程退出的时候,所有的子进程也会随之退出
数据卷管理
1 bind 的方式:因为其依赖于宿主机的目录,需要对于所有的宿主机进行统一管理
2 Volume:engine 管理
moby 容器引擎架构
1 moby daemon
2 containerd
3 (containerd)-shim
4 守护进程
插件化管理新container 技术-runC/kata/gVisor
1 隔离,可以实现moby,containerd 动态升级
2 container
3 runC/kata/gVisor
docker run 关键命令参数
1 The UTS namespace :setting the hostname and the domain that is visible to running processes in that namespace. By default, all containers, including those with --network=host, have their own UTS namespace. The host setting will result in the container using the same UTS namespace as the host. Note that --hostname and --domainname are invalid in host UTS mode.
2 --ipc=“MODE” : Set the IPC mode for the container ,”” Use daemon’s default.
2.1 “none” Own private IPC namespace, with /dev/shm not mounted.
2.2 “private” Own private IPC namespace.
2.3 “shareable” Own private IPC namespace, with a possibility to share it with other containers.
2.4 “container: <name-or-ID>" Join another (“shareable”) container’s IPC namespace.
2.5 “host” Use the host system’s IPC namespace.
3 --pid="" : Set the PID (Process) Namespace mode for the container,
‘container:<name|id>’: joins another container’s PID namespace
‘host’: use the host’s PID namespace inside the container