- 博客(80)
- 收藏
- 关注
原创 【云原生|Kubernetes】15-Kubernetes的污点和容忍详解
污点(Taint)是指标记节点的一种机制,用于告诉 Kubernetes 集群这个节点上的 Pod 是有问题的,例如某些节点资源已经不足等。当节点被标记为污点时,Kubernetes 调度器将不会将新的 Pod 分配到这个节点上,除非这个 Pod 明确地声明了它可以容忍这个节点上的污点。污点通常用于保证某些节点上运行的应用程序不会被新的 Pod 占用。 容忍度(Toleration)是指告诉 Kubernetes 集群一个 Pod 可以容忍哪些节点上存在的污点。
2023-08-21 16:28:12
2112
5
原创 【云原生|Kubernetes】14-DaemonSet资源控制器详解
在 Kubernetes 中,DaemonSet 是一种用于在节点上运行指定的 Pod 的控制器(Controller)。与 ReplicaSet 或 Deployment 不同,DaemonSet 不是为了扩展 Pod 数量而创建的,而是为了在每个节点上运行一个实例或多个实例的 Pod。 DaemonSet 通常用于在 Kubernetes 集群中运行一些系统级别的服务或者网络代理,例如日志收集器、监控代理、网络插件等。
2023-08-09 09:15:57
1520
原创 【云原生|Kubernetes】13-Deployment资源控制器详解
kubernetes中有很多资源控制器,这些资源控制器我们只说一些重要且常用的。在介绍Deploymen之前,我们会逐个介绍这些控制器。 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性一个 Deployment 为Pod和ReplicaSet。
2023-07-11 09:38:06
2822
2
原创 【云原生|Kubernetes】12-容器生命周期的回调(PreStart和PreStop)
我们知道,K8S可以在应用容器启动之前先执行一些预定义的操作,比如事先生成一些数据,以便于应用容器在启动的时候使用。这种方式可以通过init container技术实现。那么事实上,在实际生产中,还有一种需求,就是我们需要在应用容器启动后执行一些初始化操作,比如设置容器的dns参数等,说到这里就不得不多提一句,k8s到目前为止尚不支持通过为kubelet添加参数的方式为应用容器设置dns的options。
2023-07-05 09:18:23
2561
原创 【云原生|Kubernetes】11-ConfigMap解析
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。ConfigMap 并不提供保密或者加密功能。如果你想存储的数据是机密的,请使用Secret, 或者使用其他第三方工具来保证你的数据的私密性,而不是用 ConfigMap。 在使用参数时,你可以定义在 ConfigMap 的data。
2023-06-26 16:55:43
3279
7
原创 【云原生|Kubernetes】10-Namespace的cpu和内存的请求与限制
以下是配置命名空间的cpu和内存的默认值,以及最大,最小值metadata:spec:limits:- default:cpu: 1cpu: 0.8max:cpu: 2min:cpu: 0.6显示如下pod中的容器不指定cpu,内存的限制和请求时,将使用命名空间设置的默认值;pod中的容器只设置cpu或者内存的请求时,容器的 CPU 和内存的限制被设置为命名空间的默认 CPU CPU 和内存限制值;pod中的容器只设置cpu或者内存的限制时。
2023-06-13 20:52:07
2907
9
原创 【云原生|Kubernetes】09-Pod的CPU和内存的请求与限制
在 Kubernetes 中,请求(request)和限制(limit)是用于管理容器资源的两个重要概念。请求是指容器所需的资源量,可以视为容器启动时保证其正常运行所需的最小资源量。例如,如果一个容器需要 1 个 CPU 和 256MB 内存才能运行,那么可以在 Pod 的容器定义中设置这些资源的请求。请求资源将确保在 Kubernetes 集群中为该容器分配足够的资源量,以便可以正常运行。限制是指容器能够使用的最大资源量。
2023-06-12 08:35:00
2757
4
原创 【云原生|Kubernetes】08-Pod中的Init容器
Init 容器是一种特殊容器,在 Pod内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。你可以在 Pod 的spec中与用来描述应用容器的containers数组平行的位置指定 Init 容器。Init 容器的状态在字段中以容器状态数组的格式返回 (类似字段)。
2023-06-07 17:33:51
1805
6
原创 【云原生|Kubernetes】07-Pod健康检查和服务可用性检查
这篇文章介绍如何给容器配置存活(Liveness)、就绪(Readiness)和启动(Startup)探针。Exec探针: Exec探针是一种通过在容器内部运行命令并检查其退出代码来检测容器是否处于活动状态的Liveness存活探针;http探针:HTTP存活探针是一种用于检测Web服务器是否处于活动状态的探针;TCP探针:TCP存活探针是一种用于检测TCP端口是否处于活动状态的探针;有时候,会有一些现有的应用在启动时需要较长的初始化时间。
2023-05-28 21:45:36
1333
1
原创 【云原生|Kubernetes】06-Pod的生命周期和重启策略
从 API 服务器处获得的 YAML 通常包含一些创建 Pod 所用的 YAML 中不存在的行,这是正常的。从 API 服务器处获得的 YAML 通常包含一些创建 Pod 所用的 YAML 中不存在的行,这是正常的。 接下来就要检查的是 API 服务器上的 Pod 与你所期望创建的是否匹配 (例如,你原本使用本机上的一个 YAML 文件来创建 Pod)。Pod在整个生命周期中被系统定义了各种状态,熟悉Pod的各种状态对于理解如何设置Pod的调度策略,重启策略和排查pod的启动异常事很有必要的。
2023-05-26 18:28:02
1386
5
原创 【云原生|Kubernetes】05-Pod的存储卷(Volume)
Volume 是Pod 中能够被多个容器访问的共享目录。Kubernetes 中的Volume 概念、用 途和目的与 Docke 中的 Vo lume 比较类似,但二者不能等价, 首先 Kubernetes 中的Volume 被定义在 Pod上 ,被一个 Pod 里的多个容器挂载到具体的文件目录;其次, Kubernete 中的 Volume与 Pod 的生命周期相同,但与容器的生命周期不相关, 当容器终止或者重启,volume 中的数据也不会丢失;
2023-05-23 21:09:38
1595
5
原创 【云原生|kubernetes】04-解决kubectl无法tab补齐指令
【代码】【云原生|kubernetes】04-解决kubectl无法tab补齐指令。
2023-05-17 21:05:42
378
原创 Linux上开启coredump
如果系统默认的 core dump 文件大小不够大,可以设置core dump的大小,这将设置 core dump 文件的最大大小为无限制。可以编写一个简单的 C 语言程序,让它崩溃并生成 core dump 文件。是 core dump 文件的保存路径;core.%e.%p.%t是保存的文件名。工具可以分析 core dump 文件,查看程序崩溃的原因。指定了 core dump 文件的最大大小,指定了 core dump 文件的名称模板,是生成的 core dump 文件。是程序的可执行文件,
2023-05-17 21:04:43
2946
原创 【云原生|Kubernetes】03-Pod详解
Kubernetes的资源文件有很多如pod,Deployment,DaemonSet,ReplicaSet,Cronjob,job,StatefulSet,ConfigMap,PVC,Seceret。学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作;后面我们将逐个介绍这些资源类型;本章我们详细说说-Pod在 Kubernetes 中,Pod是最小的可部署的单位,它是一个或多个容器的集合,它们共享同一个网络命名空间和存储卷。
2023-05-17 21:04:06
1714
原创 【Ansible-roles实战】02-centos7.x部署kubernetes集群
本文章主要是通过ansible roles全自动化部署kubernetes v1.21.9版本集群,集群为3节点,1节点master,2节点node。主要是为了熟悉ansible-roles和ansible的模块,也可以用于部署k8s测试环境,无其他实际作用。以下都是在该roles中用到的相关模块,记录一下,方便后续查询。run_once是一个用来控制任务在整个Playbook中只运行一次的选项。这个选项可以被用于任何任务或者是模块中,以确保该任务或者模块只会在整个Playbook执行过程中的一次运行。
2023-05-15 22:06:35
720
原创 【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群
前面简单介绍了Kubernetes的相关架构及其组件,这一章节我们将介绍如何快速搭建Kubernetes的集群,这里我们将使用官方支持的用于部署 Kubernetes 的工具—kubeadm。主机名ip地址节点类型系统版本centos7.xnode1centos7.xnode2centos7.x在所有节点上安装kubeadm,kubectl,kubelet。kubeadm: 安装kubernetes集群的安装工具,(安装master和node上的组件)
2023-05-04 15:35:07
2175
原创 【云原生Kubernetes】01-Kubernetes简介
我们在说Kubernetes之前已经详细说了docker的相关内容,在说docker的时候,大多数情况下都是在单机使用,这显然不符合实际生产需求,因此需要使用集群,前面说过docker官方的多机编排docker-swarm,接下来我们将说另外的容器多机编排系统-Kubernetes。Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,可促进声明式配置和自动化。它有一个庞大的、快速发展的生态系统。Kubernetes 服务、支持和工具广泛可用。
2023-04-27 17:18:40
2052
1
原创 关于Linux中PAM(Pluggable Authentication Modules)限制说明
是一个配置文件,用于管理Linux系统中的PAM(Pluggable Authentication Modules)限制。PAM限制是一种机制,用于限制用户或进程在系统上使用的资源,例如CPU时间、内存、文件描述符等。通过编辑文件,您可以定义在系统上应用的PAM限制规则,以确保系统资源得到最佳使用。
2023-04-26 09:36:53
913
原创 【云原生|Docker】14-Dokcer Harbor高可用部署
在上一篇【云原生|Docker】12-Docker Harbor企业级镜像管理中,我们简要说明了单机版本harbor的配置以及部署方式。然而这种单机部署显然无法满足在生产中需求,必须要保证应用的高可用性。双主复制多harbor实例共享后端存储在镜像打tag和上传的时候,此时tag需要指定nginx的ip或者域名前端配置nginx的复制之后,在push打镜像的时候,可以会提示如下错误:个错误提示表明您的请求实体太大,已经超过了 Nginx 的限制。
2023-04-22 17:00:09
699
原创 【云原生|Docker】13-Docker-compose详解
前面我们在说Dokcer Harbor企业级仓库管理的时候,我们使用的就是docker-compose来启动相应的容器的,Docker-compose作为一款单机编排工具在工作中使用的还是非常多的;这一章我们将一起探讨下docker-compose的使用。 Docker Compose是一个定义和运行多容器应用的单机编排工具。通过Docker Compose你可以使用一个单一的YAML文件来配置多个应用服务,通过一条命令,就可以将所有配置的服务全部启动起来。
2023-04-16 20:24:28
2090
6
原创 【云原生|Docker】12-Docker Harbor企业级镜像管理
上一章节我们介绍了Docker的官方的镜像仓库–registry,由于官方的仓库太过简单,因此并没有广泛应用在企业的实际生产环境中,这章节我们将着重介绍Harbor企业级镜像管理。Docker registry的一些缺陷:缺少认证机制,任何人都可以随意拉去和上传镜像,安全性缺少;缺乏镜像管理机制,镜像可以push不能删除,日积月累占用空间会越来越大;缺乏相应的扩展机制。 Harbor由 VMware 公司中国研发中心云原生实验室原创,并于 2016 年 3 月开源。
2023-04-13 22:14:10
1060
原创 【云原生Docker】11-Docker镜像仓库
前面我们所有的docker操作,使用的镜像都是在docker官方的镜像仓库下载,当然这并不是什么问题。然后再实际工作中我们更加倾向于使用自建的docker仓库,主要是因为方便管控,也能储存自定义的不可公开的镜像。docker官方就给我们提供了私有仓库解决方案。本将主要介绍:docker官方registryDocker Registry是一个官方开源的Docker镜像仓库,用于存储和分发Docker镜像。它允许用户将自己的Docker镜像上传到一个中心仓库,以便其他人可以方便地下载和使用这些镜像。
2023-04-11 21:58:36
801
原创 【云原生Docker】10-Docker网络-flannel介绍
上一章节介绍了Docker网络的几种模式,其中包括bridge,host,none,container,自定义等几种网络模式。同时我们也介绍了如何让同一宿主机上的Docker容器相互通信,本章节将着重介绍Dokcer容器的跨主机通信,已经跨主机通信的关键网络插件flannel。容器直接使用宿主机的网络,这样天生就可以支持跨主机通信。虽然可以解决跨主机通信问题,但这种方式应用场景很有限,容易出现端口冲突,也无法做到隔离网络环境,一个容器崩溃很可能引起整个宿主机的崩溃。
2023-04-07 15:40:32
812
原创 【云原生Docker】09-Docker网络详解
当项目大规模使用 Docker 时,容器通信的问题也就产生了。要解决容器通信问题,必须先了解很多关于网络的知识。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker 同样有着很多不完善的地方,网络方面就是 Docker 比较薄弱的部分。因此,我们有必要深入了解 Docker 的网络知识,以满足更高的网络需求。
2023-04-05 16:47:04
1227
1
原创 【云原生Docker】08-Docker存储
Docker 存储是指 Docker 容器中用来保存数据和文件的机制。在 Docker 中,容器本身是临时的,当容器停止或删除时,容器中的数据和文件也会被清除。因此,为了持久化保存容器中的数据和文件,我么就需要使用Docker的存储机制。Type: bind绑定挂载是将宿主机上的目录或文件挂载到容器中的目录,从而实现容器中的数据和宿主机上的数据共享。绑定挂载使用 -v 或 --mount 参数来指定要挂载的宿主机目录和容器目录。
2023-04-02 21:32:29
1301
4
原创 【Linux基础】sed使用介绍
主要介绍sed的基础用法,便于后续使用过程中进行查阅。`sed` 是 Linux 和其他类 Unix 操作系统上的一个非常常用的文本处理工具,它的名字来自于 "流编辑器"(Stream Editor)的缩写。`sed` 可以通过命令行参数、正则表达式和命令来处理文本数据,包括文本替换、删除、插入、截取等操作,它可以用于各种文本处理任务,如文本转换、数据抽取、格式化输出等。`sed` 通常用于处理文本数据流,它会逐行读取输入文件,并根据命令对每一行进行处理,然后输出结果。
2023-04-02 11:09:16
721
原创 【云原生|Docker】07-Entrypoin与Cmd的区别
这一章节我们将再次服务型CMD和ENTRYPOINT的用法,已经详细介绍CMD和ENTRYPOINT的使用区别,同时也通过实用场景来介绍CMD与ENTRYPOINT的结合使用。 entrypoint(入口)才是真正用于定义容器启动以后的执行体的,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数。ENTRYPOINT 在运行时也可以替代,不过比 CMD 要略显繁琐,需要通过 docker run 的参数 --entrypoint来指定。
2023-03-29 13:33:39
413
1
原创 【云原生|Docker】06-dokcerfile详解
上一章我们介绍了镜像的基础操作和如何使用docker commit的方式来制作一个镜像,从我们制作openssh的镜像过程可以看出commit的方式显然不是最优的,然而docker官方给我们推荐dockerfile才是我们工作中最常用的镜像制作方式。这篇文章我们将详细介绍dockerfile的使用。Dockerfile是一种文本文件,它包含了一系列用于构建Docker镜像的指令和参数。
2023-03-25 11:21:55
1336
1
原创 【云原生|Docker】05-容器镜像管理
容器的镜像管理分为两个部分,一个是镜像的操作及镜像制作,另一个是镜像仓库的操作。本章我们将展开说说容器镜像的基础和镜像制作(docker commit 和dockerfile),这章主要介绍docker commit的构建功能,关于dockerfile的构建方式我们会在后面专门拿几个章节来介绍。
2023-03-22 16:35:11
589
1
原创 【云原生|Docker】04-docker的资源限制
用户内存限制就是对容器能使用的内存和交换分区的大小作出限制;主机运行若干容器,每个容器都需要cpu、内存以及IO资源,为避免因为单个容器占用过多资源而影响到所有其他容器乃至整个宿主机的性能,因此需要对容器资源进行限制。
2023-03-20 09:44:17
1717
原创 【云原生|Docker】03-docker的基础操作
容器的命令操作分为三大块,分别为:Common Commands,Management Commands,Swarm Commands。本章主要介绍容器的启动,停止,镜像的上传,下载,这几个方面来说docker的操作命令。
2023-03-17 21:32:17
1489
1
原创 【云原生|Docker】02-docker镜像加速器
使用容器时一般需要首先下载一个容器镜像,例如Docker Hub官方提供的MySQL、WordPress等容器镜像。然而由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。
2023-03-15 19:51:34
684
原创 【云原生|Docker】01-docker简介
Docker最初是dotCloud公司的一个内部项目,诞生于 2013 年初,由google公司开源的Go语言开发。Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。docker-io:docker早期版本,支持到1.13,在centos 6.x系统上只能使用docker-io。
2023-03-12 18:09:05
1603
1
原创 [Linux基础]history相关的环境变量设置
Linux中 history 命令主要用于显示历史指令记录内容, 下达历史纪录中的指令。读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。
2023-03-10 09:58:43
2136
1
原创 [Ansible系列]ansible roles
在Ansible中,role是将playbook分割为多个文件的主要机制。它大大简化了复杂playbook的编写, 同时还使得它们非常易于复用。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。
2023-03-01 17:29:28
693
原创 [Ansible系列]ansible JinJia2过滤器
Jinja2是基于python的模板引擎。那么什么是模板?假设说现在我们需要一次性在10台主机上安装redis,这个通过playbook现在已经很容易实现。默认 情况下,所有的redis安装完成之后,我们可以统一为其分发配置文件。这个时候就面临一个问题,这 些redis需要监听的地址各不相同,我们也不可能为每一个redis单独写一个配置文件。因为这些配置 文件中,绝大部分的配置其实都是相同的。这个时候最好的方式其实就是用一个通用的配置文件来解 决所有的问题。将所有需要修改的地方使用变量替换。
2023-02-28 16:04:39
2345
1
原创 [ansible系列]ansible使用扩展
一般来讲,当task失败时,ansible会停止执行失败的那台主机上的任务,但是继续对其他 主机执 行。在少数情况下,ansible任务运行的过程中需要用户输入一些数据,这些数据要么比较秘密不方便, 或者数据是动态的,不同的用户有不同的需求,比如输入用户自己的账户和密码或者输入不同的版本 号会触发不同的后续操作等。我们知道ansible的是操作被控端的,所有执行的动作都是在被控端上完成的,当然在某些特定的时候我们想要有些tasks在本地(控制端)执行,这时我们就需要使用local_action语句。
2023-02-17 16:59:31
1914
1
原创 [Ansible系列]ansible-playbook之include和import
我们一直使用一个playbook文件来组织所有的task任务。但是,当我们项目越 来越大,task越来越多的时候,如果还将所有的task都写到一个playbook当中,可读性就会变差,这 个时候我们就需要重新来组织playbook了。因此可以将一个大的playbook拆成若干个小的playbook文件,在主配置文件中将这些零碎的小文件 引入进来,引进方式就有:include,import,include_task,import_task。
2023-02-14 15:39:17
2569
1
原创 [Linux系列]linux bond详解
bong也叫多网卡绑定,多块网卡虚拟成一张,实现冗余;多张网卡对外显示一张,具有同一个IP;网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故障。1. mode1,5,6不需要交换机配置;2. mode0,2,3,4需要交换机配置;3. 常用的有mode0,1,4,6。
2023-02-02 15:22:35
7936
原创 [Ansible系列]ansible tag介绍
task的标签功能目前用的最多就是在playbook的调试中,当执行playbook出现某个task有问题的时候,我们就会给该task打标签,用于后续修改测试,这也有效的避免了多次从头执行playbook的时间浪费。大家还有其他什么用法,欢迎指导!
2023-02-01 11:21:12
2194
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人