删除|23 个必知必会的 Kubernetes 高频面试题( 四 )


6、K8s中镜像的下载策略是什么?答:可通过命令“kubectl explain pod.spec.containers”来查看imagePullPolicy这行的解释 。
K8s的镜像下载策略有三种:Always、Never、IFNotPresent;

  • Always:镜像标签为latest时 , 总是从指定的仓库中获取镜像;
  • Never:禁止从仓库中下载镜像 , 也就是说只能使用本地镜像;
  • IfNotPresent:仅当本地没有对应镜像时 , 才从目标仓库中下载 。
  • 默认的镜像下载策略是:当镜像标签是latest时 , 默认策略是Always;当镜像标签是自定义时(也就是标签不是latest) , 那么默认策略是IfNotPresent 。
7、 image的状态有哪些?
  • Running:Pod所需的容器已经被成功调度到某个节点 , 且已经成功运行 ,
  • Pending:APIserver创建了pod资源对象 , 并且已经存入etcd中 , 但它尚未被调度完成或者仍然处于仓库中下载镜像的过程
  • Unknown:APIserver无法正常获取到pod对象的状态 , 通常是其无法与所在工作节点的kubelet通信所致 。
8、 pod的重启策略是什么?答:可以通过命令`kubectl explain pod.spec查看pod的重启策略 。 (restartPolicy字段)
  • Always:但凡pod对象终止就重启 , 此为默认策略 。
  • OnFailure:仅在pod对象出现错误时才重启
9、 Service这种资源对象的作用是什么?答:用来给相同的多个pod对象提供一个固定的统一访问接口 , 常用于服务发现和服务访问 。
10、版本回滚相关的命令?[root@master httpd-web
# kubectl apply -f httpd2-deploy1.yaml  --record    
#运行yaml文件 , 并记录版本信息;
[root@master httpd-web
# kubectl rollout history deployment httpd-devploy1    
#查看该deployment的历史版本
[root@master httpd-web
# kubectl rollout undo deployment httpd-devploy1 --to-revision=1      
#执行回滚操作 , 指定回滚到版本1
   
#在yaml文件的spec字段中 , 可以写以下选项(用于限制最多记录多少个历史版本):
spec:  
  revisionHistoryLimit: 5              
#这个字段通过 kubectl explain deploy.spec  命令找到revisionHistoryLimit   <integer>行获得

11、 标签与标签选择器的作用是什么?标签:是当相同类型的资源对象越来越多的时候 , 为了更好的管理 , 可以按照标签将其分为一个组 , 为的是提升资源对象的管理效率 。
标签选择器:就是标签的查询过滤条件 。 目前API支持两种标签选择器:
  • 基于等值关系的 , 如:“=”、“”“==”、“!=”(注:“==”也是等于的意思 , yaml文件中的matchLabels字段);
  • 基于集合的 , 如:in、notin、exists(yaml文件中的matchExpressions字段);

注:in:在这个集合中;notin:不在这个集合中;exists:要么全在(exists)这个集合中 , 要么都不在(notexists);
使用标签选择器的操作逻辑: