0%

安装dvd+rw-tools工具

要格式化/擦除DVD + RW磁盘,我们需要dvd+rw-tools工具 。 如果尚未安装,请安装:

1
2
yum install dvd+rw-tools
yum install cdrecord

格式化光盘

在将DVD + RW插入刻录机后,可以使用dvd+rw-format工具格式化/擦除DVD + RW(实际上无需显式地将其清空)/ DVD-RW磁盘:

1
dvd+rw-format -force /dev/sr0

使用cdrecord擦除DVD-RW磁盘的命令(由wodim提供):

1
cdrecord dev=/dev/sr0 blank=fast

LINUX下光盘的常见操作

刻录光盘语法:growisofs -dvd-compat -speed=<刻录速度> -Z <设备名>=<镜像路径>

1
2
3
4
5
6
7
8
9
10
growisofs -dvd-compat -Z /dev/dvdwriter=/opt/CentOS-5.3-x86_64-bin-DVD.iso

#刻录ISO文件
growisofs -dvd-compat -Z /dev/sr0=/path/to/image.iso
#初次刻录(非ISO文件)
growisofs -Z /dev/sr0 -R -J /some/files
#往已有的DVD盘上添加文件
growisofs -M /dev/sr0 -R -J /more/files
#给DVD盘封口(一般用不着)
growisofs -M /dev/sr0=/dev/zero

报错信息

部署Springboot 人人框架时候,访问验证码看到返回状态码为200,但是页面无法正常显示,查看后台日志,发现报错如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2023-10-23T13:15:56.314+08:00 ERROR 26705 --- [nio-8082-exec-1] c.l.c.log.exception.RenExceptionHandler  : Handler dispatch failed: java.lang.InternalError: java.lang.reflect.InvocationTargetException

jakarta.servlet.ServletException: Handler dispatch failed: java.lang.InternalError: java.lang.reflect.InvocationTargetException
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1096)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479)
……
阅读全文 »

定义

参考:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/

创建

vim nginx-deployment.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
spec:
containers:
- name: nginx-deployment
image: registry.cn-hangzhou.aliyuncs.com/alxq/nginx:stable-alpine3.17
imagePullPolicy: IfNotPresent
restartPolicy: Always
1
kubectl apply -f nginx-deployment.yml
阅读全文 »

故障现象

在Vmware Workstation中安装了Zstack环境,在初始化添加物理机环节报错

1
shell command[sudo PYTHONPATH=/usr/local/zstack/ansible/files/zstacklib timeout 1800 python2 /usr/local/zstack/ansible/kvm.py -i /usr/local/zstack/ansible/hosts --private-key /usr/local/zstack/apache-tomcat-8.5.57/webapps/zstack/WEB-INF/classes/ansible/rsaKeys/id_rsa -e '{ "init": "true", "chrony_servers": "192.168.111.128", "trusted_host": "192.168.111.128", "remote_port": "22", "update_packages": "true", "host_uuid": "e308280cbfd540938d1229e59f932c05", "zstack_root": "/var/lib/zstack", "remote_user": "root", "hostname": "192-168-111-128.zstack.org", "pkg_kvmagent": "kvmagent-4.4.0.tar.gz", "post_url": "http://192.168.111.128:8080/zstack/kvm/ansiblelog/e308280cbfd540938d1229e59f932c05\n", "remote_pass": "*****", "host": "192.168.111.128", "pip_url": "http://192.168.111.128:8080/zstack/static/pypi/simple", "zstack_repo": "\"zstack-mn,qemu-kvm-ev-mn\"", "yum_server": "192.168.111.128:8080", "pkg_zstacklib": "zstacklib-4.4.0.tar.gz" }'] failed ret code: 1 stderr: ERROR: [ HOST: 192.168.111.128 ] ERROR: change kernel module kvm_amd status to present failed error: modprobe: ERROR: could not insert 'kvm_amd': Operation not supported stdout:
阅读全文 »

标签

标签(Labels)是附加到Kubernetes对象(比如 Pod)上的键值对。标签旨在用于指定对用户有意义且相关的对象标识属性。标签可以在创建时附加到对象,随后可以随时添加和修改。每个对象都可以定义一组键(Key)/ 值(Value)标签,但是每个键(Key)对于给定对象必须是唯一的。

标签作用:就是用来给k8s中对象起别名,有了别名可以过滤和筛选

语法

标签由键值对组成,其有效标签值:

  • 最多为63个字符(可以为空)
  • 除非标签值为空,必须以字母数字字符([a-z0-9A-Z])开头和结尾
  • 包含破折号(-)、下划线(_)、点(、)和字母或数字

查看所有node节点标签

1
2
3
4
5
6
7
[root@k8s-master01 ~]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master01 Ready control-plane 6d17h v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-master02 Ready control-plane 6d17h v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-master03 Ready control-plane 6d17h v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node01 Ready <none> 6d17h v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
k8s-node02 Ready <none> 6d17h v1.26.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux

标签操作命令格式kubectl label nodes <nodename> label_name=label_value

阅读全文 »

配置k8s命令tab补全并设置别名

1
2
3
4
5
6
7
8
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# 设置kubectl别名为k
echo "alias k=kubectl" >> ~/.bashrc
#这句不加的话用kubectl可以使用Tab键自动补全,但是别名k不能使用Tab键自动补全
echo "complete -F __start_kubectl k >> ~/.bashrc

source ~/.bashrc

输入“k ge[tab] no[tab]”效果如下

1
2
3
4
5
6
7
[root@k8s-master01 ~]# k get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready control-plane 5d15h v1.26.3
k8s-master02 Ready control-plane 5d15h v1.26.3
k8s-master03 Ready control-plane 5d15h v1.26.3
k8s-node01 Ready <none> 5d15h v1.26.3
k8s-node02 Ready <none> 5d15h v1.26.3

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实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

阅读全文 »