1、Docker技术基础
对进程做隔离。隔离CPU和内存,限制命名空间
Docker是分层的
Containerd是核心组件
Docker Client实现到Docker Engine之间通信
主要关注:
containers
images
networks
RunC负责容器应用程序的运行
容器里跑的程序都是前台程序,不能是后台程序
Docker联合文件系统(Union Filesystem)-overly2
Docker Images用来运行Docker容器
DockerFile自动创建Docker镜像
命令大写:
FROM
RUN
WORKDIR
COPY
CMD
特性:Docker对资源(cpu、memory、network、storage)细粒度划分,秒起秒开
2、Docker深入理解
镜像管理:
Harbor镜像中心
Docker Registry实现对容器的管理
每个镜像都是一个tar包
Docker容器网络模式:
主机模式
网桥模式
Docker容器跨主机模:
VXLAN模式
问题一:容器地址重复
Flannel解决方案:
中心化容器地址分配,Etcd配置存储服务
问题二:容器地址不可达
Flannel解决方案:
方案一:覆盖网络,对应udp和vxlan运行模式
方案二:主机路由,对应host-gw运行模式,局限性:必须二层网络可达、适用于小规模集群、或是专用的大二层网络环境
Docker日志机制与监控解决方案
3、Kubernets基础
Kubernets是用于自动部署、扩展和管理容器化应用程序的开源系统。
Node
Node作为集群中的工作节点,运行真正的应用程序,在Node上Kunernetes管理的最小运行单元是Pod。Node上运行着Kunernetes的Kubelet、kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁、以及实现软件模式的负载均衡。
Pode
Pod是Kunernetes最基本的操作单元,包含一个或多个紧密相连的容器,一个Podf可以被一个容器化的环境看作应用层的“逻辑宿主机”;一个Pod中的多个容器应用通常是紧耦合的,Pod在Node上被创建、启动或者销毁;每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和Volume挂载卷,因此他们之间通信和数据交换更为高效,在设计时我们可以充分利用这一特性将一组密切相关的服务进程放入同一个Pod中。
Service
一个Service可以看作一组提供相同服务的Pod的对外访问接口,Service作用于哪些Pod是通过Label Selector来定义的。如果Service要提供外网服务,需指定公共IP和NodePort,或外部负均衡器
注解:NodePort,系统会在Kubernetes集群中的每个Node上打开一个主机的真实端口,这样,能够访问Node的客户端就能通过这个端口访问到内部的Service了。
Deployment
官方推荐的应用部署对象
为了确保部署对象的数量和部署方式,Kubernetes提供了多种副本控制对象
ReplicationController(弃用)
ReplicaSet
StatefulSets
DeamonSet
Jobs-Run to Completion
CronJob
其他控制对象
StorageClass,PersistentVolume,PersistentVolumeClain:加载存储卷到容器中
ConfigMap:注入配置的键值对
Secret:存储访问受限的键值对,比如镜像仓库拉取密码
NameSpace
一套物理集群可以支持多套虚拟集群环境,集成RBAC
K8S基础组件
4、Kubernetes深入理解