zhangguanzhang's Blog

zhangguanzhang's Blog

站在巨人的肩膀上

ansible hang in docker container
由来这几天同事发现在 docker 容器里运行 ansible 命令很卡,发来了个命令叫我试试 ansible localhost -m setup -a 'filter=ansible_default_ipv4' 2>/dev/null |grep '\"address\"' |awk -F'\"' '{print $4}' 环境信息12345678910111213141516171819202122232425262728293031323334353637383...
永久关闭swap的正确姿势
今天遇到了 kylin 系统上无法关闭 swap 的情况。记录下和方便别人搜到这个知识点。 环境信息1234$ at /etc/issueKylin 4.0.2 \n \l$ uname -aLinux H-192-168-63-132 4.15.0- 58-generic #64kord1k1'SMP Thu Aug 1S15:51:97 csT 2919 aarch64 ...... 尝试的步骤fstab 里没有 swap 的挂载, 1swapoff -a && sysctl -w vm.swappiness=0 重启后,内核参数是关闭的,但是实际没有关...
银河麒麟arm64系统克隆机器上k8s vxlan跨节点不通的一次排查
由来和前一篇文章不一样,从来没遇到过这样的问题,这里记录下。实施在客户那边部署业务后,业务在浏览器上无法访问,我远程上去查看日志发现 pod 内部无法 DNS 无法解析,nginx 连不上 upsteam 报错而启动失败,实际上也是跨节点不通。实际排查过程也有往错误的方向浪费了一些时间和尝试,就不写进来了,以正确的角度写下排查过程。 环境信息OS 是 arm64 的银河麒麟系统: 123456789$ cat /etc/os-releaseNAME="Kylin Linux Advanced Server"VERSION="V10 (Tercel)"...
统信USO 20 hostPort 无法访问
由来这些天陆续发现很多客户是统信的系统,部署我们业务后无法访问 环境信息我自己环境和客户的环境都遇到了无法访问,我自己测试的机器信息是: 1234567891011$ cat /etc/os-releasePRETTY_NAME="Uniontech OS Server 20 Enterprise"NAME="Uniontech OS Server 20 Enterprise"VERSION_ID="20"VERSION="20"ID=UOSHOME_URL="https://www.chinauo...
银河麒麟arm64系统上k8s集群跨节点不通的一次排查
由来同事在客户那边部署的集群问题频繁,先给他解决了个问题后又反映说业务 POD 由于 DNS 无法解析而启动失败,排查完发现这样的情况从没遇到过,挺有意思的,这里记录下。实际排查过程也有往错误的方向浪费了一些时间和尝试,就不写进来了,以正确的角度写下排查过程。 环境信息集群信息: 12345678910111213141516171819202122232425$ kubectl version -o json{ "clientVersion": { "major": "1", "mi...
openshift 4.5.9 离线安装
本文是全部离线安装,也就是 UPI (User Provisioned Infrastructure) 模式安装,假设机器只能配置静态ip不能有网络配置权限和配置 dhcp 和 pxe。机器可以是物理机和虚拟机。 前言介绍ocp介绍openshift 分为社区版本 okd 和企业版本 ocp(openshift container platform),okd 的更新很慢,ocp 个人也是可以安装的,不购买 license 则不会享受 redhat 的官方支持。 openshift 不像其他的 dashboard 诸如 rancher,k3s 之类的,它自己实现了 cs 的三个组件,也给 ...
个人用 wireguard 笔记
作为 IT homelab 人员,经常需要连到家里的机器, openvpn 之类的配置麻烦啰嗦。这里写下 wireguard 的简单搭建。它比 IPSec 更快,更简单,更精简,更有用。它工作在内核态,比 OpenVPN 更高效。WireGuard 设计为通用 VPN,适用于多种不同情况。它是跨平台的,可大规模部署。 通常如下图的部署: 一台 ECS 主机,得有公网 IP,下图就是 pc ----> ECS <------ 家里的 pc 12345678910111213141516 +----------+ | ...
prometheus的rate与irate内部是如何计算的
由来市面上的翻译误导人,压根不是啥平均增长率,看了下源码和实际算下来让大家好理解 rate主要代码是在 https://github.com/prometheus/prometheus/blob/master/promql/functions.go 的extrapolatedRate 和 funcRate,funcRate为 123func funcRate(vals []parser.Value, args parser.Expressions, enh *EvalNodeHelper) Vector { return extrapolatedRate(vals, args...
k8s master机器文件系统故障的一次恢复过程
由来研发反馈他们那边一套集群有台master文件系统损坏无法开机,他们是三台openstack上的虚机,是虚拟化宿主机故障导致的虚机文件系统损坏。三台机器是master+node,指导他修复后开机,修复过程和我之前文章opensuse的一次救援步骤一样 起来后我上去看,因为做了 HA 的,所以只有这个node有问题,集群没影响 12345[root@k8s-m1 ~]# kubectl get node -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS...
Linux audit 审计
什么是audit?linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统。该系统可以可靠地收集有关上任何与安全相关(或与安全无关)事件的信息,它可以帮助跟踪在系统上执行过的一些操作。 使用安装好像高版本 os 都自带了,没有就 yum install -y audit 1systemctl status auditd.service 例如追踪一个内核参数被谁修改要注意的是 auditctl 只能临时生效,要想永久生效使用文件 audit.rules 基本信息查看12345678910111213# 查看状态$ auditctl -senabl...
k8s pprof 分析 cpu 和内存
简单记录下 k8s 组件的 pprof 看内存和 cpu 情况 kubectl 收集有证书 curl 也行,这里就偷懒了: 123# 这个很耗时,耐心等待文件不为 0 即可kubectl get --raw /api/v1/nodes/<nodeName>/proxy/debug/pprof/profile > kubelet.profilekubectl get --raw /api/v1/nodes/<nodeName>/proxy/debug/pprof/heap > kubelet.heap 123yum instal -y graphviz...
阿里云上使用flannel host-gw跨节点pod不通的解决
挺多人问的,写下解决办法 前言首先主机得在同一个专有vpc下,跨vpc或者经典vpc就扯淡了。还有flannel别把网络信息存储在etcd里,目前flannel只支持v2的etcd api。但是现在k8s都是使用v3 etcd存储了。如果v2和v3共存会导致无法恢复etcd的备份 所以网上那些etcdctl set flannel的cidr的文章别看了,都没做过备份恢复实验就到处发k8s搭建教程。flannel v3的话看我过往文章 环境信息先来说下host-gw的包走向,假设两台机器 IP pod cidr 10.0.6.166 10.200.1.0/24 1...
v1.17+ k8s集群下CNI使用VXLAN模式SVC有63秒延迟的触发原因定位
这个问题 flannel 和 calico 的 VXLAN 模式下都会发生,部分人的现象是集群的A记录 UDP 下查询可能有问题(也有人在 azure 上在宿主机上访问 svc 的 clusterIP 10%几率才能通),原因是v1.17+的k8s会引起内核的某个 UDP 相关 bug而不是cni的软件层面,weave没有,后面说。 写这篇文章的日期是05/28,发现是上周五也就是05/23号,文章从时间线写起(因为很多时候想发文章但是没空,所以文章的发布日期是05/23) 2020-07-19更新,版本v1.18.6, v1.16.13, v1.17.9+已经修复这个问题,可以同版本内...