1: top命令第三行
// 第三行表示的是系统CPU的信息
0.0 us 表示用户空间占用CPU的百分比
0.2 sy 表示的是内核空间占用CPU的百分比
0.0 ni 表示用户进程空间内改变过优先级的进程占用CPU百分比
99.8 id 表示空闲CPU百分比
0.0 wa 表示等待输入输出的CPU时间百分比
0.0 hi 表示硬中断占用CPU的百分比
0.0 si 表示软中断占用CPU的百分比
0.0 st 用于虚拟CPU的情况,表示被虚拟机偷用掉的CPU时间
————————————————
2: docker容器网络原理:
我们每启动一个docker容器,docker就会给容器分配一个默认的可用ip
我们只要安装了docker,就会有一个网卡docker0(bridge)。网卡采用桥接模式,并使用veth-pair技术(veth-pair就是一堆虚拟设备接口,成对出现,一段连着协议,一段彼此相连,充当一个桥梁。) 路由器,各种虚拟接口
mysql主从:
三、主从复制的原理(重中之重,面试必问):
1.数据库有个bin-log二进制文件,记录了所有sql语句。
2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
4.下面的主从配置就是围绕这个原理配置
5.具体需要三个线程来操作:
1.binlog输出线程:每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。在从库里,当复制开始的时候,从库就会创建两个线程进行处理:
2.从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。
3.从库的SQL线程:从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。
步骤一:主库db的更新事件(update、insert、delete)被写到binlog
步骤二:从库发起连接,连接到主库
步骤三:此时主库创建一个binlog dump thread线程,把binlog的内容发送到从库
步骤四:从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log.
步骤五:还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db.
server-id 不一样
log-bin
server-id
relay-log
4: k8s service
K8S中Service分为四类,分别是ClusterIP,NodePort,LoadBalancer以及ExternalName
5: pod访问 中间件或者service+port 不通排查
service有没有起来 端口
service endpoint (有哪些POD 入口) 入口 service --->POD-->端口
POD服务正常否
6:master四大组件
1: kuber-apiserver 接口
2: controller-manager POD控制器
Controller-Manager 作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态
3: scheduler 资源调度
4: etcd 存储
7: docker file 打包镜像
8: ES查看分片数
curl -XGET -uelastic -p http://172.18.35.144:9200/_cat/health?v
cluster ,集群名称
status,集群状态 green代表健康;yellow代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整;red代表部分主分片不可用,可能已经丢失数据。
node.total,代表在线的节点总数量
node.data,代表在线的数据节点的数量
shards, active_shards 存活的分片数量
pri,active_primary_shards 存活的主分片数量 正常情况下 shards的数量是pri的两倍。
relo, relocating_shards 迁移中的分片数量,正常情况为 0
init, initializing_shards 初始化中的分片数量 正常情况为 0
unassign, unassigned_shards 未分配的分片 正常情况为 0
pending_tasks,准备中的任务,任务指迁移分片等 正常情况为 0
max_task_wait_time,任务最长等待时间
active_shards_percent,正常分片百分比 正常情况为 100%
ES分片信息:
curl -XGET -uelastic -p http://172.18.35.144:9200/_cat/shards/test*?v
index:所有名称
shard:分片数
prirep:分片类型,p=pri=primary为主分片,r=rep=replicas为复制分片
state:分片状态,STARTED为正常分片,INITIALIZING为异常分片
docs:记录数
store:存储大小
ip:es节点ip
node:es节点名称
9: ETCD数据没有同步,
二.处理思路
1.备份正常节点的etcd数据和对应的数据目录
2.停止异常数据etcd
3.正常etcd节点,删除异常member
4.清除member/ wal/目录下的数据
5异常节点重新加入集群
6.启动etcd服务就可以了
etcdctl \ --cacert=/etc/kubernetes/cert/ca.pem \ --cert=/etc/kubernetes/cert/etcd.pem \ --key=/etc/kubernetes/cert/etcd-key.pem \ --endpoints=https://172.31.243.179:2379 \ member add k8s-03 https://172.31.243.178:2380
10; POD没起来,不健康查看
11: 文件 text 逐行循环 把它取出来
while read -r line
12: POD挂载方式
PV PVC volume
PVC 宿主机目录 configMap emptyDir
13: 控制器有几种
Taint: 污点
Toleration:
metadata: 相关属性定义
master默认命名空间: default kube-system
kube-system: 网络组件 DNS组件 监控类组件
命名空间: 结合kubernetes限额管理,可以限制CPU使用量 内存等
POD之间通信,虚拟二层网络,如Flannel vSwitch等,一个pod与主机上的pod容器直接通信
Event: 事件记,node event 和 POD event
matchLabels: 匹配标签 AND下面
matchExpressions: 匹配表达式
imagePullPolicy: IfNotPresent
Headless Service: 只要在service中定义 clusterIP: none 就定义了一个Headless
Docker Engine: 根据docker0网桥的IP地址段进行分配的 虚拟二层网络
Pod控制器包括 RC Job DaemonSet 静态POD(kubelet)
探针实现方式3种: ExecAction TCPSocketAction HTTPGetAction
POD创建: RC Deployment(底层控制器RS) DaemnonSet(监控) Job ReplicaSet StatefulSet
socat是一个网络工具,k8s使用它来进行pod的数据交互,出现这个问题直接安装socat即可
调度策略: NodeSelector NodeAffinity PodAffinity Pod驱逐,
14: 污点可以任然调度的方法,去污点命令
15: POD无法解释域名 无法解释DNS