1.Docker和虚拟机有什么不同
Docker是轻量级的沙盒,在其中运行的只是应用,而虚拟机里面还有额外的操作系统
docker的底层原理
使用了linux底层的方法,来提供隔离的工作环境:也是container,每次你run container的时候,doceker创建一个针对该容器的container
namepsace 提供了一层隔离,docker使用了以下namespace
1.pid namespace: process isolation
2.net namespace: Managing network interface
3.ipc namespace :进程交互的隔离
4.mnt namespace: 文件系统
5.uts namspace 隔离了内核和版本标识
从container_d的fork启动
所以总的流程为:
runc to start a container
unshared system call
tell system to fake something
K8S的架构概述
master节点用来管理和调度worker节点的
在一个K8S集群中,节点可以是物理机,也可以是虚拟机
worker节点所提供的资源单位叫做pod(云平台的虚拟机),里面是应用容器,是CPU和内存的资源隔离单位,一般一个pod只有一个容器(也可以多个,主从),共享网络栈。
K8S需要当有应用发布请求的时候,把请求分配到workder节点上去,如果有节点挂了,需要能够重新启用pod
还需要管理集群间的网络,保证集群可以互通互联
名称 | 组件 |
---|---|
master | 1.etcd(集中的状态存储,包括节点,pods,是一个分布式的kv数据库,基于Raft)。 2.API server(用户通过kuberctl来操纵,通过这个server来进行操作)操纵其他的3个组件,可以认为是etcd的代理,唯一一个可以操纵etcd的组件,也是事件总线,当有情况时,可以通知其他pod 3.调度决策的组件,掌握当前集群的资源使用情况,当有新的请求打来时,来决定应该打到哪里。4.Controller manager,监听APIserver,协调pods,自愈实现机制 |
workder | 1.kubelet:资源管理者,监听APIserver,将本节点的资源数据,汇报给master节点.2.container runtime:kuberlet不直接管理容器资源,而是交给container runtime。3.kube-proxy:管理服务中的网络的组件,因为pod的ip可能会变化 |