linux12k8s-->16kubernetes必备面试题(代码片段)

FikL-09-19 FikL-09-19     2022-12-19     285

关键词:

文章目录

1、监控Docker命令

docker inspect -f "state"

2、K8s的组件有哪些

kube-apiserver
kube-controller-manager
kube-scheduler
kube-proxy
kubelet
Flannel
ETCD
DNS 

3、常用控制器以及特点?

Deployment	# 部署无状态应用
DaemonSet	# 每个节点上都部署一个,用于收集、监控日志
StatufluSet	# 部署有状态应用

4、Service的类型有哪些?

ClusterIP		# 向集群内部暴露服务
NodePort		# 通过宿主主机IP和端口向外部暴露服务
LoadBalancer	# 通过弹性IP向外部暴露服务
ExtennalName	# 将外部的一个服务定义一个集群内部的别名

5、Ingress-Nginx的工作原理

根据ingress配置清单,实时生成Nginx配置,并且使其生效,之后通过nginx反向代理转发流量到pod中

6、从ingress到pod的流程

ingress ---> endprints(HeadLess Service) ---> pod

7、控制器、service、ngress管理pod的方式?

控制器 ---> 通过标签
Service ---> endPoints
ingress ---> endpoints

8、主容器的作用

1.提供一个Pod的基础网路命名空间
2.提供共享存储
3.监控业务容器

9、Pod的生命周期

1.调度服务到节点
2.创建Pod
2.创建主容器
3.依次创建业务容器
4.执行开始回调钩子
5.进行健康检查:存活探测、就绪探测
6.执行结束回调钩子
7.一次结束业务容器
8.结束主容器
9.销毁Pod

10、在k8s中yaml配置清单的最基本结构

apiVersion:
kind:
metadata:
spec:
status:

11、Ingress 设置重定向的方式有哪些,区别是什么?

1.注解   		# 当前ingress生效
2.configmap   # 全局生效

12、部署Wordpress的流程

1.将Wordpress打包到镜像并构建
2.编写配置清单(Service、Deployment、Ingress)
3.部署、访问测试

13、Docker的四中网络模式

Brigre		# 默认,启动Docker进程时,会在主机上创建一个名为docker0的虚拟网桥,和物理交换机类似
None		# 容器有独立的 Network namespace,但并没有对其进行任何网络设置
Host		# 容器和宿主机共享 Network namespace
Container	# 容器与容器共享一个NameSpace,K8s中的Pod就是采用此模式

14、Dockerfile常用指令

FROM	# 镜像来源
ADD		# 复制文件到镜像,支持tar包自动解压,强于COPY
RUN		# 指定构建镜像时运行的命令
ARG		# 用于指定传递给构建时的变量
ENV		# 环境变量
COPY	# 复制文件到镜像
LABEL	# 为镜像添加元数据,不常用
EXPOSE	# 制定与外界交互的端口
VOLUME	# 用于指定持久化目录
ONBUILD	# 镜像触发器,可触发基础镜像内的动作
WORKDIR	# 工作目录,类似于cd后的初始路径
CMD		# 指定容器运行时的默认命令,如启动命令

15、K8s组件及协同关系

所有服务均是由Apiserver调度
1.Kubectl发送了一个部署nginx的任务
2.进入Master节点进行安全认证
3.通过认证后,Apiserver接受指令
4.将部署的命令数据记录到ETCD中
5.Apiserver再读取ETCD中的数据
6.Apiserver找到Scheduler,告诉它要部署服务
7.Scheduler向Apiserver调取工作节点数据,看部署在哪台合适
8.Apiserver调取ETCD中粗出的数据,并发送给Scheduler
9.Scheduler通国计算比较,找到最合适的Node节点并发送给Apiserver
10.Apiserver把要部署在Node节点的计划储存到ETCD中
11.Apiserver读取ETCD中的部署计划,通知Node节点的Kubelet来部署容器
12.Kubelet根据指令部署Nginx容器,kube-proxy为Nginx容器创建网桥
13.容器网桥部署完成后,Kubelet通知Apiserver已完成部署工作
14.Apiserver将部署状态存储在ETCd中,同时通知Controller-Manager来活了
15.Controller-Manager向Apiserve要需监控容器的数据
16.Apiserver找ETCD读取相应数据,同时通知Kubelet要源源不断发送监控的数据
17.Apiserver找Kubelet发送来的数据存储到ETCD中
18.Apiserver将ETCD的数据返回给Controller-Manager
19.Controller-Manager根据数据计算判断容器是否存在或健康

16、K8s存储卷有哪些

empyDir
	# Pod调度到节点时创建的一个临时空目录,Pod删除随之删除,用于容器间分享文件

hostPath
	# 节点存储卷,挂在宿主机的文件或目录到Pod中

PV/PVC
	# 是外部存储系统中的一块存储空间,具有持久性,生命周期独立于Pod
	
StoageClass
	# 是充当PV的模板,从而可以动态创建所需的PV,自动构建相对应的PV持久化存储卷

configmap
	# 能使一个配置文件多台机器共用,杜绝重复修改,支持热更新,且支持挂载
	两种方式:挂载、存储卷

secret
	# 将密码转换为密文,写入配置清单中,起到加密的作用。

17、健康检查的方式+针对点+错误处理方式

存活性监测	# 容器是否正常启动 --> 删除容器
就绪性检测	# 容器是否正常提供服务 --> 移出负载均衡

18、将Pod调度到master节点的方法

1.删除污点:
	删除master节点上打的污点标签,用亲和性使Pod调度到master(scheduler)

2.容忍污点:
	设置Pod容忍污点,使用selectNode调度到master

19、简单说明emptyDir与hostPath

emptyDir	# 用来作为Pod中的临时目录
hostPath	# 类似于docker -v 参数,将存储卷挂载在本地

20、部署Discuz的步骤

1.编写配置清单
# 部署MySQL集群
  创建命名空间
  创建Service提供负载均衡
  使用控制器部署Discuz
# 部署Discuz应用
  创建命名空间
  创建Service提供负载均衡(headless service)
  创建服务并挂载代码
# 连接服务器
  Discuz连接MySQL --> mysql.mysql.svc.cluster.local

2.部署~

21、K8s的配错方法有哪些?

1.权限不足
2.内存不足
33.网络问题

22、K8s网络流量入栈到出栈的流程


23、说明PV/PVC

PV	# 相当于磁盘分区
PVC # 相当于磁盘请求

24、部署Discuz的流程

1.构建镜像
	php:MySQL+php-fpm
	nginx

2.设计网络流程
	Ingress --> endpoints --> Pod
	若discuz中包含第三方服务,则使用ExternalName(别名)
	
3.编写配置文件
	mysql.yaml
	word.yaml

4.测试

25、部署MySQL一主多从的步骤

1.准备MySQL主、从节点的配置文件 my.cnf
2.创建主、从节点的镜像
3.设计网络流程
	主节点:
		namespace.ymal
		stoage.yaml
		job.yaml
		mysql.yaml
	从节点:
		namespace.yaml
		config.yaml
		mysql.yaml
	mysql-cluster-mysqldump.yaml
4.部署测试

26、怎样使用动态PV持久化数据库

只要不删除PVC即可

27、K8s中的安全机制是什么

集群组件之间的安全机制:证书
集群内部之间的安全机制: 准入机制

28、Secret挂载到容器的环境变量写法

env:
  - name: nginx
  valueFrom:
    secretkeyRef:
      key: nginx
      name: configmap-name

29、怎样随时随地的修改Docker容器启动命令

通过外界脚本随时随地的监控修改

30、Git是什么?

代码管理工具

31、Git仓库的手动建立过程

mkdir data
cd data
git init

32、Git如何回滚

git reset --hard [回滚id]	# 回滚id通过 git log 查询

33、Git提交文件到远程仓库的流程

git add .	# 添加到暂存区
git commit -m 'init' .	# 添加到缓存区
git push -u origin master	# 推送至远程仓库

34、部署代码一般用什么来拉取代码?

通过标签或分支名称来拉取
git clone -b [tag name | branch name] [仓库地址]

35、Git pull与Git Clone 区别是什么?

git pull	# 更新拉取,在已有的仓库下,更新已有的代码
git clone	# 下载克隆,将远程仓库下载到本地

36、Git Branch与Git Tag的区别是什么?

git tag		# 特殊的分支,只能删除不能修改
git branch	# 可以修改

37、GitLab与Git的关系是什么?

git		# 代码管理工具
gitlab	# 远程代码仓库(免费的私有化部署)

38、GitLab设置权限的流程是什么?

Guest		# 能创建issue、发表评论,不能读写版本库
Reporter	# 能克隆代码,不能提交,QA、PM可用此权限
Developer	# 能克隆、开发、提交、推送代码,普通开发可用此权限
Maintainer	# 能创建编辑项目、添加tag、保护分支、添加项目成员、可新开发可用此权限
Owner		# 能设置项目访问权限,- Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可用此权限

39、在K9s上部署MySQL主从的设计方案

先设计主节点,再设计从节点
1.主节点
	创建一个复制用户
	保持server_id唯一
	备份
	
2.从节点
	保持server_id唯一
	连接上主节点

40、如何处理Jenkins忘记Admin密码?

参考:https://blog.csdn.net/qq_23995091/article/details/116240686#6jenkins_118

41、K8s工作中遇到的问题?

主节点有多个apiserver同时工作	# 内网防火墙开启导致
ETCD数据不一致,导致集群错乱(apiserver,ETCD脑裂)

42、Jenkins设置权限流程

创建权限组 --> 部署用户 --> 分配权限组

43、简单说明Jenkins源码管理、构建、构建后分别在哪台服务器执行?

构建之前 --> 在Jenkins服务器
构建之后 --> 在部署服务的机器

44、简单说明用Jenkins+GiaLab部署服务的流程

1.使用 git 工具将源代码上传到GitLab远程代码仓库
2.使用 Jenkins 将远程代码仓库的源代码拉取下来
3.将源代码部署到对应的项目上并构建
4.将构建的项目通过SSH连接部署到其他服务器上

45、Devops由哪些组成?

git、gitee、gitlab、Jenkins

46、使用Jenkins部署Java的流程

1.准备代码,并上传至远程仓库
2.用Jenkins部署编译环境:maven
3.web服务器部署运行环境:tomcat
4.测试

47、Jenkins部署PHP的流程

1.准备代码,并上传至代码仓库
2.用Jenkins拉取代码并编译
3.部署PHP到web服务器
4.测试

48、Jenkins自由风格主要的部署步骤

1.参数构建
2.源代码管理
3.构建
4.构建后操作
5.系统管理 -> 全局配置 -> publish over ssh -> 配置Jenkins服务器私钥+远程服务器的ssh

49、列举参数化构建中你熟悉的参数

文本参数
密码参数
凭证参数
下拉参数
字符串参数

50、为何使用git tag而不是git branch?

因标签是不可以修改的,每个标签版本都是固定不变的

51、Jenkins流水线的步骤是什么?

1.在Gitlab或Gitee创建空代码仓库
2.编写流水线步骤,填写仓库地址
3.根据业务要求对应修改(Jenkins)
4.测试运行

53、Jenkins连接K8s

在K8s中创建证书 --> 在Jenkins上配置连接

54、Jenkins部署Golang的流程?

1.将源代码上传至gitlab远程代码仓库
2.Jenkins拉取代码并编译
3.运行部署代码
4.测试

55、Jenkins创建pipline的流程


56、普罗米修斯的组件有哪些?

Prometheus Server
	# 服务核心组件,通过pull metrics从exporter拉取、存储监控数据,并提供一套灵活的查询语言PromQL
pushgateway
	# 接受push而来的数据,并暴露给Prometheus的Server拉取的中转站
Exporters/Jobs
	# 负责收集目标对象(host,container..)的性能数据,并通过HTTP接口供Prometheus Server获取
Service Discovery
	# 服务发现,Prometheus通过第三方接口查询需要监控的Target列表,轮训这些Target获取监控数据
Alertmanager
	# 从Prometheus Server端接收到alerts后,会去重、分组,并路由到对方的接受方式发出报警(邮件、微信)

57、普罗米修斯UI页面的三种实现方法?

Granafa			   # 美观、强大的可视化监控指标展示工具
Prometheus web UI	# 自带,不怎么好用
API Clients			# 自己开发的监控展示工具

58、普罗米修斯怎样监控一台Linux主机?

1.在被监控主机上安装node组件,解压到/usr/local并启动
2.在管理主机上修改配置文件,添加被监控主机的信息
3.启动管理主机

59、普罗米修斯怎样监控一台MySQL主机?

1.在被监控主机上安装MySQL组件,解压到/usr/local
2.在组件路径编写.my,cnf配置文件,指定并启动
2.在管理主机上修改配置文件,添加被监控主机的信息
3.启动管理主机

60普罗米修斯获取数据的方式有哪些?

pull
push

61、Jenkins流水线容器化步骤?

1.Jenkins连接K8s集群
	在Jenkins SSH Server连接
	通过pipline kubeconfig连接
2.编写Dockerfile
4.创建流水线任务

62、简单介绍微服务?

分布式:将多台Linux主机组到一起,做成像一台主机一样来使用,像MySQL主从一样

微服务:将一台Linux主机拆分成多台Linux使用,像部署discuz,将nginx+php放一起,MySQL单独

微服务:按不同功能、业务拆分成多个模块,以至于某一个模块出问题后,不至于导致全站的服务不可用

63、如何用普罗米修斯监控其他K8s集群?

带有metricts接口的服务(ETCD):
	# 使用Prometheus Operator创建相应的ServiceMonitor,匹配该服务的Service,就能自动将服务纳入监控中

64、普罗米修斯监控的架构图

65、普罗米修斯监控获取数据的接口是什么?

metricts

66、普罗米修斯监控 的类型有哪些?

1.携带metricts接口的服务
2.不携带metricts接口的服务

67、PromeQL的作用及增长率?

作用:用于查询普罗米修斯监控的数据
增长率:rate

68、普罗米修斯预测如何监控?

predict_linear

linux12k8s-->12kubeadm部署高可用k8s(代码片段)

...安装Docker(所有机器)1、docker安装脚本2、docker卸载5、安装kubernetes(所有机器)6、对kubea 查看详情

linux12k8s-->17图形化界面(代码片段)

安装kuborad1、简介Kuboard,是一款免费的Kubernetes图形化管理工具,Kuboard力图帮助用户快速在Kubernetes上落地微服务2、安装[root@k8s-master-01~]#kubectlapply-fhttps://kuboard.cn/install-script/kuboard.yaml[root@k8s-maste 查看详情

linux12k8s-->05实战入门(代码片段)

文章目录一、优化命令行二、kubernetes带来的变革1、对于开发人员1、对于开发人员的作用2、对于运维人员1、对于运维人员的作用三、实战入门k8s中的名称空间(命名空间)1、namespace1、**查看**2、**创建**3、**删除**4、**... 查看详情

Kubernetes apiVersion:networking.k8s.io/v1 “Ingress”问题

】KubernetesapiVersion:networking.k8s.io/v1“Ingress”问题【英文标题】:KubernetesapiVersion:networking.k8s.io/v1Issuewith\'Ingress\'【发布时间】:2021-05-2000:16:12【问题描述】:在执行KubernetesYAML文件时希望得到您的指导。我的kubectl版本如下:Client... 查看详情

linux12k8s-->13数据持久化

文章目录一、数据持久化1、kubernetes的Volume支持多种类型,比较常见的有下面几个:二、基本存储1、emptyDir(不能用来做数据持久化)1、实例一2、实例二2、hostpath1、实例一2、实例二1、hostpath的type的种类3、NFS1、实例一1)首先... 查看详情

linux12k8s-->03二进制安装(代码片段)

文章目录K8S二进制安装部署kubernetes角色与部署Master节点部署插件:Node节点部署插件:优化节点并安装Dockerk8s架构图一、节点规划1、插件规划参考2、环境准备二、系统优化三、安装docker四、生成+颁发集群证书(master01... 查看详情

搭建一个完成的kubernetes/k8s集群v.1.16(代码片段)

单节点集群多节点集群注意node通过连接loadbalancer转发到mateter的apiserver来进行运作的集群规划:角色ip组件K8S-master1192.168.0.101kube-apiserverkube-controller-managerkube-scheduleretcdK8S-master2192.168.0.102kube-apiserverkube-controlle 查看详情

linux12k8s-->09statefluset控制器(代码片段)

文章目录一、StatefluSet控制器1.介绍2.特点1.使用StatefluSet部署nginx测试启动顺序2.使用StatefluSet部署wordpress一、StatefluSet控制器1.介绍Kubernetes中有很多的控制器,比如常用的ReplicaSet,Deployment,DaemonSet,StatefulSet等。以 查看详情

Spring Cloud Kubernetes + Spring Cloud Gateway:无法找到 k8s 服务的实例

】SpringCloudKubernetes+SpringCloudGateway:无法找到k8s服务的实例【英文标题】:SpringCloudKubernetes+SpringCloudGateway:Unabletofindinstancefork8sservice【发布时间】:2019-12-2621:16:11【问题描述】:我正在使用SpringCloudKubernetes+SpringCloudGateway(SCG),但在 查看详情

linux12k8s-->06pod详解(代码片段)

...置项3、案例1、案例1--部署nginx、tomcat2、案例2--wordpress4、kubernetes没有提供单独运行Pod的命令,都是通过Pod控制器来实现的1、**查看pod信息**2、访问Pod3、删除指定Pod3、配置操作3、Pod存在的意义4 查看详情

kubernetes(k8s)集群渗透(代码片段)

一、简介Kubernetes,又称为k8s,是一种可自动实施Linux容器操作的开源平台,可以帮助用户省去应用容器化过程的许多手动部署和扩展操作,也就是说,它可以将运行Linux容器的多组主机聚集在一起并轻松高效地... 查看详情

k8s证书过期时间调整

...查证书有限期kubeadm部署集群默认证书有效期为一年cd/etc/kubernetes/pkiopensslx509-inapiserver.crt-text-nooutValidityNotBefore:Jun1204:41:182019GMTNotAfter:Jun1204:41:182020GMTgo环境部署wgethttps://dl.google.com/go/go1.12.7.linux-amd64.tar.gztar-xfgo1.12.1.linux-amd64.tar.gz-C/u... 查看详情

二进制部署k8s-1.12.0

一、前置知识点1.1生产环境部署K8s集群的两种方式kubeadmKubeadm是一个K8s部署工具,提供kubeadminit和kubeadmjoin,用于快速部署Kubernetes集群。二进制包从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 查看详情

linux企业运维——kubernetesk8s集群安装部署(代码片段)

Linux企业运维——Kubernetes(一)k8s集群安装部署文章目录Linux企业运维——Kubernetes(一)k8s集群安装部署1、Kubernetes简介1.1、什么是Kubernetes1.2、Kubernetes设计架构2、k8s安装部署2.1、环境准备2.2、安装部署1、Kubernetes... 查看详情

kubernetes--server部署

1.  Node节点配置文件1.1下载相关的软件wget ​​https://dl.k8s.io/v1.9.6/kubernetes-server-linux-amd64.tar.gz​​wgethttps:​​//dl.k8s.io/v1.13.1/kubernetes-client-linux-amd64.tar.gz​  上面的client包 查看详情

linux12k8s-->04命令行优化pod介绍label标签控制器(代码片段)

文章目录一、优化命令行二、kubernetes带来的变革1.对于开发人员2.对于运维人员3.Pod1>Pod生命周期2>Pod是如何管理多个容器的3>Pod中数据持久性4>Pod的状态5>Pod的资源清单详解6>Pod的重启策略三、名词介绍1.k8s中的名称空... 查看详情

linux学习-kubernetes之资源清单定义(代码片段)

资源:对象workload:Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、Cronjob,…服务发现及均衡:Service、Ingress配置及存储:Volume、CSIConfigMap、SecretDownwardAPI集群级资源NameSpace、Node、Role、ClusterRole、RoleBinding、ClusterRol... 查看详情

搭建单机版k8s运行flink集群(代码片段)

环境要求操作系统:CentOS7.x64位Kubernetes版本:v1.16.2Docker版本:19.03.13-ceFlink版本:1.14.3使用中国YUM及镜像源 1.安装Kubernetes:1.1创建文件:/etc/yum.repos.d/kubernetes.repo,内容如下:[kubernetes]name=Kubernet... 查看详情