Kubernetes
文章平均质量分 81
云原生K8S平台运维,集群管理、日志收集、集群监控、集群存储等学习分享
寻花之梦~~
SRE
展开
-
使用KubeKey 快速交付k8s v1.28.8集群
KubeKey 交付 K8s v1.28.8 高可用集群原创 2024-05-07 18:33:24 · 1264 阅读 · 1 评论 -
k8s部署Kubeflow v1.7.0
Kubeflow原创 2024-05-07 11:31:32 · 375 阅读 · 0 评论 -
k8s crd inferenceservices.serving.kserve.io
ArgoCD无法连接到k8s集群。原创 2024-04-30 17:19:25 · 692 阅读 · 0 评论 -
k8s官方镜像代理加速
k8s官方镜像地址代理加速原创 2023-12-06 22:57:09 · 3620 阅读 · 2 评论 -
【GitOps系列】如何解决 GitOps 的秘钥存储问题?
在实际的业务场景下,出于安全需要,Git 仓库往往会包含下面这些机密信息。镜像拉取凭据的 Secret 对象,它可以为集群提供拉取镜像的权限。外部数据库连接信息。外部中间件如 MQ 连接信息。第三方服务的 API KEY,例如云厂商和短信服务商。在 GitOps 工作流中,这些机密信息都会通过 Kubernetes 对象存放在 Git 仓库,在大部分情况下它们是 Configmap 或 Secret 对象。原创 2023-08-14 17:22:18 · 473 阅读 · 2 评论 -
【GitOps系列】使用 ArgoCD ApplicationSet 来实现多环境管理
开发环境测试环境预发布环境生产环境为了让不同职责的人员在不同的环境下独立工作,我们一般会将不同环境隔离。通常,开发环境主要用于开发人员的日常开发,测试环境则是为测试团队而准备的,预发布是正式发布到生产环境之前的最后一道防线,除了数据以外,应该尽量和生产环境保持一致。当然,对有些团队来说,他们可能还希望开发人员之间相互隔离,也就是为每一个开发者分配一个独立的开发环境,使他们互不干扰。在非云原生技术架构体系下,环境一般是由特定的团队人工维护的。原创 2023-08-05 11:20:20 · 793 阅读 · 0 评论 -
【GitOps系列】如何实施自动化渐进式交付?
在实施金丝雀发布的过程中,我们通过 Argo Rollout 的金丝雀策略将发布过程分成了 3 个阶段,每个阶段金丝雀的流量比例都不同,经过一段时间之后,金丝雀环境变成了新的生产环境。实际上,这也是一种渐进式的交付方式,它通过延长发布时间来保护生产环境,降低了发生生产事故的概率。不过,这种渐进式的交付方式存在一个明显的缺点:无法自动判断金丝雀环境是否出错?这可能会导致一种情况,当金丝雀环境在接收生产流量之后,它产生了大量的请求错误,在缺少人工介入的情况下,发布仍然按照计划进行,最终导致生产环境故障。原创 2023-08-03 22:49:27 · 789 阅读 · 0 评论 -
【GitOps系列】如何实施金丝雀发布?
蓝绿发布是一种通过资源冗余来换取回滚效率的发布方式,结合 Argo Rollout ,能够很方便地实现自动化的流量切换。但是它的缺点也是比较明显的:当新环境准备好之后,流量将进行全量切换, 无法对新环境进行小规模的流量验证。为了更好地了解新环境的性能和潜在的问题,最好的办法是让新的环境接收一小部分生产流量。通常,我们会把一定比例的生产流量转发到新的环境,以此来验证新环境的表现。这种发布方式就叫做金丝雀发布,又叫做灰度发布。原创 2023-07-31 23:05:31 · 629 阅读 · 1 评论 -
【GitOps系列】在 GitOps 工作流中实现蓝绿发布
借助于Argo Rollout 工具实现自动化蓝绿发布。和手动修改 Ingress 策略来实现的蓝绿发布不同的是:它主要是通过自动修改 Service 的选择器来对流量进行切换的。这种方式将蓝绿发布的过程变成了更新镜像的操作,极大降低了蓝绿发布的门槛。原创 2023-07-30 15:20:28 · 407 阅读 · 0 评论 -
【GitOps系列】监听镜像版本变化触发 GitOps工作流
通过引入 ArgoCD Image Updater,我们可以让 ArgoCD 具备自动监控镜像仓库的更新情况能力,一旦工作负载的镜像版本有更新,ArgoCD 就会自动化将工作负载升级为新的镜像版本,并且还可以自动将镜像的版本号回写到 Helm Chart 仓库中,保持应用定义和集群状态的一致性。原创 2023-07-29 00:05:49 · 735 阅读 · 1 评论 -
【GitOps系列】使用 ArgoCD 快速打造GitOps工作流
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.原创 2023-07-27 15:50:48 · 1082 阅读 · 0 评论 -
【GitOps系列】使用Kustomize和Helm定义应用配置
使用云原生相关组件Kustomize和Helm定义应用配置原创 2023-07-20 22:37:24 · 687 阅读 · 0 评论 -
harobr 登录异常‘lookup core.harbor.domain: no such host‘
Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. Harbor, a CNCF Graduated project, delivers compliance, performance,原创 2023-07-15 14:12:36 · 720 阅读 · 0 评论 -
【GitOps系列】自动化构建Image
自动构建镜像的自托管方案:使用 Tekton 来自动构建镜像。Tekton 是一款基于 Kubernetes 的 CI/CD 开源产品,如果已经有一个 Kubernetes 集群,那么利用 Tekton 直接在 Kubernetes 上构建镜像是一个不错的选择。原创 2023-07-14 16:53:43 · 338 阅读 · 0 评论 -
【GitOps系列】K8s极简实战
【GitOps系列】K8s极简实战-基础篇原创 2023-07-14 00:26:13 · 624 阅读 · 0 评论 -
【GitOps系列】从零上手GitOps
通过构建 GitOps 工作流,打造高可用、高并发、自动自愈、可观测的弹性应用架构体系,同时实现环境即代码(Environment as Code)的秒级发布和回滚。让我们开始从零上手 GitOps,感受云原生工程实践之美吧!原创 2023-07-13 20:05:47 · 629 阅读 · 1 评论 -
Zadig v1.16.0升级到v1.17.0
Zadig v1.16.0升级到v1.17.0原创 2023-06-26 18:07:19 · 515 阅读 · 0 评论 -
Kube-OVN组件
Kube-OVN, a CNCF Sandbox Project, bridges the SDN into Cloud Native. It offers an advanced Container Network Fabric for Enterprises with the most functions, extreme performance and the easiest operation.原创 2023-05-01 12:03:31 · 1228 阅读 · 1 评论 -
Kubernetes 部署 StarRocks 集群
StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,就可以用 StarRocks 来支持多种数据分析场景的极速分析。原创 2023-04-11 19:58:03 · 1630 阅读 · 4 评论 -
k8s迁移节点kubelet数据存储目录
默认k8s节点kubelet数据目录在,如果在部署前没有做好规划,其实默认就存储在系统盘/分区下了,这样会导致一个问题,如果数据量过大会导致kubelet服务异常,其次,系统盘下有一些系统服务引用,没有形成解耦,包括后期的容量扩容也会带来影响。所以一般数据存储目录在k8s层面,一定要提前做相关规划,至少要具备可灵活扩展性等。本文主要记录在前期没有做好规划之后,目前容量存储即将到一定的瓶颈期,需要快速进行迁移扩容工作。原创 2023-03-24 15:10:00 · 1120 阅读 · 1 评论 -
ETCD_v3 RESTful API调用
etcd v3 api 调用示例原创 2023-03-19 23:31:15 · 556 阅读 · 0 评论 -
Traefik v2.9-IngressRoute
The Kubernetes Ingress Controller, The Custom Resource Way.In early versions, Traefik supported Kubernetes only through the Kubernetes Ingress provider, which is a Kubernetes Ingress controller in the strict sense of the term.However, as the community expr原创 2023-03-07 21:26:06 · 741 阅读 · 0 评论 -
k8s 调整Node节点 Max_Pods
k8s 设置node最大pod数量 kubelet_max_pods原创 2023-02-20 15:19:33 · 922 阅读 · 0 评论 -
k8s默认StorageClass,解决pvc一直处于“Pending”
K8S 中动态(StorageClass)创建 PVC 时 SelfLink 问题解决原创 2023-02-12 22:44:21 · 3020 阅读 · 0 评论 -
tke平台问题记录
1.Linux-GPU服务器驱动腾讯专栏教程:https://cloud.tencent.com/document/product/560/8048CentOS7.x卸载与安装Nvidia Driver:https://blog.csdn.net/Aaron_qinfeng/article/details/106939938[root@VM-2-2-centos ~]# uname -r3.10.0-1062.9.1.el7.x86_64sudo yum install -y dkms gcc原创 2021-05-27 23:59:13 · 287 阅读 · 0 评论 -
k8s informer内部机制与控制器工作原理
k8s有一个非常核心的组件:”apiserver“ 所有对象的访问都由apiserver去操作,所谓的informer会提供一个list和watch机制(informer在启动以后会发起一个长链接请求apiserver,通常会第一时间list,接下来会watch,监听apiserver对象的任何变化)apiserver是一个json的序列化数据,程序要消费这个数据,则需要反序列化(字符串转换为go对象),上图中Reflector,是通过反射机制实现的,会解析对象的key...原创 2022-07-02 18:20:22 · 836 阅读 · 0 评论 -
Error: “MountVolume.SetUp failed for volume pvc 故障处理
MountVolume.SetUp failed for volume "pvc-668750fa-cc0a-4105-96f3-7fa184db4ada" : rpc error: code = Internal desc = stat /csi-data-dir/database/pv: input/output errorError: "MountVolume.SetUp failed for volume \"pvc-668750fa-cc0a-4105-96f3-7fa184db4ada\"原创 2022-07-02 10:57:28 · 12447 阅读 · 0 评论 -
Volcano 资源预留特性
在实际应用中,常见以下两种场景:(1)在集群资源不足的情况下,假设处于待调度状态的作业A和B,A资源申请量小于B或A优先级高于B。基于默认调度策略,A将优先于B进行调度。在最坏的情况下,若后续持续有高优先级或申请资源量较少的作业加入待调度队列,B将长时间处于饥饿状态并永远等待下去。(2)在集群资源不足的情况下,假设存在待调度作业A和B。A优先级低于B但资源申请量小于B。在基于集群吞吐量和资源利用率为核心的调度策略下,A将优先被调度。在最坏的情况下,B将持续饥饿下去。以上两种场景出现的根因是缺少一种公平原创 2022-06-13 19:27:56 · 502 阅读 · 1 评论 -
Kubernetes高级调度器原理详解
文章目录Kubernetes的调度流程原理与算法详解Kubernetes高级调度算法详解华为云CCE Volcano批量调度算法与应用场景详解本篇文章来自《华为云云原生王者之路训练营》钻石系列课程第3课,由华为云容器批量计算架构师王雷博主讲,为大家深入讲解Kubernetes调度流程原理以及典型调度算法。Kubernetes的调度流程原理与算法详解众所周知,Kubernetes 是为了管理大规模的集群,当集群的计算节点非常多时,如何为pod寻找合适的node,这也是Kubernetes调度器的工作职责转载 2022-05-08 17:43:55 · 592 阅读 · 0 评论 -
如何诊断 Kubernetes 应用程序中的OOMKilled错误
OOMKilled错误表示容器或 pod 已被终止,因为它使用的内存多于分配的内存。首字母缩略词 OOM 代表“内存不足”。OOMKilled,通常称为Exit Code 137,是一种源自 Linux 的错误。OOM(Out of Memory Manager)是 Linux 系统上的一种工具,可以按进程跟踪内存使用情况。如果系统即将耗尽内存,OOM Killer将启动并开始杀死进程,以释放内存并避免崩溃。OOM Killer 的目的是通过杀死尽可能少的进程来释放尽可能多的 RAM。Kubernetes原创 2022-02-24 11:04:31 · 5951 阅读 · 0 评论 -
Kubernetes集群节点异常检测
文章目录k8s生产集群可能存在的问题node-problem-detector故障分类问题汇报策略上手实践使用插件pod启动NPD常见问题排查ssh到内网节点查看日志附生产配置k8s生产集群可能存在的问题基础架构守护进程问题:例如NTP服务关闭硬件问题:CPU,内存或磁盘损坏内核问题:内核死锁,文件系统损坏容器运行时问题:运行时守护进程无响应…当Kubernetes节点发生上述问题,在整个集群中,k8s服务组件并不会感知以上问题,就会导致Pod仍会调度至问题节点,出现业务中断等事件。no原创 2022-02-23 16:35:26 · 1060 阅读 · 0 评论 -
Go使用k8s准入控制器来拒绝Latest镜像标签的yaml创建
文章目录准入控制器注册准入控制器 webhook创建准入控制器服务器部署和测试结语参考链接准入控制器简而言之,Kubernetes准入控制器是管理和强制执行集群使用方式的插件。它们可以被认为是拦截(经过身份验证的)API 请求并可能更改请求对象或完全拒绝请求的看门人。准入控制过程有两个阶段:首先执行变更阶段,然后是验证阶段。Kubernetes 准入控制器阶段:准入控制器是一个软件,它在对象(如 Pod、Deployment、Service 等 k8s 资源) etcd 数据库中持久化之前,但在请转载 2022-02-22 14:46:28 · 537 阅读 · 0 评论 -
深入理解Kubelet
文章目录kubelet架构kubelet管理pod的核心流程Kubelet节点管理Pod管理Pod启动流程kubelet启动pod的流程(细)kubelet架构架构剖析:最上边为API层,有自己的healthz健康检测机制,只读API暴露metrics。子系统有ProbeManager(主要做探活,kubelet作为代理,运行在每个节点,功能有2点:a.上报节点信息,b.接收apiserver指令,控制Pod生命周期),syncLoop组件:watch apiserver,有事件发生时,需要Po原创 2022-02-18 12:00:32 · 3082 阅读 · 0 评论 -
深入理解Kube-Scheduler
调度kube-scheduler负责分配调度Pod到集群内的节点上,它监听kube-apiserver,查询还未分配Node的Pod,然后根据调度策略为这些Pod分配节点(更新Pod的NodeName字段)。调度器需要充分考虑诸多的因素:公平调度资源高效利用QoSaffinity和anti-affinity(亲和性和反亲和性)数据本地化(data locality),适用于大数据领域内部负载干扰(inter-workload interference)deadlines调度器kub原创 2022-02-18 10:39:47 · 1784 阅读 · 0 评论 -
Prometheus Thanos 监控k8s多集群
文章目录简介Kubernetes普罗米修斯技术栈解决方案Thanos简介工作原理多集群架构在Grafana可视化总结简介在本文中,我们将看到Prometheus监控技术栈的局限性,以及为什么演进到基于Thanos的技术栈可以提高指标留存率并降低总体基础设施成本。实践thanos高可用prometheus集群部署参考链接:https://www.cuiliangblog.cn/detail/article/30Kubernetes普罗米修斯技术栈在为我们的客户部署Kubernetes基础设施时,在每原创 2022-02-16 11:42:17 · 1171 阅读 · 0 评论 -
深入理解Kube-APIServer
文章目录API Server访问控制概览访问控制细节认证认证插件API Serverkube-apiserver是Kubernetes最重要的核心组件之一,主要提供以下的功能• 提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等• 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd)访问控制概览Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证、授权以及原创 2022-01-18 18:08:20 · 3766 阅读 · 0 评论 -
使用 MinIO 构建高性能云原生对象存储
文章目录1. MinIO 的应用场景2. MinIO 的系统特点3. MinIO 的基础概念4. MinIO 的安装部署 - 单机5. MinIO 的安装部署 - 分布式6. MinIO 的安装部署 - 多租户7. MinIO 的网页使用8. MinIO 客户端使用9. MinIO Python SDKMinIO 提供开源、高性能、兼容 s3 的对象存储,为每个公共云、每个 Kubernetes 发行版、私有云和边缘云中无缝运行,使其成为混合云和多云对象存储的领导者。Github地址:https://g转载 2022-01-07 14:45:43 · 760 阅读 · 0 评论 -
Volcano Scheduler组件
文章目录简介工作流ActionsenqueueallocatepreemptreclaimbackfillPluginsgangconformanceDRFnodeorderpredicatespriority配置如何查看Volcano scheduler的配置简介官网链接:https://volcano.sh/zh/docs/actions/Volcano Scheduler是负责Pod调度的组件,它由一系列action和plugin组成。action定义了调度各环节中需要执行的动作;plugin根原创 2021-12-21 21:27:31 · 958 阅读 · 1 评论 -
Kubernetes增强型调度器Volcano算法分析
【摘要】 Volcano 是基于 Kubernetes 的批处理系统,源自于华为云开源出来的。Volcano 方便 AI、大数据、基因、渲染等诸多行业通用计算框架接入,提供高性能任务调度引擎,高性能异构芯片管理,高性能任务运行管理等能力。[作者:tsjsdbd]1.为什么K8S需要Volcano K8S自带的的资源调度器,有一个明显的特点是:依次调度每个容器。但在AI训练或者大数据,这种必须多个容器同时配合执行的情况下,容器依次调度是无法满足需要的。因为这些计算任务包含的容器们想要的是,要么转载 2021-12-16 21:00:51 · 689 阅读 · 0 评论 -
containerd 架构及高级技巧
文章目录如何在 ctr 中使用 containerd使用 ctr 处理容器镜像使用ctr处理容器如何使用容器与nerdctl如何使用容器与crictlcontainerd是一个高级容器运行时,又名容器管理器。简单来说,它是一个守护进程,在单个主机上管理完整的容器生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。Containerd被设计成可以很容易地嵌入到更大的系统中。Docker使用containerd来运行容器。Kubernetes可以通过CRI使用containerd来管理单个节点原创 2021-12-09 20:07:43 · 910 阅读 · 0 评论