- 博客(858)
- 资源 (7)
- 收藏
- 关注
原创 [kubernetes]-单节点k8s迁移
导语:k8s是单节点单master的机器,且k8s api使用虚拟ip100.100.100.100。仅适用(使用虚拟IP 100.100.100.100为api通讯的ip) 的单机k8s,以供参考。2台机器安装etcdctl。被恢复的机器B上安装好k8s。提前同步好docker文件夹以及数据文件到指定路径。node节点IP更换,证书会自动重新签发。生成集群配置(需更换api ip)A为使用中的机器,B为纯净的机器。备份 kubernetes 目录。源机器A执行命令备份etcd。再次查看证书内的 ip。
2024-04-12 10:14:02
211
原创 [问题已处理]-服务器使用mount创建硬连接之后,磁盘空间异常,且比较卡
jenkins构建报错如上图所示,但是磁盘使用并没有超过50%。另外服务器也比较卡。导语:服务器使用mount创建硬连接之后,磁盘空间异常,且比较卡。查看/etc/mtab 有9w多个挂载信息。
2024-04-12 10:08:37
364
原创 [linux]-ubuntu在内核升级时自动更新显卡驱动
install update-nvidia /etc/kernel/postinst.d 是用来将 update-nvidia 脚本安装到 /etc/kernel/postinst.d 目录下,这是一个用于在每次内核更新后自动运行的目录。导语:显卡驱动在内核升级之后重启显卡就无法使用。结合了大佬的脚本,使显卡驱动能在内核升级之后同步更新。install命令和cp命令类似,只是自动把文件权限改成rwxr-xr-x 罢了。apt安装软件的时候可能会升级内核版本。内核升级后显卡驱动报错如下。
2024-04-11 14:10:06
462
原创 [问题已处理]-docker切换到containerd之后导入镜像报错failed to create snapshot- missing parent
导语:k8s运行时从docker切换到containerd时出现了镜像snapshot的报错。初衷是想切换的更快更平滑。所以在未切换前,用ctr命令先把镜像导入到containerd中,导入显示成功(此时还是docker运行时)。再做切换,切到containerd,但运行容器报错failed to create snapshot: missing parent。并且删除镜像后再次导入也不行。报错如下。
2024-04-11 10:59:03
778
原创 [kubernetes]-ingress服务没问题但80无法被访问
导语:ingress的80无法被访问。k8s-api使用的是100.100.100.100的虚拟ip。原ingress镜像和配置在本地不管是否使用hostnwork都可以访问,也不需要80端口被监听。现场即使调整成80被监听也无法访问。或者通过tcp-services暴露的端口也无法被访问到。直接改了对应ingress的svc 增加了类似如下配置externalIPs。可能是网络问题造成,也可能是安装了防病毒软件导致的。系统Ubuntu 16.04.6。
2024-04-11 09:44:22
638
原创 [问题已处理]-k8s显示flannel pod异常
CNI(Container Network Interface)是容器网络接口,它定义了容器运行时与容器网络插件之间的交互方式。因此,为了确保 CNI 网卡能够正常工作,必须配置适当的网关,并确保网络连接正常。同时,还需要注意配置正确的网络参数,如 IP 地址、子网掩码、路由表等,以确保容器能够正确地连接到网络并进行通信。网关是连接两个网络的设备或软件,它负责在不同网络之间进行数据包的转发和路由。没有网关,容器将无法与其他网络或主机进行通信,因此 CNI 网卡也无法正常工作。先删除重建flannel。
2024-04-10 14:06:16
570
原创 [kubernetes]-ubuntu22.04安装k8s1.28
导语:ubuntu22.04.1安装k8s1.28。修改containerd 配置文件。
2024-04-10 14:04:28
376
原创 [kubernetes]-helm 使用lookup判断namespace是否存在
测试 1.有namespace deepwise的时候是创建svc deepwise 2.没有deqpwise的时候创建svc deqpwise。测试下来发现dry-run或者output无法生成yaml内容,只有执行的时候才能验证。应该是默认参数是false的缘故。导语:希望能够在helm安装的时候判断namespace是否存在以便触发不同的操作。这样如果namespace存在helm就不会报错了。
2024-04-10 13:54:38
494
原创 [问题已处理]-linux隐藏ssh版本
导语:漏扫的时候经常需要升级ssh版本,想着能不能用最快的方式通过测试。仅适用于版本号扫描,扫算法的就不行了。同理修改/usr/bin/ssh。
2024-04-10 11:33:31
816
原创 [kubernetes]-k8s1.22下docker运行时swap无法使用的原因
过程是 kubelet->docker-shim->dockerd->containerd->containerd-shim->runc这个过程中因为kernel不支持swapaccount,导致dockerd强制将container级别的cgroup配置为-1container级别的行为在这个方案里,相对偶然,不受kubelet控制最终达成的cgroup效果:kubelet维护的pod级别swap是infinity,container级别是max。
2024-04-10 11:18:40
865
原创 [问题未处理]-镜像导入报错层有问题
测试通过同步docker的image和overlay2这个文件夹后重启docker实现镜像的同步。导语:镜像导入报错层有问题,不管是docker pull还是docker load都不行。但在报错的机器上测试有机器有异常时依旧不能同步成功。
2024-04-10 11:16:33
170
原创 [问题已处理]-k8s1.22无法使用swap
导语:同样的配置kubeadm-config.yaml配置分别在16.04和22.04上初始化1.22(使用docker)后,22.04 无法使用到swap。排查发现22.04需要在 /lib/systemd/system/kubelet.service 中的KUBELET_EXTRA_ARGS添加。备注一下:如果使用了特权模式,容器内会没有/sys/fs/cgroup/memory.swap.xxx这些文件,但是压是可以把swap压上去的。后可以试用swap,重启后也可以使用swap。
2024-04-10 11:07:12
197
原创 [问题已处理]-ingress报错csp
导语:ingress增加了Content-Security-Policy安全规则后前端报csp问题,部分图片没发访问。修改Content-Security-Policy成如下之后恢复正常。故障时增加的相关ingress配置如下。
2024-04-10 10:51:59
279
原创 [问题已处理]-docker build报错make :bin:sh Operation not permitted
导语:在构建docker image的过程中报错make /bin/sh Operation not permitted。最终通过查看install的最终命令如执行。完整Dockerfile如下。
2023-07-12 15:07:05
1566
原创 [golang]-gin支持跨域请求
gin的中间件可以添加到全局, 也可以添加到单个路由上。我之前做了routers分组,没有在main.go里添加,导致部分路由还是提示跨域。导语:记录一下golang gin支持跨域请求。中间件cors.go。添加到main.go。
2023-04-18 10:37:35
1179
1
原创 [golang]-用golang写一个清理异常pod的服务
导语:需要写一个定时清理异常pod的服务。把对应状态为error(ContainerStatusUnknown Evicted Error )的pod直接删除,处于删除状态,但是删除超过15分钟的pod强制删除。链接: https://pan.baidu.com/s/1IDJCn5nuLZnfwRVyFzfw3g?pwd=y2r5 提取码: y2r5。会输出一下对应pod error的原因。–来自百度网盘超级会员v6的分享。
2023-04-18 10:36:15
491
原创 [kubernetes]-k8s调整镜像清理策略
导语:k8s在磁盘使用率到达80%之后开始清理镜像,导致服务重启后镜像被删除。记录一下大致调整的方法。
2023-04-18 10:35:10
2023
原创 [golang]-通过informer来watch k8s资源变更
与此同时,它创建了一个名为informer的Deployment Informer对象,并使用ResourceEventHandlerFuncs处理函数注册了一个回调函数,以接收 Deployment资源的事件通知,并记录这些事件。此示例使用了gin框架来实现基本的HTTP路由。最后,启动这个informer对象的goroutine,开始watch Deployment资源,并等待其缓存变得同步,在HTTP服务器之前完成。导语:记录一下使用informer来watch k8s资源变更。
2023-04-18 10:33:31
385
原创 [kubernetes]-dockerx构建多cpu架构的镜像
导语:偶尔有需求 镜像需要制作amd和arm的不同镜像。发现有buildx这个东西。配置多平台cpu指令集模拟机,让docker支持除当前处理器之外的其他cpu指令集。同时构建x86和arm的镜像。Dockerfile如下。
2023-04-18 10:31:29
320
原创 [linux]-promtail采集系统网络链接行为
导语:跟随大佬的脚本,采集服务器中应用程序的网络链接行为。最终效果是能看到具体某个程序的网络行为日志,展示频繁出现的ip地址。完成了很早之前就想做但没做到的事,记录一下。
2023-04-18 10:31:19
314
原创 [问题已处理]-Unknown desc = RuntimeHandler “nvidia“ not supported
导语:使用runtimeclass时报错Failed to create pod sandbox: rpc error: code = Unknown desc = RuntimeHandler “nvidia” not supported。以docker为运行时的k8s,需要修改handler为docker。查看资料https://opni.io/setup/gpu/
2023-04-17 18:06:43
543
1
原创 [linux]-通过echo命令做端口检查
https://github.com/zq-david-wang/linux-tools/blob/main/misc/tcpportcheck.c 这个更适合端口检查,echo > /dev/tcp/…会建立链接,然后关闭,这样在server端会出发accept操作,对应用来说是有感知的,tcpportcheck.c是参考haproxy的端口检查,在tcp链接建立之前就把链接close掉了,应用无感知。可以通过这个命令在一些没有telnet或者curl命令的环境检测端口。
2023-04-17 18:05:37
1409
原创 [kubernetes]-k8s安装metallb获取tcp source ip
导语:k8s中的pod需要获取tcp请求的source ip。使用metallb作为LoadBalancer,但是有个缺陷。网络设备不支持BGP的话只能用l2的方式。只能达到高可用,无法实现负载均衡。测试了如下情况。A 2台node 4个nginx pod,每个node2个pod,请求通过loadBalancerIP访问。请求只会打到某个node的2个节点上。虽然通过ipvsadm -Ln 查看node上的规则确实有对应loadBalancerIP转到pod ip,但是请求就没打到对应的node上B
2023-04-17 18:04:33
423
原创 [kubernetes]-k8s使用HNC创建vcluster
默认情况下, parent namespace下的所属的Role 和 RoleBinding 对象会传递给 child 命名空间对象。没有继续测试,后续创建secret来控制ns的权限应该就行了吧。看github活跃不太行了。验证下 hnc-child-{1,2} 命名空间下是否能看到相同的 role。导语:k8s使用HNC创建vcluster。记录一下 大致流程。
2023-04-17 17:59:53
173
原创 [问题已处理]-ubuntu重启networking之后路由丢失
导语:服务器通过脚本修改网络ip之后,提供的wifi无法连接。排查后发现是缺少一条路由。这个路由在开机启动的时候会生成,但是通过命令systemctl restart networking 之后就会丢失。可以通过这个命令添加。这样每次重启networking依旧会加上路由。
2023-04-17 17:57:10
861
原创 [问题已处理]-ingress.1.1.1 启动报80端口被占用过
环境信息 k8s.122 ubuntu16.04 nginx-ingress-controller:v1.1.1。docker安装在机械盘,机械盘更换过,且重装过k8s,删除了etcd无法解决。确认过端口没有被其他程序占用。报错及telnet端口的截图如下。尝试更改端口成800,也是报端口被占用。确认过端口并没有占用。导语:服务器重启后nginx-ingress-controller 启动不了 一直提示80端口被占用。看changlog是1.0.0就修复了,之前可能有类似bug。
2023-04-17 17:55:30
1376
原创 [docker]-docker通过 --mount=type=tmpfs 来减小COPY命令层的大小
需要优化docker镜像,原先的cuda是通过将run文件COPY到容器里安装的,COPY这一层占用比较大。因为使用 RUN --mount=type=tmpfs 命令来挂载一个大小为 100MB 的临时文件系统到 /tmp 目录,并在其中执行 touch 命令以创建一个测试文件。size 选项指定临时文件系统的大小,uid 和 gid 选项指定文件系统的用户和组,mode 选项指定文件系统的访问权限。在 RUN 命令执行完成后,临时文件系统将被卸载,其中的数据将不会被保留。适用需要下载或解压的场景。
2023-04-17 17:48:16
544
原创 [问题已处理]-服务器报错没有egl
libglvnd是与供应商无关的调度层,用于仲裁多个供应商之间的OpenGL API调用。它允许来自不同供应商的多个驱动程序共存于同一文件系统上,并确定在运行时将每个API调用分派给哪个供应商。支持GLX和EGL,并与OpenGL和OpenGL ES任意组合。链接: https://pan.baidu.com/s/12pxBc9S_N5_gconZamfBbw?pwd=8lbt 提取码: 8lbt。可以通过对应的文件来测试系统是否已经安装的egl。–来自百度网盘超级会员v6的分享。
2023-04-17 17:46:48
481
原创 [jenkins]-jenkins流水线根据是否是定时触发执行部分stage
导语:jenkins 流水线有个.git比较大的job,还在测试阶段,经常1个多月不部署,导致job里下载的git等被清理。这个 Stage 配置定时构建,即每周一次。其他 Stage 并没有配置构建触发器,所以不会受到定时构建的影响。要在 pipeline 中实现这个功能,您需要在 pipeline 脚本中添加。语句来限制只有指定的模块或路径中的代码更改时才执行对应的构建操作。希望这个示例能够帮助您实现 pipeline 定期构建的需求。希望这个示例能够帮助您实现针对 Stage 的定时构建需求。
2023-04-17 17:43:48
785
原创 [linux]-反弹shell 获取远程服务器权限
导语:反弹shell 获取远程服务器权限。记录一下,感觉挺好玩的。B 攻击的机器 能够暴露5555端口 且端口放行。右边为B机器,已经成功获取A机器的shell权限了。A 被攻击的机器 需要能够访问外网。
2023-03-25 14:13:50
212
原创 [kubernetes]-helm传入参数通过if来匹配不同场景所需
当orgLabel为其他值时,生成org: orgLabel。导语:希望通过helm传入参数来匹配不同场景的内存配置。当orgLabel为空时,则生成org: no-org。当orgLabel为hr时,生成org: hr。测试我想实现的根据参数调整资源限制的方法。修改values.yaml。
2023-03-25 14:11:29
498
原创 [问题已处理]-helm install报错tar Error is not recoverable
导语:今天helm安装的时候 莫名其妙报错一个类似解压的报错。但是我脚本中就一条内容 helm install。查看yaml文件 怀疑是少给hostPath添加。对应有关键字的yaml如下。修改之后确实没有再报错。
2023-03-25 14:01:46
167
原创 [问题已处理]-harbor更新ssl证书
cat docker-compose.yml 对应的证书也需要更新。导语:harbor证书过期更新ssl证书。格式. 否则可能出现401的情况。直接更新harbor数据库密码。遇到的问题:下载下来的证书。
2023-03-25 14:00:37
914
原创 [linux]ubuntu22安装mysql5.7.40
导语:ubuntu22.04 强制安装mysql5.7.40。安装完安装其他apt依赖的时候 可能会造成mysql出问题。最好还是离线环境用。链接: https://pan.baidu.com/s/1ZQtlb2q6fUhi23Zb35NFGg?pwd=09s6 提取码: 09s6。–来自百度网盘超级会员v6的分享。
2023-03-25 13:58:13
1026
bizhub2200P.zip
2020-07-11
觅安教育zabbix4.0个人学习笔记.docx
2019-11-22
mysql的monyog工具,8.8.0版本
2019-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅