k8s基础问答

1.k8s基础组件有哪些,什么功能

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Master组件

Kube-Apiserver 

Kubernets API集群的统一入口,各组件协调者,以HTTP API 提供接口服务,所以对象资源的增删改查和监听操作都交给API Server处理后再交给Etcd存储。

Kube-Controller-Manage 

处理集群中常见的后台任务,一个资源对应一个控制器,ControllerManage就是负责管理这个控制器的

Kube-Scheduler 

根据调度算法为新创建的Pod选择一个Node节点

Node组件

Kubelet 

Kubelet 是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载Secret、获取容器和节点,状态等工作,Kubelet将每一个Pod转换成一组容器。

Kube-Proxy 

在Node节点上实现Pod网络代理维护网络规则,和四层负载均衡工作

Docker Engine 或 Rkl 

运行容器

Etcd

Etcd Cluster 

分布式键值存储系统用于保持集群状态,比如Pod、Service等对象信息

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2.一个pod创建过程

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

用户通过 REST API 创建一个 Pod
apiserver 将其写入 etcd
scheduluer 检测到未绑定 Node 的 Pod,开始调度并更新 Pod 的 Node 绑定
kubelet 检测到有新的 Pod 调度过来,通过 container runtime 运行该 Pod
kubelet 通过 container runtime 取到 Pod 状态,并更新到 apiserver 中。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3.网络选型需要注意什么

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

pod跨node的通信

网络性能

网络插件成熟度

网络策略 (最常用的应该是flannel和calico)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

4.pod中penging状态,是什么原因产生的,pod出问题,排查思路

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.配置出了问题

2.代码出现bug

3.dockerfile打包问题

4.拉去镜像问题

可以通过kubectl命令查看一下pod处于pending的原因:kubectl describe pod/your_pod_name -n your_namespace。

节点资源不足 不满足 nodeSelector 与 affinity Node 存在 Pod 没有容忍的污点 kube-scheduler 未正常运行 镜像不存在 排查思路 kubectl describe pod 查看具体信息 到相应node上查看具体日志

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

5.k8s发布策略(4种)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.滚动部署

2.灰度部署

3.金丝雀部署

4.ab部署

参考网站:https://www.sohu.com/a/318731931_100159565

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

6.手写raft

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

raft是一种强一致性的算法 同一时间只能有一个leader,所有的操作都在leader上。 最重要的是leader选举和日志复制

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

7.你们监控用什么,怎么用普罗米修斯监控pod信息,k8s状态,如果你来设计相关的监控如何做。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

pod 的metrics信息已经集成到的kubelet,直接用cAdvisor提供的metrics接口获取到所有容器相关的性能指标数据。 自定义相关模板 通过grafana展示。(grafana上有许多优秀的模板)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

8.如何利用k8s实现滚动更新,我说的是配置文件机制。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

deployment strategy RollingUpdate

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

9.statefulset是怎么实现滚动更新的

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

多个pod时,会按照顺序(序列号)滚动更新,每一个 Pod 都正常运行时才会继续处理下一个 Pod。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

10.k8s架构遇到什么问题,如何处理。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

参考地址:https://llussy.github.io/2020/09/04/kubernetes-troubleshooting/

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

11.kubectl exec实现原理

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

首先会读取config文件 ,生成GET/POST请求 去访问apiserver apiserver会向kubelet发起连接

https://blog.fleeto.us/post/how-kubectl-exec-works/ image

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

12.如何实现schelule水平扩展

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

scheduler 只能有一个leader ,一般有三个节点就够。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

13.为什么k8s要使用申明式

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

14.了解过endpointslice吗?怎么实现的?

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

15.容器的驱逐时间是

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

node notready时,默认驱逐时间是5min,可修改,是由kube-controller-manager的pod-eviction-timeout控制的。 node资源不足时也会发生驱逐,是按照qos等级来驱逐的。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

16.节点notready是什么导致的?notready会发生什么

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

kubelet异常 不能和apiserver通信

网络异常 kubelet version kernel notready会发生什么 node notready 5min,pod 会驱逐到其他节点。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

17.api-server到etcd怎么保证事件不丢失

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

18.sidecar要保证顺序启动怎么保证,几种方式可以做到

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

19.有了解过qos吗?怎么实现的

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Guaranteed 如果Pod中所有Container的所有Resource的limit和request都相等且不为0,则这个Pod的QoS Class就是Guaranteed。

Best-Effort 如果Pod中所有容器的所有Resource的request和limit都没有赋值,则这个Pod的QoS Class就是Best-Effort.

Burstable 除了符合Guaranteed和Best-Effort的场景,其他场景的Pod QoS Class都属于Burstable。

node资源不足时会按qos级别驱逐pod。 最先驱逐的是Best-Effort ,重要组件一定要设置limit和request.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

20.详细说下kube-proxy原理

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡

kube-proxy的作用主要是负责service的实现

service另外一个重要作用是,一个服务后端的Pods可能会随着生存灭亡而发生IP的改变,service的出现,给服务提供了一个固定的IP,而无视后端Endpoint的变化。

kube-proxy 模式

userspace 已弃用
iptables 大规模下会有性能问题 且不支持会话保持
ipvs
————————————————
版权声明:本文为CSDN博主「江南剑雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011533425/article/details/114599874

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

21.k8s的pause容器有什么作用,是否可以去掉

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
为pod中的多个容器提供共享网络空间,实现pod里容器间的通信。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

22.k8s的servcie和ep是如何关联和相互影响的

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
service中有selector时才会创建endpoints.

主要有两个职责:

是pod里其他容器共享Linux namespace的基础
扮演PID 1的角色,负责处理僵尸进程

kube-proxy 会监视 Kubernetes 控制节点对 Service 对象和 Endpoints 对象的添加和移除。

只要服务中的pod集合发生更改,endpoints就会被更新。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

23statefulsets和operator区别

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

StatefulSet是为了解决有状态服务的。 opertator用来扩展k8s api,自定义crd。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值