0%

Pod 状态及 Pod 故障排查命令

状态说明
Pending(挂起)Pod 已被 Kubernetes 系统接收,但仍有一个或多个容器未被创建,可以通过kubectl describe 查看处于 Pending 状态的原因
Running(运行中)Pod 已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行状态,或者是正在启动或者重启,可以通过 kubectl logs 查看 Pod 的日志
Succeeded(成功)所有容器执行成功并终止,并且不会再次重启,可以通过 kubectl logs 查看 Pod日志
Failed(失败)所有容器都已终止,并且至少有一个容器以失败的方式终止,也就是说这个容器要么以非零状态退出,要么被系统终止,可以通过 logs 和 describe 查看 Pod 日志和状态
Unknown(未知)通常是由于通信问题造成的无法获得 Pod 的状态
ImagePullBackOff
ErrImagePull
镜像拉取失败,一般是由于镜像不存在、网络不通或者需要登录认证引起的,可以使用 describe 命令查看具体原因
CrashLoopBackOff容器启动失败,可以通过 logs 命令查看具体原因,一般为启动命令不正确,健康检查不通过等
OOMKilled容器内存溢出,一般是容器的内存 Limit 设置的过小,或者程序本身有内存溢出,可以通过 logs 查看程序启动日志
TerminatingPod 正在被删除,可以通过 describe 查看状态
SysctlForbiddenPod 自定义了内核配置,但 kubelet 没有添加内核配置或配置的内核参数不支持,可以通过 describe 查看具体原因
Completed容器内部主进程退出,一般计划任务执行结束会显示该状态,此时可以通过 logs查看容器日志
ContainerCreatingPod 正在创建,一般为正在下载镜像,或者有配置不当的地方,可以通过 describe查看具体原因

Pod 的 Phase 字段只有 Pending、Running、Succeeded、Failed、Unknown,其余的为处于上述状态的原因,可以通过 kubectl get po xxx –o yaml 查看。

参考:https://edu.51cto.com/center/course/lesson/index?id=824674

故障现象

物理机无法引导进去操作系统,光标停止在grub>,故障现象如下图所示:

01

问题原因

grub2配置文件损坏,无法进入系统。 可能是由于调整分区或MBR/GPT分区表损坏,造成grub2不能正常启动,进入了救援模式。

阅读全文 »

Chrony简介

Chrony是一个开源自由的网络时间协议 NTP (Network Time Protocol) 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。

Chrony由两个程序组成,分别是chronyd和chronyc;chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿;chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

阅读全文 »

常用短命令查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
\?					#查看所有帮助
\l #列出数据库
\c [database_name] #切换数据库
\c - [user_name] #切换用户
\dt #查看所有自己创建的表
\dt+ #查看所有自己创建的表,显示表的相关内容及占用磁盘大小
\d [table_name] #查看指定表结构
\dt(+) ]tablename] #查看指定表,显示表的相关内容及占用磁盘大小
\dv #查看所有自己创建的视图
\dv+ #查看所有自己创建的视图,显示大小
\df #查看所有自己创建的function
\df+ #查看所有自己创建的function,显示function的内容
\df(+) [func_name] #显示指定的function
\ef [func_name] #编辑function
\dy #查看触发器
\dx #查看添加的PostgreSQL扩展模块
\du #查看所有角色
\dp [viewortable] #查看表或视图的权限
\sf+ 函数名 #查看函数的创建语句

---
\! [shell命令] #执行系统shell命令
\i [xx.sql] #执行sql脚本
\conninfo #查看当前连接信息
\encoding [ENCODING] #显示/修改客户端编码
\password [USERNAME] #修改当前用户密码
---
set search_path to [new_schema] #切换schema
---
批量修改表的所有者
select * from information_schema.tables where table_schema='public';
修改表的所有者(将执行结果复制处理再次执行)
select 'ALTER TABLE ' || table_name || ' OWNER TO yourowner;' from information_schema.tables where table_schema='public';
阅读全文 »

K8S中的资源

集群资源分类

工作负载型资源(workload):Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob(ReplicationController 在 v1.11 版本被废弃)

服务发现及负载均衡型资源(ServiceDiscovery LoadBalance): Service、Ingress、……

配置与存储型资源:Volume(存储卷)、CSI(容器存储接口、可以扩展各种各样的第三方存储卷)

特殊类型的存储卷:ConfigMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部资源中的信息输出给容器)

集群级资源:Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding

云数据型资源:HPA、PodTemplate、LimitRange

阅读全文 »

本子资源紧张,虚拟机harbor和master共用了一台主机

准备一个docker-compose

1
2
mv docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
阅读全文 »

系统基础配置

主机及IP地址规划

角色主机名IP地址
masterk8s-master192.168.111.201/24
nodek8s-node1192.168.111.202/24
nodek8s-node2192.168.111.203/24

设置系统主机名和Host文件

1
2
3
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
1
2
3
4
5
vim /etc/hosts

192.168.111.201 k8s-master
192.168.111.202 k8s-node1
192.168.111.203 k8s-node2
1
2
scp /etc/hosts root@k8s-node1:/etc/
scp /etc/hosts root@k8s-node2:/etc/
阅读全文 »

K8S学习知识图谱:https://www.processon.com/view/link/637d798d6376897f2b8d9f30

K8S是什么?

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。

K8S特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
阅读全文 »

1、打开百度网盘,右上角切换到旧版本

2、按F12切换进入浏览器调试模式,选择Console

3、输入以下代码后、回车,会得到一个直链

1
2
3
4
5
6
7
8
9
10
 (function(){
var _id = 309847;
var isHome = $('a[title="我的卡包"]').html();
var _temp = isHome ? "" : $('span[title]:first').attr('title').slice(4);
var _name = '文件名';
var _path = encodeURIComponent(_temp + '/' + _name);
var _link = 'https://pcs.baidu.com/rest/2.0/pcs/file?method=download&app_id='+_id+'&path='+_path;
console.log('下载地址为:');
console.log('%c%s' , 'color: #00ff00; background-color: #000000;' , _link);
})();

ps:这个路径是文件放在顶级根目录下了,在子目录了需要修改一下路径。