自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

runzhliu大数据/容器日记

记录一些工作中碰到的大数据/容器计算的问题

  • 博客(286)
  • 收藏
  • 关注

原创 博客转站了~

由于 CSDN 的博客功能经常有问题…所以把博文站点搬迁到 https://www.runzhliu.cn/ 欢迎订阅、评论!

2022-09-27 17:09:03 547 1

原创 cilium-agent远程debug

通过远程 debug,来分析 cilium-agent 是如何在容器创建的时候定义容器网络接口。

2024-02-22 22:42:25 361

原创 cilium-agent的DaemonSet启动流程

本文主要分析 cilium-agent 作为 DaemonSet 在每个节点的启动流程。根据以上的分析,可以总结一下,在 Kubernetes 集群内部的节点下,启动 cilium-agent 的二进制之前需要执行下面的脚本。# config# /hostbin是一个非常临时的目录# /hostproc相当于/proc。

2024-02-01 18:06:11 941

原创 Jupyter-Notebook无法创建ipynb文件

用户反馈在 Notebook 上无法创建 ipynb 文件,并且会返回以下的错误。

2024-01-18 10:11:13 864

原创 【大模型】大语言模型语料下载

大模型训练中语料是非常重要的,目前公网上有各种各样的语料可以供下载,但是不可能每个用户、每次训练任务都通过公网去拉取语料,因此我们需要在语料平台上为用户提前下载并且注册一些需要的语料,通过语料平台维护一些公用的语料。鉴于语料下载的多样性,目前下载公网上的语料一般会先把语料下载到国外的服务器,然后再上传到华为云的 obs,最后再在 IDC 环境的服务器上将 obs 的数据下载到 CephFS 的语料目录(要求这台机器需要有外网以及挂载CephFS的权限)。

2023-11-12 10:16:07 900

原创 程序员网页版工具集合

本文主要收集一下作为程序员经常会用到的一些小工具网站。

2022-09-18 12:35:17 1060

原创 Mac安装sshpass

Mac 使用新版本 brew 安装 sshpass 已经不 work 了,经过一翻检索之后,总结下面的方法来安装 sshpass。另外可以配置一下 ssh 的 config,这样可以在开发过程中登录服务器的时候少打几个字,之后正常使用。下载 sshpass,本地编译安装。,就可以一键登录带密码的服务器了。......

2022-08-27 10:18:37 1418

原创 Flannel host-gw 和 vxlan

Flannel 的安装逻辑如下,通过安装的 yaml 文件里有两个 initContainer,专门就是用来做 CNI 和 Flannel 配置的安装,所以命名也是叫 install-cni-plugin 以及 install-cni。的日志已经说的非常明白了,这里调整的路由是将某个节点的 ip 作为某个子网的网关,因此数据包不需要封包,就可以直接路由到这个节点上,另外就是由于。是不需要的,因为容器的网络栈只会让容器的数据包发到 cni0 这个设备上,至于后面是走。, 在同样的机器上进行测试,实测结果。..

2022-08-26 15:33:29 1672

原创 kubeadm系列-04-静态Pod的镜像是怎么来的

使用过 kubeadm 来创建集群的老铁应该知道,像 kube-apiserver, kube-controller-manager, kube-scheduler 这些组件是通过静态 Pod,也就是 Static Pod 来启动的,那么也许我们会好奇,这些镜像是怎么下载的,不妨看下 kubeadm 的代码分析一下如果按常理想用 或者 看不到的话,可以换通过 和 是可以看到的拉取镜像逻辑下面的代码是 Kubernetes 1.21.7 的代码,这个版本还是 Dockershim 保留的版本,如果

2022-07-05 10:32:29 151

原创 kubeadm系列-03-静态Pod的创建

上节提到执行 之后,会在机器上启动 ,实际上在 controlplane 节点上还会启动像 kube-apiserver, kube-controller-manager, kube-scheduler 甚至还有 etcd,那么这些进程又是怎么被启动的呢,下文会做简单的分析关于 Static Pod 是怎么启动的,这里需要复习一下 Static Pod 的相关内容,简而言之,默认情况下放在 目录下的文件都会被当成 Static Pod,被 kubelet 启动,而上述提到的这些组件的 manifest

2022-07-05 10:08:43 293

原创 kubeadm系列-02-kubelet的配置和启动

不管是在 control plane 节点还是在普通的 worker 节点,kubelet 是必须要启动的进程,而 kubelet 的安装方式可以用 rpm 包也可以用二进制关于 里关于 kubelet 启动的日志,复习一下默认的配置对于默认配置,我们可以不用每个参数都非常了解,可以有需要的时候再去查相关的文档和代码drop in配置kubelet 有一些特殊的配置文件需要注意一下,不明白的可以查看官方文档在不用那些包管理器的情况下,徒手装的文档可以参考这里kubelet 真正被启动的逻辑在下面的

2022-07-05 01:39:05 3075

原创 kubeadm系列-01-preflight究竟有多少check

我们知道 的过程中会进行很多 preflight 的检查,这些主要是指内核参数、模块、CRI 等环境的检查,如果有哪些配置不符合 Kubernetes 的要求,就会抛出 Warning 或者 Error 的信息,下面就是 preflight 的主要逻辑如果有 diy 的 check 需求,可以在代码里继承这个接口进行扩展,下面举个 check 的例子,很明显 是对 CRI 也就是容器运行时进行的检查而真正起到检查的作用是下面这个函数,其实就是宿主机执行一下 ,并且接收其返回,老铁们不妨在宿主机上直接

2022-07-04 10:51:54 247

原创 kubeadm系列-00-overview

Kubernetes 1.24 是正式弃用Dockershim 的版本,本文主要描述一下安装 Kubernetes 1.24 + containerd 1.6.6 作为 CRI 的集群,主要是采用包管理器的方式来安装,安装的流程也可以参考官方文档在 1.24 的版本,安装的时候可能会遇到这个奇怪的问题, 把这俩参数关掉就好机器初始化的配置如果是公有云的,这些配置可能会跟公有云本身的机器和系统初始化自带的一些软件和镜像有关,所以下面这些命令并不一定100%全,当然,如果缺什么软件或者配置的话,后面执

2022-07-04 10:47:11 792

原创 centos8内核升级

腾讯云的轻量服务器,安装了 Centos 8 Stream 系统,查看内核版本太低了点,因为最近研究 和 ,所以内核必须在 5.2 以上,所以需要手动操作一下重启机器,再次检查,内核已经更新到最新版了

2022-06-20 12:45:32 1594

原创 centos8只安装containerd不安装docker

随着 kubernetes 1.24 的 Release,dockershim 是正式被弃用了,这就意味着未来我们大概率是离开 Docker 越来越远的,本文只要描述一下只想在机器上安装 containerd 而不想安装 docker 相关的软件的过程下面是用 Docker 的源来安装 containerd,没错,Docker 有给官方的源来安装 containerd,因为本身 Docker 也用了 containerd,但是这个源并非 containerd 项目自身提供的安装过程上述过程只安装了 co

2022-06-20 12:42:31 439

原创 K8S ETCD Keeper

原生的 etcd-keeper 需要 etcd 开 auth 模式,但是 k8s 的 etcd 如果开启了 auth 是有可能有问题的(亲测有问题),为了观察 etcd 的 kv 所以小改了一下这个项目,增加了一个 的参数,可以允许 etcd-keeper 通过 tls 的模式连接 k8s 的 etcd 集群。Refer:效果如下:...

2022-06-07 11:09:51 307 1

原创 用k8s搭建一个带有文件管理功能的私有yum源

Overview项目地址在 https://github.com/runzhliu/yum-with-browser目的是解决在k8s集群里一些yum源的问题。为什么会有这个问题呢,因为通常来说k8s集群都只有集群网络,并不能直接通Internet,甚至是公司的LAN都不一定能通。所以有些同学在使用k8s部署应用的时候,尤其是把k8s当成虚拟机来用的同学,会觉得装软件很麻烦,因为通常的流程可能是只能在Dockerfile里就把需要安装的软件安装好,比如vim,curl之类的。这个项目没有什么代码,

2022-05-25 16:38:09 298

原创 通过Pod在k8s母机执行yum install

一些特殊的工作负载,需要提前在集群母机上部署一些软件,比如一些特殊的存储或者是网络插件等,如果不考虑 k8s 的方式,一般的操作可能是通过 ssh 命令,对远程主机执行 yum install 之类的操作。在测试 Longhorn 的时候,看到 Longhorn 的文档 有提供一个 DaemonSet 来完成 iSCSI 的配置。但是 DaemonSet 有个问题就是容器会不断重启,所以个人更期望是通过一个 Job 来完成这样的操作,所以大概改造成下面的例子的样子。原理其实也不是太复杂,在特权容器内,通

2022-05-12 15:49:37 656

原创 关于新装的服务器无法通过ctrl-r搜索命令

最近来了一批新的机器,交给运维同学重装之后,发现每次登录都没法通过 ctrl-r 来检索历史命令,每次操作都非常蛋疼。于是简单了解了一下 ctrl-r 是通过 .bash_history 文件来记录历史命令的,所以遇到类似情况,可以考虑一下是不是这个文件超过了预定义的大小或者命令超出行数了,但在我这里都不是这个问题,主要还是这个文件的属性,导致 root 在操作的时候,都无法记录命令到这个文件,相关的处理可以看看下面的命令。# ll -h /root/.bash_history-rw------- 1

2022-04-27 15:29:33 1386

原创 k8s集群外部域名dns解析问题

Overview业务在机器学习的 GPU 集群访问集群外部域名的算法模型报超时原因分析查看了 coredns 的监控和日志,均没有发现异常,通过 ping harbor.fql.com 分析回包非常慢,而且频繁超时,于是抓包,发现 harbor.fql.com 添加了 search 域,因为本身域名只有三位,k8s 的 DNS 的 ndots 默认是5位,所以肯定会添加 search 域去解析域名的默认配置下的 Pod,ndots 为 5解决方案由业务容器通过 Pod 的 dnsConfig 自

2022-04-26 21:46:49 2132

原创 k8s容器离线安装pstree

一般场景下,容器网络都只有局域网内,无法跟 Internet 交互,如果这时候想安装一下命令的时候,简单地通过系统的 apt-get install 或者 yum install 是无法下载到公网的依赖的,除非使用局域网内的源地址,但是所有的这些都不方便呢?唯一方面就是允许用户在本地通过 kubectl 进入 pod,比如想要安装 pstree,那么可以先提前在网上把对应系统版本和架构的安装包下载到本地自己的开发环境,然后通过 kubectl cp 把下载到的安装包 cp 到 Pod 内,再在 Pod 内进

2022-04-18 17:21:09 296

原创 容器化dubbo多网卡问题

因为公司 k8s 容器集群的网络模式的问题,在 MacVlan 下,Pod 内会有两个网卡出现,Pod IP 是 eth0,MavVlan IP 是 eth1,然而 Dubbo 框架在选择网卡的时候会默认拿到 eth0,这样就会有一些网络问题,例如把 Pod IP 注册了,但是流量无法和集群外的网络互通。走读了一下 Dubbo 的代码,发现 isPreferredNetworkInterface 这个函数的配置是可以帮助 Dubbo 获取期望的网卡的,具体就是给 Dubbo 启动的时候加上一个参数 dub

2022-04-05 12:11:51 2251

原创 Rancher FileOrCreate的问题

最近在 Rancher 集群上部署一个应用的时候,因为使用了 Hostpath,并且创建了一个文件,按照 FileOrCreate 的模式创建的,常理来说,如果母机上没有这个文件,应该是可以创建出来的,但是在 Rancher 的集群上部署的时候就出了一个比较奇怪的情况,预期的文件,竟然变成了文件夹,一开始以为是参数有问题,反复看了几遍官方文档,感觉还是没啥问题。于是检索一下相关的 issue,果然发现了 HostPath volume type: FileOrCreate creates a directo

2022-04-04 10:34:19 479

原创 busybox和busybox镜像是什么

很多人用 busybox,但是不是很多人能说出来 busybox 是个什么东西。用过 busybox 镜像的同学都知道,busybox 没有 curl,另很多习惯用 curl 的同学会有点不习惯,然后会找各种 yum, apt-get, apk 等这些常见的 Linux 发行版的软件包管理工具会安装,但是最终都是徒劳的…因为 busybox 里压根就没有这些,唯一能做的,可能就是不用 curl,该用 wget 好了。这样自然大家都会有疑问,为什么会没有 curl,又为什么装不了,本文就简单的给大家做个介

2022-03-25 19:09:54 1892 1

原创 配置zsh的prompt

这里主要是指你有多个云主机,为了避免误操作,最好打开 zsh 的时候,能够显示 ip,否则操作了哪个都不知道,可以参考下面这个方法。https://github.com/ohmyzsh/ohmyzsh/issues/5686#issuecomment-267233821效果如下。...

2022-03-20 16:11:35 1085

原创 夜莺nightingale helm charts部署

Overview因为 nightingale 官方没有提供 Helm Charts,这里根据团队实现的方式,提供了一个比较简单,容易理解的 Helm 包,nightingale-helm 可以参考下面的部署命令进行部署,细节主要参考 values.yaml 文件,很多配置,包括告警脚本都是通过 ConfigMap 来挂载到容器的,注意一下逻辑。因为nightingale需要依赖MySQL和Redis,所以提供了容器化的数据库来进行部署,数据库的初始化是通过k8s Job来实现的,同时也支持外部存储告

2022-03-20 10:49:06 995

原创 腾讯云服务器安装oh-my-zsh

在服务器上安装 zsh 和 oh-my-zsh 本身不是什么难的事情,不过因为国内网络环境的问题,很多东西总是事与愿违,然后公有云厂商也很少把方法贴出来,就很麻烦,反正搜官方文档也搜不太出来,除了自己做代理,还有更省事的方法吗?推荐大家使用 Gitee 极速下载 / oh-my-zsh, 这个应该是我目前看到最方便的方法了。...

2022-03-19 14:46:41 648

原创 rockermq-operator的问题查找

因为公司内有使用 RocketMQ,在做容器化的时候,在 Github 社区了找到了一个已经不太维护的项目 rocketmq-operator, 当然也在 Dockerhub 找到了 apacherocketmq/rocketmq-operator 这个镜像,但是在对比了一下 Github 仓库的 tag 和 Dockerhub 上的这个 0.3.0-snapshot 的镜像,发现 Github 上还没有打标签,大概看了一下代码,估计是 Dockerhub 上的代码是停留在这个 commit 了。正好在测

2022-03-19 08:21:23 1111

原创 【个人感悟】一些软件版本的问题

因为容器的流行,现在用镜像部署应用、中间件的公司越来越多了,但是在使用公共的镜像的时候,需要注意一些小问题。举个例子,项目 A 在 Github 上已经不是很活跃了,假设这个项目上最后一个 tag 是0.2.0,但是在 dockerhub 上搜索镜像的时候,有可能会发现到 0.3.0,这样的镜像,这里的原因可能很复杂,可能是这个项目本身就不太活跃,维护者就几个人,大家在打镜像的时候,忘记给仓库代码版本也打标签了,又或者反过来,但是作为使用者,在不了解仓库的发展和历史的前提先,也尽量不要直接使用 docke

2022-03-16 15:14:19 358

原创 【Goland】文件类型

Goland 是支持通过文件名来识别文件类型的,就像我们经常编写的 Dockerfile,对

2022-03-10 08:59:18 616

原创 【Goland】Protoc Buffers插件问题

作为 Goland 的付费用户,Protocol Buffers 插件在 import 之后不能找到源文件,如下图,很难接受,于是尝试看了下配置的问题。最后发现,下面这个是默认的配置,因为我的 GOPATH 不太一样,因为自定义的东西多了,可能这个自动发现没有生效,于是取消了,手动指定到需要的文件夹。来看看最后能够成功找到源文件的界面,舒服多了。...

2022-03-04 11:44:24 733

原创 【Homebrew】Mac安装node报错

下面是通过 brew install node 执行,但是报错了。➜ /tmp brew install node==> Downloading https://mirrors.ustc.edu.cn/homebrew-bottles/bottles/libuv-1.42.0.monterey.bottle.tar.gzcurl: (22) The requested URL returned error: 404Warning: Bottle missing, falling back

2022-02-28 11:05:27 3919 2

原创 【Docker】Mac本地运行MySQL容器报错

chown: changing ownership of '/var/lib/mysql/': Operation not permitted如果启动容器之后,发现容器不断地在重启,然后看看退出的容器的日志,不断的刷这个日志,一般都是因为给 MySQL 容器挂了本地目录作为 Volume,但是权限又不够,可以看看 Docker For Mac 的设置部分,给对应的目录加上 File Sharing 即可。...

2022-02-27 21:06:36 1738

原创 swag parseDependecy太慢的问题

下面是使用 swag v1.7.9 构建接口文件的耗时,可以看到因为添加了一些额外的类型,比如 datatypes.JSON,所以需要用到 parseDependency 和 parseInternal,构建时间一共花了四五分钟,在项目开始,频繁修改接口格式的时候,这是很难接受的。# swag init --parseDependency --parseInternal2022/02/23 10:26:44 Generate swagger docs....2022/02/23 10:26:44 Ge

2022-02-23 10:36:31 955 3

原创 【k8s】事件中心的设想

文章目录@[toc]众所周知 k8s 的 event 存活的时间并不长,因为都会存到 etcd 里的,所以不能一直存着,所以如果在排查问题的时候,想找找之前的 event,那就必须有旁路的组件逻辑去采集。但是采集完之后,我们是需要考虑具体的业务场景的可用性的,比如 event 并不带 label,所以很多资源对象的信息其实没有存,数据结构来说比较简答,下面是一个 k8s 1.18 集群上拿到的一个日志格式。{ "apiVersion": "v1", "items": [

2022-02-16 11:54:11 743

原创 swagger, swag, gin-swagger之间的关系

很多人不太理解 swagger, swag, gin-swagger 的关系,本文简单总结一下。swagger 可以理解成一个用于生成、描述和调用RESTful接口的服务,也就是我们经常见到的swagger页面,可见的文件格式就是swagger.json, swagger.yaml之类的接口描述文件swag 可以理解成是一个用Go写的一个将Go的注释转化成上述说的swagger接口的描述文件的工具gin-swagger gin是一个Go写的Web框架,但是不提供接口文档工具,所以gin-swagge

2022-02-14 11:19:23 448

原创 【Git】不同步大文件

因为经常在家办公,所以在家和公司各有一台电脑,因为我是用 Goland 来记笔记的,所以家和公司需要随时同步到笔记内容,不管是自动还是手动。关于同步的方法我用的是 git,并且在 github 上创建了一个 private 的仓库来做中间不同的工具。但是使用 git 的时候往往会有一些问题,比如大文件,我并不想用于同步,因为这样会让 git 仓库变得非常巨大,拉取速度会变得很慢,所以需要将大文件忽略掉,也就是写入 .gitignore 文件里,那么可以执行下面的命令,找出你不想同步的最小文件的大小即可。

2022-02-12 10:19:13 412

原创 【Go】goproxy设置

国内用户如果出现 go mod download 无法下载依赖的,执行下面的命令。go env -w GOPROXY="https://goproxy.cn, direct"

2022-02-12 09:13:05 1971

原创 【Goland】软件常规更新

本文主要讲一下Goland的日常更新众所周知 Goland 是 JB 旗下的主要写 Go 的 IDE,很多同学下载了试用版或者购买了 License 之后,就一直用到天荒地老,其实这样会错过很多重要的功能和 Bug 修复的,本文就举个例子比如 Goland 的一个问题,需要通过更新最新版才能修复的情况,来解释一下及时更新的重要性。如下图,这个红色的波浪线,对于强迫症来说不能忍,但是为什么之前的 Goland 不会针对这个 panic(err) 的用法报错,现在报错呢。这个问题,其实之前就有人反馈.

2022-02-07 11:00:40 7184

原创 【Longhorn】能否部署到专用的节点,业务使用其他节点

Longhorn 作为分布式存储,当然是有点复杂的…作为集群的使用者,当然会有一种想法就是能否在集群中只用几个节点部署 Longhorn,万一出问题了,不影响用户在节点上的其他工作负载。然而理想很美好,现实往往就不如人意了,可以阅读一下下面的文章. 虽然文章提出了可以在几个节点上部署 Longhorn 的组件,看起来是满足我们的需求,但是实际上还有一句话。Longhorn components are only deployed on node-1, node-2, and node-3. Workl

2022-01-25 17:39:40 1535

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除