目 录CONTENT

文章目录

k8s常识

JamKing
2025-05-14 / 0 评论 / 0 点赞 / 22 阅读 / 0 字

1 k8s的有几大组件

api-server(api服务器):集群控制平面的前端,处理来自用户和其它组件的 API 请求,验证请求并将配置数据持久化
Kubelet:运行在每个节点上的代理,它负责与 Master 节点通信,确保节点上运行的容器处于预期状态
Controller-manager(控制器管理器):控制器管理器包含多个控制器,用于监控集群状态的变化,并根据所需的状态进行调整
Etcd:键值存储系统,相当于集群数据库
Scheduler(调度器):调度器,按资源分配pod到node上

2 k8s创建pod的过程

1、客户端提交 Pod 的配置信息(可以是 yaml 文件定义的信息)到kube-apiserver。
2、Apiserver 收到指令后,通知给 controller-manager 创建一个资源对象。
3、Controller-manager 通过 api-server 将 pod 的配置信息存储到 ETCD 数据中心
4、Kube-scheduler 检测到 pod 信息会开始调度预选,会先过滤掉不符合 Pod 资
源配置要求的节点,然后开始调度调优,主要是挑选出更适合运行 pod 的节点,
然后将 pod 的资源配置单发送到 node 节点上的 kubelet 组件上。
5、Kubelet 根据 scheduler 发来的资源配置单运行 pod,运行成功后,将 pod 的
运行信息返回给 scheduler,scheduler 将返回的 pod 运行状况的信息存储到 etcd数据中心。

3 怎么查看pod的重启时间

1、kubectl get pod -o wide
2、kubectl describe pod #看event字段
3、若有dashborad面板,也可以进到pod查看
4、查看业务日志,可能有重启记录,但不是主要的查看重启时间的步骤

4 readiness探针和liveness探针有何不同,探针都会导致哪些操作

readiness:检查容器是否ready,探针失败后,会设置容器不可用
liveness:检查容器是否running,探针失败后,会重启容器

#startup探针
启动检查机制,应用一些启动缓慢的业务,避免业务长时间启动而被上面两类探针 kill 掉

5 k8s的label和selector是什么

Label是附加到资源的键值对,Selector用于根据Label过滤和分组资源。label被动,selector主动

6 pod需要停机,驱逐的优先级

看实际情况,一般先停deoloyment的pod(通常为前后端服务,先中断外部访问和中断数据向中间件写入),再而是statefulset的pod(通常为中间件,防止停掉有一些数据传入其他节点,导致数据不同步等)

7 pod的pending状态有哪些情况

镜像拉取、节点资源不足、调度策略、节点故障、配额限制、标签错误等

8 k8s集群故障都有哪些原因导致

#仅供参考
系统错误(操作系统)、网络问题(节点不通信)、软件bug(k8s版本)、硬件故障(cpu、硬盘、内存等资源不足)

9 pod中含有多个副本容器,如何查看具体容器的日志

kubectl logs -f pod_name  container_name 

10 命令进入容器

#单副本pod
kubectl exec -it pod_name cmd
#副本集
kubectl exec -it pod_name -c container_name cmd

11 yum部署k8s集群和二进制集群的优缺点

#yum
优点:简单快速
缺点:不适用于纯内网环境
#二进制
优点:适用于多场景,可公网可纯内网
缺点:配置复杂,耗时较长

12什么是k8s的headless(无头服务)

无头服务,无头服务也是一种Cluster IP,只不过是一种特殊的Cluster IP,不分配ip,可以通过指定 ClusterIP(spec.clusterIP)的值为“None”来创建,主要的特点是通过无头服务的方式去解决hostname和portname的变化问题。通常用于前后端服务

13 k8s的持久化方式

pv卷、hostpath、emptydir

14 k8s中port,targetport和nodeport的区别

targetPort:容器互通
port:k8s集群或pod互通
NodePort:外部互通

15 怎么用已有的配置文件生成configmap的yaml文件

kubectl create configmap mysql-master -n deploy-test --from-file=my.cnf --dry-run=client -o yaml

#mysql-master:configmap目标名称,可自定义
#deploy-test:configmap生成在目标的命名空间
#from-file:从哪个文件生成configmap
#dry-run:只校验,不执行
#-o yaml:生成|导出yaml
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区