【DevOps工程师】【Kubernetes】面试题

容器化和Docker相关的问题

选择题

  • Docker命令的参数中,哪个是指定容器环境变量的参数?
    A:-t
    *B:-e
    C:-i
    D:-v
  • Docker下列哪个不是Docker技术实现的基础
    A:UnionFS
    B:Cgroup
    C:Namespace
    *D:etcd

问答题

  • 简单说一下你对docker的理解/优点
    (这是一道开放性题目,可以一次性挖出面试者对于docker的理解,然后针对他所了解的部分进行深挖,然后针对没有涉及的问题进行横向扩展)

Docker是一个开源的应用容器引擎,是容器虚拟化的一种实现方式,他是基于库的虚拟化,让开发/运维人员把程序所需要的依赖全部打包在一个镜像中,具有一次打包,到处运行的特点,体积小且启动快

  • Dockerfile中的RUN, CMD和ENTRYPOINT的区别

RUN命令执行命令并创建新的镜像层,通常用于安装软件包
CMD命令设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换
ENTRYPOINT配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令)

  • 简述Docker技术三大要点:cgroup, namespace和unionFS实现方式

-- cgroup:Linux CGroupCgroup 可​​​让​​​您​​​为​​​系​​​统​​​中​​​所​​​运​​​行​​​任​​​务​​​(进​​​程​​​)的​​​用​​​户​​​定​​​义​​​组​​​群​​​分​​​配​​​资​​​源​​​ — 比​​​如​​​ CPU 时​​​间​​​、​​​系​​​统​​​内​​​存​​​、​​​网​​​络​​​带​​​宽​​​或​​​者​​​这​​​些​​​资​​​源​​​的​​​组​​​合​​​。​​​您​​​可​​​以​​​监​​​控​​​您​​​配​​​置​​​的​​​ cgroup,拒​​​绝​​​ cgroup 访​​​问​​​某​​​些​​​资​​​源​​​,甚​​​至​​​在​​​运​​​行​​​的​​​系​​​统​​​中​​​动​​​态​​​配​​​置​​​您​​​的​​​ cgroup
-- namespace:
PID NameSpace:Linux 2.6.24 ,PID隔离
Network NameSpace:Linux 2.6.29,网络设备、网络栈、端口等网络资源隔离
User NameSpace:Linux 3.8,用户和用户组资源隔离
IPC NameSpace:Linux 2.6.19,信号量、消息队列和共享内存的隔离
UTS NameSpace:Linux 2.6.19,主机名和域名的隔离;
Mount NameSpace:Linux 2.4.19,挂载点(文件系统)隔离;
-- AUFS:
UnionFS:把不同的物理位置的目录合并到同一个目录中。
Device mapper/OverlayFS:由于Redhat并不原生支持AUFS,但是为了适应Docker技术,在RHEL6中引进的文件系统,也可以使用OverlayFS,但是需要额外的配置

  • 在主机和容器上部署应用程序有什么区别?


    image.png

请参考上图。左侧架构表示在主机上部署应用程序。因此,这种架构将具有操作系统,然后操作系统将具有内核,该内核将在应用程序所需的操作系统上安装各种库。因此,在这种框架中,您可以拥有n个应用程序,并且所有应用程序将共享该操作系统中存在的库,而在容器中部署应用程序时,体系结构则略有不同。

这种架构将有一个内核,这是唯一一个在所有应用程序之间唯一共同的东西。因此,如果有一个需要Java的特定应用程序,那么我们将获得访问Java的特定应用程序,如果有另一个需要Python的应用程序,则只有该特定应用程序才能访问Python。

您可以在图表右侧看到的各个块基本上是容器化的,并且这些块与其他应用程序隔离。因此,应用程序具有与系统其余部分隔离的必要库和二进制文件,并且不能被任何其他应用程序侵占。

Kubernetes基本面试问题

选择题

  • Kubernetes集群数据存储在以下哪个位置?
    A. kube-apiserver
    B. Kubelet
    *C. etcd
    D. promethues
  • 哪个是Kubernetes的Pod控制器?
    *A. ReplicaSet
    *B. Deployment
    C. kube-controller-manager
    D. Service
  • 以下哪个是核心Kubernetes对象?
    *A. Pods
    *B. Services
    *C. Volumes
    D. ReplicaSet
  • Kubernetes Network代理在哪个节点上运行?
    A. Master Node
    B. Worker Node
    *C. 所有节点
    D. 以上都不是
  • Controller-Manager的职责是什么?
    *A. 将CIDR块分配给节点
    *B. 维护节点列表
    *C. 监视节点的运行状况
    D. 监控文件大小
  • Replication Controller的职责是什么?
    *A. 使用单个命令更新或删除多个pod
    *B. 有助于达到理想状态
    *C. 如果现有Pod崩溃,则创建新Pod
    D. 维护节点列表
  • 如何在没有选择器的情况下定义服务?
    *A. 指定外部名称
    B. 指定具有IP地址和端口的端点
    C. 只需指定IP地址即可
    D. 指定标签和api版本

问答题

  • 简单说一下你对Kubernetes的了解

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作(如果可以说的CNCF的话证明经常关注社区)。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。

  • Kubernetes的基本组成以及他们的作用,组件之间是如何交互的


    image.png

Master
-- kube-apiserver:Api Server 是唯一可以操作etcd 数据库的组件,并提供了认证、授权等机制。它严格遵守了REST规范,去操作这些资源,具有CRUD特性。它是Kubernetes控制的前端工程,它能够水平扩展,可以通过部署多个实例来达到高可用的目的。

-- kube-scheduler:通过API Server的watch接口监听新建Pod副本信息,并通过算法为该pod选择一个合适的node。调度器可用选择合适的策略,策略的考虑包括个人和集体资源的情况,软件、硬件条件的影响,亲和性和反亲和性的规范等因素。调度器是可插拔的,并且我们期待支持多集群的调度,未来甚至希望可以支持用户自定义的调度器。

-- kube-controller-manager:集群内各种资源controller 的核心管理者。针对于每一种具体的资源,都有相应的Controller,保证其下管理的每个Controller所对应的资源始终处于“期望的状态”。从逻辑上讲,每个控制器都是一个单独的过程,但为了降低复杂性,它们都被编译成单个二进制文件并在单个进程中运行。

--- etcd:用于存储集群中所有对象产生的数据。etcd是Coreos开源的(Apache 2.0协议)一个分布式键值存储数据库,它提供了一种在一组机器上存储数据的可靠方法。 etcd采用了master-slave架构,在网络分区期间优雅地处理Leader选举,并且可以容忍机器故障,包括Leader。

Worker
-- kubelet:用于和Master节点交互,运行了node上的Service进程
它位于集群中每个 node上非容器形式的服务进程组件,是Master和node之间的桥梁。处理Master下发到本Node上的pod创建、启停等管理任务,向API server注册Node信息。监控本Node上容器和节点资源情况,并定期向Master汇报节点资源占用情况。它还会向Master汇报容器运行的健康情况。

-- kube-proxy:Service抽象概念的实现,将到service的请求按策略(负载均衡算法分发到后端的pod )上,默认使用iptables mode实现;支持nodeport模式,实现从外部访问集群内的service。

  • k8s的pause容器有什么用

Pause容器,又叫Infra容器。在pod中担任Linux命名空间共享的基础。
PID命名空间:Pod中的不同应用程序可以看到其他应用程序的进程ID。
网络命名空间:Pod中的多个容器能够访问同一个IP和端口范围。
IPC命名空间:Pod中的多个容器能够使用SystemV IPC或POSIX消息队列进行通信。
UTS命名空间:Pod中的多个容器共享一个主机名;Volumes(共享存储卷):
Pod中的各个容器可以访问在Pod级别定义的Volumes。

  • 一个pod的创建过程
    Pod是Kubernetes的基础单元,了解其创建的过程,更有助于理解系统的运作。
    ①用户通过kubectl或其他API客户端提交Pod Spec给API Server。
    ②API Server尝试将Pod对象的相关信息存储到etcd中,等待写入操作完成,API Server返回确认信息到客户端。
    ③API Server开始反映etcd中的状态变化。
    ④所有的Kubernetes组件通过"watch"机制跟踪检查API Server上的相关信息变动。
    ⑤kube-scheduler(调度器)通过其"watcher"检测到API Server创建了新的Pod对象但是没有绑定到任何工作节点。
    ⑥kube-scheduler为Pod对象挑选一个工作节点并将结果信息更新到API Server。
    ⑦调度结果新消息由API Server更新到etcd,并且API Server也开始反馈该Pod对象的调度结果。
    ⑧Pod被调度到目标工作节点上的kubelet尝试在当前节点上调用docker engine进行启动容器,并将容器的状态结果返回到API Server。
    ⑨API Server将Pod信息存储到etcd系统中。
    ⑩在etcd确认写入操作完成,API Server将确认信息发送到相关的kubelet。

  • 详述kube-proxy原理,一个请求是如何经过层层转发落到某个pod上的整个过程。请求可能来自pod也可能来自外部。

kube-proxy其实就是管理service的访问入口,包括集群内Pod到Service的访问和集群外访问service。 kube-proxy管理sevice的Endpoints,该service对外暴露一个Virtual IP,也成为Cluster IP, 集群内通过访问这个Cluster IP:Port就能访问到集群内对应的serivce下的Pod。 service是通过Selector选择的一组Pods的服务抽象,其实就是一个微服务,提供了服务的LB和反向代理的能力,而kube-proxy的主要作用就是负责service的实现。 service另外一个重要作用是,一个服务后端的Pods可能会随着生存灭亡而发生IP的改变,service的出现,给服务提供了一个固定的IP,而无视后端Endpoint的变化。
kube-proxy当前实现了两种proxyMode:userspace和iptables。其中userspace mode是v1.0及之前版本的默认模式,从v1.1版本中开始增加了iptables mode,在v1.2版本中正式替代userspace模式成为默认模式。最新版本中iptables已经改成了LVS。

  • 一个最小的可以运行容器的K8S平台应该包含哪些组件
    除了Master和Worker节点上运行的组件之外还需要安装下面的组件才可以正常部署容器
    -- CNI(网络方案calico、flannel、canel、weaver)
    -- DNS(CoreDNS、dnsmasq)

  • 什么是Ingress网络,它是如何工作的?
    Ingress网络是一组规则,充当Kubernetes集群的入口点。这允许入站连接,可以将其配置为通过可访问的URL,负载平衡流量或通过提供基于名称的虚拟主机从外部提供服务。因此,Ingress是一个API对象,通常通过HTTP管理集群中服务的外部访问,是暴露服务的最有效方式。
    现在,让我以一个例子向您解释Ingress网络的工作。
    有2个节点具有带有Linux桥接器的pod和根网络命名空间。除此之外,还有一个名为flannel0(网络插件)的新虚拟以太网设备被添加到根网络中。
    现在,假设我们希望数据包从pod1流向pod 4.请参阅下图。


    image.png

    因此,数据包将pod1的网络保留在eth0,并进入veth0的根网络。
    然后它被传递给cbr0,这使得ARP请求找到目的地,并且发现该节点上没有人具有目的地IP地址。
    因此,桥接器将数据包发送到flannel0,因为节点的路由表配置了flannel0。
    现在,flannel守护程序与Kubernetes的API服务器通信,以了解所有pod IP及其各自的节点,以创建pods IP到节点IP的映射。
    网络插件将此数据包封装在UDP数据包中,其中额外的标头将源和目标IP更改为各自的节点,并通过eth0发送此数据包。
    现在,由于路由表已经知道如何在节点之间路由流量,因此它将数据包发送到目标节点2。
    数据包到达node2的eth0并返回到flannel0以解封装并在根网络命名空间中将其发回。
    同样,数据包被转发到Linux网桥以发出ARP请求以找出属于veth1的IP。
    数据包最终穿过根网络并到达目标Pod4。

  • Replica Set 和 Replication Controller之间有什么区别?
    Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。
    -- Equity-Based选择器:这种类型的选择器允许按标签键和值进行过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全相同短语的pod。 示例:假设您的标签键表示app = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。
    -- Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。 示例:假设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,如果您的应用程序等于任何nginx,NPS或Apache,则选择器将其视为真实结果。

基础产品的面试问题

除了Kubernetes,你还知道哪些容器编排工具,说说他们的优缺点。

Kubernetes与Docker Swarm的区别


image.png

你还了解哪些Devops相关的产品。

Devops产品:Openshift,AWS EKS
CI产品:Jenkins,rundeck
CD产品:Spinnaker,JenkinsX
Docker仓库:Vmware Harbor
GIT仓库:GitLab,BitBucket
Agile工具:JIRA
自动化工具:ansible,chef,puppet

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容