![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kubernetes
文章平均质量分 55
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
这个作者很懒,什么都没留下…
展开
-
解决helm部署报错Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress
参考github上的issues:https://github.com/helm/helm/issues/8987,我们可以使用以下操作。在使用helm install 或者helm upgrade的时候,如果出现了异常中断操作, 可能会导致如下报错。那么问题来了,如何解决这个问题呢?转载 2024-06-28 10:39:56 · 35 阅读 · 0 评论 -
K8S问题排查-基于海光CPU的服务器环境部署K8S集群失败问题
对比发现,异常服务器的BIOS版本是Version: 3.07.09P01,而正常服务器的BIOS版本是Version: 5.19,基本确认是BIOS版本差异导致。根据错误日志CRNGT failed查找相关资料[1],发现有人遇到相同的错误,原因是使用的AMD Ryzen 9 3000 系列CPU存在bug,导致RNRAND 在某些 BIOS 版本中无法正确生成随机数,解决方法是升级BIOS版本。经沟通确认,该环境之前安装的版本没有问题,最新的版本才出现。升级BIOS的版本。转载 2024-06-04 15:15:32 · 57 阅读 · 0 评论 -
Registration of the raw container factory failed: inotify_init: too many open files
【代码】Registration of the raw container factory failed: inotify_init: too many open files。原创 2024-05-24 17:54:20 · 195 阅读 · 0 评论 -
failed to request 1 IPv4 addresses. IPAM allocated only 0
参考链接:https://github.com/projectcalico/calico/issues/2713。原创 2023-11-22 10:15:40 · 197 阅读 · 0 评论 -
image-syncer
一个简单、易用的批量镜像迁移和镜像同步复制工具,支持几乎所有目前主流的基于搭建的镜像存储服务,例如ACR、Docker、Hub、Quay、自建Harbor等,目前已经初步经过了TB级别的生产环境镜像迁移验证特性支持多对多镜像仓库同步支持基于 Docker Registry V2 搭建的 docker 镜像仓库服务 (如 Docker Hub、 Quay、 阿里云镜像服务 ACR、 Harbor等)同步只经过内存和网络,不依赖磁盘存储,同步速度快。原创 2023-05-26 15:37:36 · 1062 阅读 · 0 评论 -
gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0镜像拉取失败
【代码】gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0镜像拉取失败。原创 2023-05-14 18:01:32 · 676 阅读 · 0 评论 -
etcd v3使用示例
指定某个键的值。如果给定的键不存在,则创建一个新的键值。如果给定的键目录不存在,则创建一个新的键目录。创建一个键目录。如果目录不存在就创建,如果目录存在更新目录TTL。原创 2023-04-18 00:38:26 · 770 阅读 · 1 评论 -
etcd启动过程梳理
对配置参数转换 并开启监听 然后开始etcdserver.NewServer 分析新建Server的过程。可以看到项目的启动文件在./server下。如果传递了参数 可以以proxy启动。初始化完成后,开始正式进入启动流程。原创 2023-04-18 00:33:13 · 484 阅读 · 0 评论 -
etcd概述
etcd 是云原生架构中的基础组件,由 CNCF 孵化托管。etcd 在微服务和 kubernetes 集群中不仅可以作为服务注册中心用于服务发现,还可以作为 key-value 存储中间件etcd 是 CoreOS 团队与 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单键值对存储:将数据存储在分层组织的目录中,如同 在标准文件系统中。原创 2023-04-18 00:31:03 · 554 阅读 · 0 评论 -
性能调优之 ETCD
请注意,大多数云服务器或者云存储提供并发 IOPS 而不是顺序 IOPS,提供的并发 IOPS 可能比顺序 IOPS 大 10 倍。为了测量实际的顺序 IOPS,建议使用磁盘基准测试工具,如。其中 nice 值可以由用户指定,默认值为 0,root 用户的取值范围是[-20, 19],普通用户的值取值范围是[0, 19],数字越小,CPU 执行优先级越高。: 因为主机重启或者容器重启后,容器中进程的 PID 会发生变化,所以建议把以上命令放在系统的启动脚本中(比如 Ubuntu 的。原创 2023-04-17 22:55:01 · 798 阅读 · 0 评论 -
openshfit etcd备份恢复
usr/local/bin/cluster-backup.sh /home/backup/ (后面的/home/backup/为备份文件存放的目录,可自定义 )随机进入一个etcd的pod;使用 etcdctl endpoint status ,返回值有true的就是etcd leader节点。//使用上面两个命令检测etcd和kube-apiserver是否已正常停止,然后将etcd的存储目录也移动到/tmp目录。原创 2023-04-17 22:46:44 · 137 阅读 · 0 评论 -
kubelet无法启动:more than 8 NUMA Nodes
kubelet启动报错。原创 2023-04-15 20:52:29 · 152 阅读 · 0 评论 -
kubelet残留孤儿pod(Orphaned pod)无法删除
记录kubelet残留孤儿pod(Orphaned pod)无法删除的问题分析和解决方法。转载 2023-04-13 10:24:43 · 1518 阅读 · 0 评论 -
prometheus基本介绍
prometheus属于一站式监控告警平台,依赖少,功能齐全支持对云或者容器的监控,其他不洗头主要针对主机监控数据查询表现力更强大,内置更强大的统计函数在数据存储扩展性和持久性不如InfluxDB、OpenTSDB、Sensu好。原创 2023-04-12 08:17:46 · 600 阅读 · 0 评论 -
k8s部署Ceph
为了将Ceph部署到K8S集群中,可以利用。原创 2023-04-11 20:37:15 · 1426 阅读 · 0 评论 -
Prometheus 的优雅关闭
用找到运行的 Prometheus 进程号使用来关闭。原创 2023-04-10 11:09:42 · 395 阅读 · 0 评论 -
API 优先级和公平性(APF)
目前apiserver默认的限流方式太过简单目前k8s缺少客户端业务请求隔离,一个错误的客户端发送大量请求可能造成其他客户端请求异常,也不支持突发流量。原创 2023-04-06 19:51:42 · 974 阅读 · 0 评论 -
client-go开发示例
【代码】client-go开发示例。原创 2023-04-03 23:25:04 · 430 阅读 · 0 评论 -
k8s API限流——server级别整体限流和客户端限流
使用BasicLongRunningRequestCheck检查是否是watch或者pprof debug等长时间运行的请求,因为这些请求不受限制,位置。但是如果请求的group中含有 system:masters,则放行, 因为apiserver认为这个组是很重要的请求,不能被限流.调用入口: staging\src\k8s.io\apiserver\pkg\server\config.go。client-go默认的qps为5,但是只支持客户端限流,只能由各个发起端限制。原创 2023-04-03 17:44:16 · 747 阅读 · 0 评论 -
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (xxxxx vs. 419430
执行kubectl describe node xxxxx:报错:原因kubelet与cri-o通信,cri-o返回信息大小超过grpc的限制kubelet无法与cri-o通信,导致内部大量错误出现超过的根源在于容器数量过多,grpc返回信息过大,从而你超过了限制,无法正确返回。查看GRPC Buff块大小,扩大至8MB。扩大方法参考假如已经是8MB,仍然报错,则可能是镜像等docker资源需要清理。可以执行为了根除此类错误,可以在节点上设置完善的Garbage Collection机制。原创 2023-04-03 15:53:18 · 900 阅读 · 0 评论 -
kubelet 客户端证书轮转失败certificate has expired or is not yet valid
默认情况下,kubeadm 使用 /etc/kubernetes/kubelet.conf 中指定的 /var/lib/kubelet/pki/kubelet-client-current.pem 符号链接来配置具有自动轮换客户端证书的 kubelet。如果此轮换过程失败,您可能会在 kube-apiserver 日志中看到诸如。7. 确认节点已经变成Ready。6 . 重启kubelet。原创 2023-04-02 08:54:15 · 260 阅读 · 0 评论 -
kube-apiserver启动流程源码分析
KubeAPIServer 主要是提供对 API Resource 的操作请求,为 kubernetes 中众多 API 注册路由信息,暴露 RESTful API 并且对外提供 kubernetes service,使集群中以及集群外的服务都可以通过 RESTful API 操作 kubernetes 中的资源。原创 2023-03-29 08:30:11 · 666 阅读 · 0 评论 -
pod中容器进程频繁oom,产生大量僵尸进程,怎么解决
需要保证僵尸进程数量不增长,评估僵尸进程占用内存大小,占据PID数目影响大小影响。副作用可能是ps等操作因为进程多会慢一点,对业务影响有限,可以暂时不重启。参考链接: https://www.baeldung.com/linux/clean-zombie-process。使用tiny管理进程方式进行僵尸进程回收。原创 2023-03-23 03:41:10 · 223 阅读 · 0 评论 -
client-go dynamic包
用于动态生成informer/lister/client等。原创 2023-03-21 22:10:51 · 486 阅读 · 0 评论 -
client-go discovery包源码解析
discovery包主要用来发现服务器支持的API组、版本和资源的方法,及服务端支持的api。原创 2023-03-19 05:27:48 · 670 阅读 · 4 评论 -
client-go源码-applyconfigurations
用于构建服务端 Apply(类似于kubectl apply 但是kubectl的是客户端),通过源码看起来和kubernetes/api的各种类型和结构相似。原创 2023-03-15 23:59:19 · 147 阅读 · 0 评论 -
client-go源码包总览
applyconfigurations包用于构建服务端 Apply requests(类似于kubectl apply 但是kubectl的是客户端)discovery包用于发现服务器支持的API 组、版本和资源的方法及服务端支持的swagger apidynamic包用于动态生成informer/lister/client等informers包用于生成各种gvk对应的informer(注意这里这是针对原生k8s的对象)kubernetes包生成原生k8s的对象的client,用于访问k原创 2023-03-15 23:58:13 · 158 阅读 · 0 评论 -
client-go dynamicClient解析
dynamicClient为各种类型的资源都提供统一的操作API,资源需要包装为Unstructured数据结构内部使用了Restclient与kubernetes交互;原创 2023-03-15 01:04:08 · 410 阅读 · 0 评论 -
基于kube-ipam与Multus实现Web和数据库分层网络安全访问架构
Kube-ipam支持给kubernetes集群中的Pod固定IP地址。一些场景往往对IP地址有依赖,需要使用固定IP地址的Pod,可以使用kube-ipam轻松解决这类问题。例如,mysql主从架构的时候,主database与从database之间的同步;例如keepalived做集群HA的时候,两个节点之间检测通信等;例如某些安全防护设备,需要基于IP地址进行网络安全访问策略限制的场景等。Multus-CNI支持同时添加多个网络接口到kubernetes环境中的Pod。原创 2023-03-08 23:57:46 · 159 阅读 · 0 评论 -
kube-ipam和calico配置使用说明
kubelet配置and。原创 2023-03-08 23:58:14 · 538 阅读 · 0 评论 -
kube-ipam配置和使用说明
一些场景往往对IP地址有依赖,需要使用固定IP地址的Pod,可以使用kube-ipam轻松解决这类问题。例如,mysql主从架构的时候,主database与从database之间的同步;例如keepalived做集群HA的时候,两个节点之间检测通信等;例如某些安全防护设备,需要基于IP地址进行网络安全访问策略限制的场景等。原创 2023-03-08 23:57:29 · 566 阅读 · 0 评论 -
容器原理(搞懂 layerID,diffID,chainID,cache-id 是什么)
这样做的好处是可以根据diffID检查layer文件的完整性,并且可以让相同diffID的layer文件被不同镜像共享。通过上面的一些探索,我们已经知道了镜像是由多个layer组成的文件,并在容器启动时成为容器文件系统的运行环境——只读的rootfs。Docker镜像的文件内容和一些运行容器的配置文件组成了Docker容器的文件系统运行环境——rootfs。联合挂载技术可以在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统将会包含整合之后的各层的文件和目录。转载 2023-03-07 02:30:00 · 453 阅读 · 0 评论 -
containerd启动过程
dockerd 是 docker engine 守护进程,dockerd 启动时会启动 containerd 子进程,dockerd 与 containerd 通过 rpc 进行通信ctr 是 containerd 的 clicontainerd 通过 shim 操作 runc,runc 真正控制容器生命周期,启动一个容器就会启动一个 shim 进程shim 直接调用 runc 的包函数,shim 与 containerd 之前通过 rpc 通信。原创 2023-03-07 02:24:18 · 999 阅读 · 0 评论 -
containerd pull过程分析
注:在上面拉取镜像时可以通过 ctrl+c 中断下载,保持未完成状态,这样可能到下载过程数据断点续传的机制,这也就是 content 服务 ingest 实现。原创 2023-03-07 02:20:05 · 572 阅读 · 0 评论 -
docker中镜像各ID之间的关系和计算-layerID-diffID-chainID-cacheID的计算
Overlay2比overlay更加高效,因为overlay2优化了inode的利用。layerID和diffID的对应关系在diffid-by-digest和v2metadata-by-diffidchainID主要存在于/var/lib/docker/image/overlay2/layerdb/sha256/,cacheID主要存在于/var/lib/docker/overlay2/转载 2023-03-07 02:18:36 · 353 阅读 · 0 评论 -
docker imageID计算
docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面,都是一些以sha256sum计算文件内容得出的哈希值的文件。parent包含了最高层的chainID,也就是说通过最高层的chainID,再找其真正的cache-id,发现里面有init-id、mount-id、parent三个文件。init-id存储了init层的编号,和mount-id一致。原创 2023-03-07 02:17:53 · 364 阅读 · 0 评论 -
kubectl mac安装以及zsh自动补全
【代码】kubectl mac安装以及zsh自动补全。原创 2023-03-02 01:35:55 · 75 阅读 · 0 评论 -
IPVS: rr: TCP xxxxxX - no destination available 问题优化
参考 :https://github.com/Tencent/TencentOS-kernel/commit/fe66d659f44e13c0e1c007782309d79c987b4788。可以参考腾讯的 sysctl参数控制输出。原创 2023-02-02 10:37:58 · 4361 阅读 · 0 评论 -
k8s-向资源添加subresources
要为资源Group/Version/Kind创建子资源,请从根目录运行以下命令(例如包含glide.yaml的命令)创建,包含子资源类型的定义创建,包含rest接口实现创建,包含一个简单的测试来调用子资源并确保它返回 200更新,将子资源注释指令添加到资源在创建子资源下面的代码告诉代码生成器怎样为此资源生成一个子资源在bar/status下使用Status请求类型通过go类型实现Status和BarStatusREST位于版本化包中(与版本化资源定义相同)翻译 2023-01-02 08:52:31 · 591 阅读 · 0 评论 -
kube-apiserve log:authentication handshake failed: x509: certificate has expired or is not yet valid
【代码】kube-apiserve log:authentication handshake failed: x509: certificate has expired or is not yet valid。原创 2022-12-30 14:55:34 · 769 阅读 · 0 评论