自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海鸥

在网络的世界里留下彩色印记

  • 博客(129)
  • 问答 (1)
  • 收藏
  • 关注

原创 k8s处于pending状态的原因有哪些

调度器问题:调度器无法为Pod找到合适的节点进行调度,可能是由于节点资源不足或调度策略配置不当引起的。资源不足:集群中的资源(如CPU、内存)不足以满足Pod所需的资源请求,导致Pod无法调度。安全策略:集群中的安全策略限制了Pod的创建或调度,导致Pod处于Pending状态。镜像问题:Pod所需的镜像无法下载或加载,可能是镜像地址错误或网络问题导致的。网络问题:Pod所需的网络插件没有正确配置或运行,导致Pod无法正常创建。存储问题:Pod所需的存储卷无法正确挂载到节点上,导致Pod创建失败。

2024-05-31 10:15:28 345

原创 在 Dockerfile 中遇到了连接到 pypi.org 超时的问题

看起来你在 Dockerfile 中遇到了连接到 pypi.org 超时的问题。这可能是由于网络连接问题导致的。其中 `https://pypi.douban.com/simple/` 是豆瓣的 Python 包镜像。尝试上述方法中的一种或多种,通常可以帮助你解决连接超时的问题。希望这些方法能够帮助你成功构建 Docker 镜像!这样可以帮助 Docker 在访问 pypi.org 时通过代理服务器。

2024-05-23 11:05:27 376

原创 k8s 节点压力驱逐(Node Pressure Eviction)

上面的配置只有硬驱逐策略,无软驱逐策略。节点压力驱逐(Node Pressure Eviction)是 Kubernetes 的一种机制,用于帮助集群维持稳定性和可靠性。kubelet 会监控集群节点的内存、 磁盘空间和文件系统的 inode 等资源,当这些资源的使用到达指定阈值(固定值或百分比)的时候,kubelet 将主动终止 Pod 以回收节点上资源。节点压力驱逐是 kubelet 主动终止 Pod 以回收节点上资源的过程。

2024-05-21 17:47:21 930

原创 云计算概念与架构设计介绍

云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算资源共享。在云计算架构中,通常会采用分层的设计思路,将计算资源划分为不同的层次,每个层次负责不同的功能和任务。例如,常见的云计算架构通常包括以下几个层次:物理层虚拟化层平台层应用层在上述云计算架构中,各个层次之间通过API(应用程序接口)进行通信和协作。

2024-05-13 10:23:58 725

原创 云原生概念简介

所以"云原生"可以简单的理解为:“一个应用系统借助云计算相关的周边技术进行设计研发,从而使该应用能完美的适配云上环境”。云原生计算基金会总经理Priyanka Sharma对云原生的解释为:“云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性的技术,这样做是为了快速满足客户的需求”。而官网(CNCF)上则将云原生的定义概况为:服务网格、声明式API、不可变基础设施、微服务、容器这五大特征,这也成了很多人对云原生的基础印象。云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。

2024-05-11 15:22:42 569

原创 k8s 日常维护命令简介

此命令列出了 kubectl 当前连接的k8s集群中所有可用的 api 资源(不同k8s集群可能由于集群版本不一样或存在用户自定义的api和资源从而会有所差别)。每个api资源代表了集群中的一种对象类型(如Pod、Service、Deployment等),从这里可以查看支持的api资源名称、简写(如果有)、是否是命名空间级别的资源等信息。-c 选项指定要查看的容器名称,--tail 选项指定要输出最后多少行日志(默认从头打印所有日志),-f 选项指定保持一直监听日志输出。可以看查看 pod 中有哪些容器。

2024-04-30 13:03:23 655

原创 Longhorn简介

Longhorn将不会停止卷,即使由于环境限制,例如没有足够的磁盘空间、不兼容的磁盘标签等,它不能保留附加卷的本地副本(工作负载)。“默认情况下,Longhorn工作负载的优先级与集群中的其他pods相同,这意味着在节点压力的情况下,例如节点耗尽内存,Longhorn工作负载将与其他pods的优先级相同。请注意,此设置仅设置系统管理组件的优先级。“当降级的卷中至少有一个失败的副本卷时,这个以秒为单位的间隔决定Longhorn为了重用失败副本的现有数据而不是直接为这个卷创建一个新副本最多需要等待多长时间。

2024-03-27 11:21:07 909

原创 关于k8s中 storageclass 的 is-default-sc 默认存储设置

取决于安装模式,你的 Kubernetes 集群可能和一个被标记为默认的已有 StorageClass 一起部署。这个默认的 StorageClass 以后将被用于动态的为没有特定存储类需求的 PersistentVolumeClaims 配置存储。例如,它配置的存储可能太过昂贵。如果它们中有两个或多个被标记为默认,Kubernetes 将忽略这个注解, 也就是它将表现为没有默认 StorageClass。删除默认 StorageClass 可能行不通,因为它可能会被你集群中的扩展管理器自动重建。

2024-03-13 10:15:23 1101

原创 在K8S中Longhorn存储

Longhorn 是用于 Kubernetes 的轻量级、可靠且功能强大的分布式块存储系统。Longhorn使用容器(containers)和微服务()实现分布式块存储。Longhorn为每个块设备卷()创建一个专用的存储控制器(), 并跨存储在多个节点上的多个副本同步复制该卷。存储控制器()和副本(replicas)本身是使用 Kubernetes 编排的。

2024-02-27 11:05:39 1206 1

原创 mkfs.ext4 --- 对磁盘设备进行Ext4格式化

使用多大的块大小,需要根据你的系统综合考虑,如果系统用作邮件或者新闻服务器,使用较大的块大小,虽然性能有所提高,但会造成磁盘空间较大的浪费。lazy_itable_init=0/1 inode表不完全初始化 (挂载时由内核在后台初始化) // 40TG mount后50M写初始化55分钟 (格式化时:20s,强制初始化时:7min) (mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 )创建文件系统时,可以指定块的大小。用于resize2fs。

2024-02-27 09:54:00 2755

原创 Kubernetes的五大开源存储项目

OpenEBS 是一个开源的容器化存储平台,它是专为 Kubernetes 设计的,旨在提供可靠且易于管理的持久化存储解决方案。LongHorn 是 Kubernetes 的开源、轻量级分布式块存储框架,它将你的块存储分成 LongHorn 卷,并使用微服务和容器实现分布式块存储。Ceph 是一种开源的存储解决方案,提供堆存储、块存储和对象存储。在Kubernetes中,关于数据的持久化管理是一种挑战,对此,社区提供了多种存储的解决方案,这些方案旨在简化和优化容器化应用程序的持久化数据管理。

2024-02-26 09:36:46 713

原创 在k8s中,使用DirectPV CSI作为分布式存储的优缺点

利用 DirectPV,你可以将相应的 PV 直接与节点上的物理存储设备(如磁盘)进行绑定,而无需通过网络存储服务(如 NFS 或 Ceph)来提供存储。这种直接访问物理卷的方式,有助于提高性能和降低延迟。综合来看,使用 DirectPV CSI 可以在一定程度上提升性能,简化部署和管理,但也需要权衡其局限性,特别是在动态性和灵活性方面。综上所述,结合 DirectPV 和 Minio 集群需要密切关注数据可靠性和系统可用性,设计和实施相应的容错和恢复策略可以帮助你更好地应对硬盘和节点故障。

2024-02-18 15:33:18 669

原创 minio: expand decommission pools in argocd

【代码】minio: expand decommission pools in argocd。

2024-02-07 14:18:46 775

原创 convert docker run command to kubectl for one time execution 将docker run命令转换为kubectl一次执行

当Pod中的容器运行某些已完成的进程时,就会出现此问题。当其容器退出时,Pod完成。在Pod中连续运行容器是更常见的。shell 会被强制退出,关于如何保持 shell 打开的任何想法?或如何在死之前将bash命令传递给它?执行一个任务,该环境是我正在使用Kubernetes处理的环境。同样,我可以在K8S群集中运行busybox镜像。尝试运行一个docker镜像一次,以使用流行的。无法使该mc客户端以与上一个示例相同的方式工作。解决此完整问题的方法是保持容器运行。

2024-02-07 14:07:52 181

原创 Minio Decommission Server Pools

Minio Decommission Server Pools。

2024-01-11 13:33:14 418

原创 minio server pool 的特点小结

是目前minio 官方推荐的集群扩容方案,使用上简单,算是做到了真的集群扩容能力,操作简单,维护成本并不是很大。

2024-01-11 13:16:59 454

原创 minio 集群扩容

minio扩容

2023-12-25 16:42:37 1601

原创 argocd: Replace Resource Instead Of Applying Changes

但是在argocd的界面上显示有点异常,还不知道如何解决。但这也是目前job/workflow有变更时,则应用自动完成更新部署的。

2023-12-07 10:18:19 84

原创 helm部署报错Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress

输入helm history 命令检查当前状态, 我们会发现,最近的一次部署结果是pending-upgrade 所以阻塞了我们的继续部署。再去使用helm upgrade命令,就可以正常的升级了,升级之后,我们通过helm history 也可以检查到升级成功。回退之后,再检查一次当前状态,确认状态信息是回退到正确版本,且部署正确。使用helm rollback命令回退上一个正确的版本。

2023-12-01 08:46:49 632

原创 Docker容器资源限制 CPU / 内存 / 磁盘

在一台物理机上启动了多个docker容器时,就需要对内存及cpu做出相关的限制,以达到容器互不影响的目的。

2023-11-30 10:13:12 487

原创 argo workflow生成不同的名称

这将生成一个类似于 `my-workflow-2022-01-01T12:34:56Z` 的名称,其中 `2022-01-01T12:34:56Z` 是创建工作流的时间戳。通过在 `metadata` 部分的名称中添加这些变量,每次运行工作流时都会生成一个不同的名称。要实现在每次运行 Argo Workflow 时生成不同的名称,可以通过在名称中添加一个随机数或时间戳来实现。同样的名称则再次运行时会报错。这将生成类似于 `my-workflow-12345` 的名称,其中 `12345` 是一个随机数。

2023-11-29 15:24:26 99

原创 linux shell中set -e命令的作用

set -e 的用途是在脚本中进行错误处理和控制流程。通过设置set -e,可以确保脚本在遇到错误时能够立即停止执行,而不会继续执行可能会导致更严重错误的命令。set -e 是一个在shell脚本中常用的命令,它的含义是在脚本执行过程中,如果出现任何一个命令的执行结果不是零(即命令执行失败),则立即退出整个脚本。并不适用于所有情况。在某些情况下,您可能希望在命令失败时继续执行脚本。在这种情况下,您可以使用set +e命令来禁用set -e选项。这意味着,如果脚本中的任何命令失败,整个脚本都将立即停止执行。

2023-11-29 14:38:53 440

原创 jenkins pipeline 运行超时后强制停止

要在Jenkins Pipeline中设置超时,并在超时后强制停止运行,可以使用Jenkins Pipeline的timeout指令。在上述示例中,Pipeline定义了三个阶段(Build、Test和Deploy),每个阶段都有相应的步骤。在Jenkins中,Pipeline是一种用于定义持续集成/持续交付(CI/CD)流程的工具。有时候,Pipeline的执行可能会超时,需要强制停止。如果Pipeline的执行超过了1小时,Jenkins将自动终止该Pipeline的执行,并将其标记为超时。

2023-11-29 09:30:26 1508

原创 Jenkins中强制停止停不下来的job

Jenkins 的提供了 script console 的功能,允许你写一些脚本,来调度 Jenkins 执行一些任务。我们就可以利用 script console 来强制停止 job 执行。script console 路径:manage jenkins -> manage nodes -> master -> script console。运行后,就会发现,原来停不下来的 job,已经停止执行了!) → 脚本命令行(script console)系统管理(manage。

2023-11-14 09:40:15 2054

原创 在k8s中,CronJob 和 Job 的 Pod 退出保留时间

在k8s中job中停留的时间参数

2023-04-25 16:38:21 1156 1

原创 Containerd 配置 Proxy

containerd proxy

2023-03-13 14:53:35 744

原创 使用git pull文件时和本地文件冲突时…(Please commit your changes or stash them before you merge.)

git stash

2022-11-18 09:59:18 861

原创 Dockerfile多阶段构建(multi-stage builds)

dockerfile multi-stage builds

2022-10-28 13:20:44 3824

原创 Argo rollout 是生产环境下部署的利器

Argo rollout 是生产环境下部署的利器

2022-09-21 09:45:50 406

原创 在containerd,将 ‘ctr image‘ 转换成 ‘crictl image‘

在containerd,将 'ctr image' 转换成 'crictl image'

2022-09-20 09:43:34 2830

原创 Docker、containerd的小结

Docker、containerd的小结

2022-07-11 10:07:24 2297

原创 helm2 与 helm3

彻底删除helm chart

2022-06-23 20:34:42 545

原创 Argo Workflows

Argo Workflows是一个开源项目,为Kubernetes提供container-native工作流程,其主要通过Kubernetes CRD实现的。

2022-05-22 18:05:07 372

原创 git push 常见用法

git push 命用于从将本地的分支版本上传到远程并合并。git push的配对方式默认设置:就是本地与远程的配对simple是默认本地只与一个进行根性mtching是默认远程的全部被更新!我们现在默认的是simple了!!!!!配对:git branch --track 本地分支 远程分支 把本地分支与远程分支进行对接$ git config --global push.default matching# 或者$ git config --global push.default ..

2022-05-03 21:08:45 1089

原创 Minikube入门

什么是Minikube? Minikube是一种轻量化的Kubernetes集群,是Kubernetes社区为了帮助开发者和学习者能够更好学习和体验k8s功能而推出的,借助个人PC的虚拟化环境就可以实现Kubernetes的快速构建启动。目前已支持在macOS、Linux、Windows平台上利用各类本地虚拟化环境作为驱动运行。官方文档:minikube start | minikubeGithub地址:https://github.com/kubernetes/minikube M...

2022-05-01 21:33:44 2141

原创 在Jenkins上配置kubernetes环境

一、安装Kubernetes插件二、根据k8s配置文件config生成认证文件(1)找到config文件,默认是在/root/.kube/config(2)获取/root/.kube/config中对应内容并转化成base64 encoded文件# grep certificate-authority-data /root/.kube/config |cut -d" " -f 6 | base64 -d > ca.crt# grep client-certificate-d

2022-04-18 10:52:31 1138

原创 Kubernetes中查看用户的token并验证

kube-dns查看token#查看所有账号kubectl -n kube-system get sa取得secretskubectl -n kube-system get sa kube-dns -o yaml 取得secrets#secrets值为kube-dns-token-rst6j取得tokenkubectl get secrets kube-dns-token-rst6j -n kube-system -o yaml取得token值kubectl get secret k

2022-04-15 20:56:12 1987

原创 k8s用ServiceAccount Token的方式访问apiserver

在kubernetes集群,可以登陆到master集群,可以使用私钥证书的方式访问。证书路径:master的/etc/kubernetes/pki/(ca.crt / apiserver.crt / apiserver.key) 下面。# server是apiserver公网访问地址curl --cacert ca.crt --cert apiserver.crt --key apiserver.key https://$server/api这里再介绍一下使用ServiceAccount T

2022-04-15 20:05:18 2612

原创 通过kubeconfig文件生成证书,用curl访问Kubernetes API server

Kubernetes是一个完全基于API的系统。使用curl或Postman等简单工具,在构建应用程序之前获取API信息更方便。1、从查看 kubectl 的配置文件开始,需要:三个证书和 API server 的地址# cat /root/.kube/config 2、我们将会把证书设为环境变量,在设置时候请检查每一个参数。我们从 client-certificate-data 开始。export clientcert=$(grep client-cert ~/.kube/confi

2022-04-15 16:47:26 2038 1

原创 K8S 证书过期解决办法

问题现象K8S集群证书过期后,会导无法创建Pod,通过kubectl get nodes也无法获取信息,甚至dashboard也无法访问。查看K8S的日志:Part of the existing bootstrap client certificate is expired: 2021-06-10 06:29:04 +0000 UT这是说明k8s使用的证书过期了,k8s自带证书是一年的有效期。所以我们解决问题的办法就是更换证书。一、确认K8S证书过期时间查看k8s某一证书过期时间:

2022-04-14 15:03:57 14148 6

空空如也

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

TA关注的人

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