LOADING

加载过慢请开启缓存,浏览器默认开启

interview k8s & docker

2023/3/21 interview k8s docker

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可能会变化

avator

avator