k8s-常见面试题

1.service和ep的关系?

https://www.cnblogs.com/du-z/p/11388805.html

  1. 在kubernetes中,service是一种定义了一组pod的访问策略的一种抽象,用于公开一组pod作为网络服务,这一组pod能够被service访问到,通常是通过Label Selector;
  2. endpoint也是kubernetes中另一种重要资源,它用于存储一组后端pod的ip地址和端口号;
  3. 我们知道pod的endpoint(pod ip+containerPort)会随着pod的销毁和重新创建而发生改变,新的pod的ip和旧的pod的ip不同,而label不会变,service会通过label selector 找到后端pod;

2.deployment和rs有什么关系?

https://www.cnblogs.com/du-z/p/11377391.html
官网:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/

  1. Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法。使用Deployment来创建ReplicaSet;ReplicaSet在后台创建pod。deployment会创建replicaset对象,这个replicaset对象会负责实际管理pod的副本。如果对pod副本进行更新、扩容、缩容,deployment会修改replicaset中的pod模板,并根据算选的部署策略进行pod副本的滚动更新。
  2. replicaset是kubernetes中一种用于管理pod副本的对象,它定义了一个pod模板,以及要运行的pod的副本数量。当replicaset被创建时,kubernetes会创建指定数量的pod副本,如果任何pod副本故障或被删除,replicaset将自动创建新的pod副本来保证被指定的pod副本数量不变。

3.clusterIP访问不通是什么原因?

clusterip是kubernetes中service的一种类型,用于将一组后端pod公开为一个虚拟ip地址,如果clusterIp访问service时出现问题,可能有以下几个问题:

  1. service运行状态错误,无法正常工作;
  2. service和后端pod的label不正确,无法连接到后端pod;
  3. 防火墙原因,访问不通;
  4. kube-proxy使用了iptable模式,修改为ipvs模式则可以在pod内ping通clusterIP或servicename
    。。。

4.service和deployment什么关系?

deployment创建管理的一组pod为service公开的pod组;

5.宿主机上能看到容器里的进程吗?如果在宿主机上杀掉容器中的进程会发生什么?

  1. 宿主机上可以看见容器里面的进程;ps 或查看/proc目录信息

  2. 如果在宿主机上杀掉容器中的进程,kubernetes的容器健康检查会重启进程,或重拉pod

6.k8s中有几种健康检查方式?

https://www.cnblogs.com/du-z/p/15107770.html
官网:https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/#container-probes

pod通过探针来检查容器的健康状态;

  1. LivenessProbe探针:用于判断容器是否健康(而不一定可用,不可用检测不出来)并反馈给kubelet。如果LivenessProbe探针探测到容器不健康,则kubelet将删除该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,则kubelet认为该容器的LivenessProbe探针返回值永远为Success。
  2. ReadnessProbe探针:用于判断容器是否启动完成,且准备接收请求,接收流量;如果ReadnessProbe探针检测到容器启动失败,则pod的状态将被修改,Endpoint Controller将从Service的Endpoint中删除包含该容器所在pod的ip地址和Endpoint条目
  3. StartupProbe探针:k8s1.16版本以后新加的探针,用于判断容器内应用程序是否已经启动;如果配置了startupProbe 探针,就会先禁止其他探针,直到他成功为止,成功后不再进行探测,

kubelet定期调用容器中的LivenessProbe探针来诊断容器的健康状况;三类探针中每类探针包含以下3种探测方式:

  1. ExecAction:在容器中执行命令,根据返回的状态码判断容器健康状态,返回0即表示成功,否则为失败。
  2. TCPSocketAction: 通过与容器的某TCP端口尝试建立连接进行诊断,端口能打开即为表示成功,否则失败。
  3. HTTPGetAction:向容器指定 URL 发起 HTTP GET 请求,响应码为2xx或者是3xx为成功,否则失败。

7.在pod的整个生命周期中,pod何时开始接收流量的?

ReadnessProbe探针检查成功后准备接收请求和流量;参考“k8s中有几种健康检查方式”解答

8.怎么在K8s集群中部署mysql,怎么给他指定一个node?

9.用过几种k8s网络插件?

10.同一个node上pod之间互相通信会不会走网络插件,会不会走iptables?

11.简述kube-proxy ipvs和iptables区别?

推荐一篇博文:https://blog.csdn.net/Tiger_lin1/article/details/120936950
Iptables 是 Linux 系统内置的一个工具,可以对流量进行过滤和转发,支持 NAT 等功能。在 Kubernetes 中,Iptables 主要用于实现 Service 的 ClusterIP 和 NodePort 类型。当 Service 为 ClusterIP 类型时,Iptables 会在节点上为每个 Service IP 添加一条规则,将流量转发到后端 Pod 的 IP 上。当 Service 为 NodePort 类型时,Iptables 会在每个节点上添加一条规则,将流量从宿主机的 NodePort 转发到 Service IP 上。

IPVS 是一个基于 Linux 内核实现的高性能的负载均衡工具,可以在内核态对流量进行处理,支持多种负载均衡算法,并能够进行会话保持。在 Kubernetes 中,IPVS 可以用于实现 Service 的负载均衡,相比于 Iptables,IPVS 具有更高的性能和更多的负载均衡算法选择,可以更好地应对高流量和高并发的场景。

差别:ipvs和iptables都是基于netfilter的,两者差别如下:

  1. iptables 因为它纯粹是为防火墙而设计的,并且基于内核规则列表,集群数量越多性能越差;ipvs 为大型集群提供了更好的可扩展性和性能
  2. ipvs 支持比 iptables 更复杂的负载均衡算法(最小负载、最少连接、加权等等)
  3. ipvs 支持服务器健康检查和连接重试等功能
posted @ 2023-03-23 15:51  du-z  阅读(327)  评论(0编辑  收藏  举报