docker
-
什么是docker?
docker是一个可以把开发的应用程序自动部署到容器的开源引擎 -
docker和VM的区别?
docker 是一个应用层的抽象,容器之间通过网络命名空间进行隔离,多个容器共享一个操作系统内核,VM是物理层硬件的抽象,每个VM都包含独立的操作系统,并且奇动缓慢,VM主要提供系统环境,容器主要提供应用环境。 -
docker组件
docker引擎、docker镜像、docker容器、regitsty -
docker架构
C/S 结构 -
镜像和容器的区别?
镜像只是一个只读模板,包含容器运行时的所有数据,其内容在构建后便不会发生改变,可以用来创建新的容器,镜像由多个只读层组成,容器在只读层多了一层 -
docker网络基础是什么
docker是在操作系统上的应用抽象,使用网络命名空间进行对不同容器之间进行隔离,用veth设备进行容器之间的通讯 -
CMD && ENDPOINT
都是容器的操作命令:
CM用于指定容器启动时默认执行的命令,可以被docker run指定的命令所覆盖。ENDPOINT指令可以让容器以应用程序或者服务的形式运行,一般不会被docker run所覆盖,dockerfile中的多个CMD和ENDPOINT只有最有一个会生效 -
docker run && RUN
一个是容器启动命令,一个是镜像构造时使用 -
copy && add
都是选取文件复制到镜像中,值针对镜像的命令,唯一的差别在于add 源文件可以支持url并且可以对压缩文件进行解压,而copy针对的是当前的环境
kubernetes
-
什么是k8s && 为什么用k8s?
kubernetes是一个开源的容器的管理平台,可以提供容器集群的自动部署,扩缩容,维护等功能,分为管理节点的master和工作节点的node。主要就是使得运维工作变得简单起来,提供自动部署,故障监控,自动扩容。可以提供效率 -
kubernete有哪些组件?
kube-etcd: 保存了整个k8s集群的状态
kube-apiserver:提供了资源操作的唯一入口,(get、put、post、delete)并且提供了认证,授权,访问控制,api注册和发现等机制
kube-controller-manager:维护集群的状态,比如自动扩容,故障检测,滚动更新等
kube-schelduer:负责资源的调度,按照调度规则将pod调度到想应的机器上
kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)、和网络的管理(CNI)
Container Runtime 负责镜像管理以及pod和容器真正运行(CRI)
kube-proxy:负责为service转发请求到后端的pod上,cluster内部的服务法西县和负载均衡 -
node、pod、container之间的关系?
node是kubernetes的工作节点,一个node节点包含了多个启动的pod,而一个pod又包含了多个container,pod中的contain共享一个网络空间的命名 -
pod,svc,Node,Container如何进行分访问?
同一个pod中的container:共享一个网络命名空间没直接进行访问
同node节点的不同pod容器:多个pod都会关联在一个Docker0网桥上,通过docker0网桥完成通讯
不同node的不同pod:不同nide节点的docker0可能会相同,podIP和docker0是同网段的,所以要将podIP和nodeIP进行绑定切唯一,不同node之前的pod是通过物理机的网卡进行转发通讯的
SVC
-
什么是svc?怎么创建svc?
service是一组功能相似的pod资源的抽象,相当于一组服务均衡,可以用配置未见的方式创建也可以使用命令创建 -
svc和RC提供服务的差别在哪?
RC创建服务podIP可能会产生变化,但是svc提供的clusterIP不会产生变化,通过iptables的NAT转换重定向到本地的端口,再均衡到后端pod
IP
- ip的几种类型?
Node IP:Node节点的IP地址,即物理网卡的IP地址。
Pod IP:Pod的IP地址,即docker容器的IP地址,此为虚拟IP地址。
Cluster IP:Service的IP地址,此为虚拟IP地址。