zhangguanzhang's Blog

zhangguanzhang's Blog

站在巨人的肩膀上

kubelet 和 runc 编译关闭 kmem
前提详情在 3.x 的内核上,cgroup 的 kmem account 特性有内存泄露问题。kubelet 和 runc 都需要修复。 网上有言论说升级 Linux 内核至 kernel-3.10.0-1075.el7 及以上就可以修复这个问题,详细可见 slab leak causing a crash when using kmem control group。但是我测试了下面的都不行: CentOS7.4 CentOS7.6 CentOS7.7的 3.10.0-1062.el7.x86_64 CentOS Linux release 7.8.2003 (Core) - 3.1...
iptables --wait -t nat -A DOCKER...: iptables NO chain/target/match by that name
由来我们内部有套部署的工具, 我们部署的流程是先在部署机器(部署机器可能也是node1 )上用脚本安装好 docker,然后进容器里去起我们部署平台,有个很久的 bug 就是,部署机器上端口映射起容器会有如下报错 1iptables --wait -t nat -A DOCKER -p tcp -d 0/8 --dport 8089 -j DNAT --to-destination 172.25.0.2:80 ! -i docker0: iptables NO chain/target/match by that name 排查也很简单,缺少链,添加上即可: 123sudo iptab...
Internal error occurred: jsonpatch add operation does not apply: doc is missing path: xxx
由来今天在折腾 admission webhook 注入一些属性的时候遇到了 Error from server (InternalError): error when creating "xxx.yml": Internal error occurred: jsonpatch add operation does not apply: doc is missing path: "/spec/template/spec/dnsConfig/options"。折腾半天才发现在代码里使用 jsonPatch 的话不能直接绕过结构体实例去 patch。 ...
使用github action 配合 docker buildx 编译 arm64 docker-compose
说明git 上搜索了很多 docker-compose 的 arm64 的编译基本都是使用 qemu-user-static 之类的设置下后编译的,也看到过用特权容器启动 qemu-user-static 或者 binfmt 之类的,但是我自己机器上试了无效,貌似是因为我操作系统是低版本内核的 centos ,github 上搜了下,其他很多人的编译感觉太啰嗦了。就在 action 上整了下,测试是可用的,而且非常简单。 docker-practice/actions-setup-docker@master 将会在在 action 的 runner 里安装 docker,创建 build...
集群节点关机导致dns在eviction pod之前几率不可用
由来这几天我们内部在做新项目的容灾测试,业务都是在 K8S 上的。容灾里就是随便选节点 shutdown -h now。关机后同事便发现了(页面有错误,最终问题是)集群内 DNS 解析会有几率无法解析(导致的)。 根据 SVC 的流程,node 关机后,由于 kubelet 没有 update 自己。node 和 pod 在 apiserver get 的时候显示还是正常的。在 kube-controller-manager 的 --node-monitor-grace-period 时间后再过 --pod-eviction-timeout 时间开始 eviction pod,大概流程是...
docker18.03 hang at 'restoring container'
由来起初是 k8s 有几个 node not ready,上去看了下 kubelet 日志刷 container runtime down,重启了下 docker 后还是没用,docker ps 命令都卡住。 环境信息1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253$ cat /etc/redhat-release Linux xxx-disk0 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:...
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 重启后,内核参数是关闭的,但是实际没有关...
统信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 的三个组件,也给 ...