Docker
未读初识 Pod:Kubernetes 的最小运行单元 Pod 是什么? 在 Kubernetes(K8s)的世界中,Pod 是最小的可部署和管理单元。它不仅是容器的“家”,更是 Kubernetes 资源对象模型的核心。无论是部署应用、管理网络,还是配置存储,所有操作最终都会通过 Pod 来实现。 Pod 的核心特性 资源共享: Pod 内的多个容器可共享网络(对外同一 IP 和 端口 空间)和存储卷。例如亲密性应用,一个 Tomcat 容器和一个 Redis 容器可以共享数据卷,实现高效通信。 生命周期短暂: Pod 可能因节点故障被重新调度到其他节点,但新 Pod 与旧 Pod 完全无关。因此,状态数据必须存储在外部(如持久卷)。 平坦网络: 所有 Pod 处于同一共享网络空间,可通过 IP 直接访问,无需额外配置。 Pod 的内部结构:Pause 容器与多容器协作 Pause 容器:Pod 的“守护者” 每个 Pod 都包含一个由 Kubernetes 自动创建的Pause 容器,它是 Pod 的“根容器”。其作用是: 共享资源:为其他容器提供网络和存储的共享基础。 生命周 ...
简介 什么是 kubectl? kubectl 是 Kubernetes 官方提供的命令行工具,用于与 Kubernetes 集群交互。它支持对集群、节点、Pod、服务等资源的创建、查询、更新和删除(CRUD)操作,是管理 Kubernetes 的核心工具。 支持声明式和命令式两种资源管理方式: 声明式:通过定义资源清单(YAML/JSON)描述期望状态,由 Kubernetes 自动调整。 命令式:直接通过命令操作资源(如增删改查)。 kubectl 的核心功能 查看资源状态(get, describe)。 创建、更新、删除资源(create, apply, delete)。 管理部署与滚动更新(rollout)。 调试与日志查看(logs, exec)。 配置多集群访问与上下文切换。 基础命令 命令结构 1kubectl [command] [TYPE] [NAME] [flags] command:指定要对资源执行的操作,例如get, describe, create, delete, apply 等。 TYPE:资源类型(如 pod, deployment, s ...
Docker
未读YAML 文件概述 在 Kubernetes 中,YAML(YAML Ain’t a Markup Language)文件是用于定义和管理集群资源的核心工具。通过编写 YAML 格式的资源清单文件(Resource Manifest),用户可以声明式地创建、更新或删除 Kubernetes 资源对象(如 Pod、Deployment、Service 等)。这些文件通过 kubectl 命令(如 kubectl apply 或 kubectl create)执行,实现对集群资源的编排和部署。 YAML 文件书写格式 YAML 基础语法 缩进:使用空格缩进,相同层级的元素需左侧对齐,禁止使用 Tab 键。 注释:以 # 开头,从该字符到行尾的内容会被忽略。 数据结构: 对象(映射):键值对集合,如 key: value。 数组(序列):用 - 标记的列表,如: 123ports: - containerPort: 80 - containerPort: 443 纯量:单个值,如字符串、数字、布尔值等。 示例代码结构 123456789101112apiVersi ...
Docker
未读服务器规划 角色 IP地址 主机名 资源配置 组件 关键要求 Master 192.168.56.101 k8smaster 4CPU/4GB/20GB+ kube-apiserver、kube-controller-manager、kube-scheduler、etcd 确保与Worker节点网络互通,时间同步,Swap关闭 Node1 192.168.56.102 k8snode1 4CPU/8GB/40GB+ kubelet、kube-proxy、docker、etcd 容器运行时(Docker)版本与K8s兼容,Cgroup驱动配置为systemd Node2 192.168.56.103 k8snode2 4CPU/8GB/40GB+ kubelet、kube-proxy、docker、etcd 同上 目录结构 所有节点执行以下命令创建统一目录: mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs,templates} 目录结构如下: 123456/opt/kubernetes/├── bin/ ...
Docker
未读搭建K8s环境平台规划 架构设计对比 架构类型 优点 缺点 适用场景 单Master节点 部署简单,资源消耗低 存在单点故障风险,扩展性差 测试环境、小规模开发环境 多Master节点 高可用、无单点故障,支持大规模集群 部署复杂,资源消耗高 生产环境、中大型企业级应用 多Master节点核心组件高可用设计 API Server高可用:通过负载均衡器(如Nginx、HAProxy)暴露VIP,流量分发到多个Master节点的API Server。 etcd集群:部署3/5节点etcd集群,确保数据一致性和高可用。 Controller Manager与Scheduler:以 Leader Election 模式运行,同一时间只有一个实例生效 服务器硬件配置要求 测试环境(非生产) 节点类型 CPU 内存 硬盘 数量 说明 Master节点 2核 4GB 20GB 1 可运行核心组件(API Server、etcd等) Worker节点 4核 8GB 40GB ≥2 运行业务容器 生产环境(最低要求) 节点类型 CPU 内存 硬盘 ...
Docker
未读k8s概述和特性 Kubernetes的官网:https://kubernetes.io/ 发音 有很多人不知道kubernetes应该怎么发音,正确的发音是[kubə’netis],重音在第三个音节,读音:库伯耐踢死 那为什么很多场景称为 是 k8s呢? 这个其实和硅谷的人起名有关系,他们有一个坏习惯,就是喜欢把一个单词首字母+跳过的字母数来进行缩写,比如亚马逊的Algorithms被缩写成A9,而kubernetes缩写为k8s,意思就是k后面跳过8个字母后到s,就变成了k8s。 概述 1. 什么是 Kubernetes? 定义: Kubernetes 是一个开源的 容器编排平台,用于自动化部署、扩展和管理容器化应用。 由 Google 基于其内部系统 Borg 的经验设计,2014 年开源并捐赠给 CNCF(云原生计算基金会)。 核心目标: 自动化运维:简化容器化应用的部署、扩缩容、故障恢复等操作。 跨环境一致性:提供一致的运行环境(开发、测试、生产)。 资源高效利用:优化计算、存储、网络资源的分配与调度。 2. Kubernetes 解决了什么问题? 容器化应 ...
Python
未读安装 pip install loguru 简单使用 123456import loguruloguru.logger.info('info')loguru.logger.debug('debug')loguru.logger.error('error')loguru.logger.warning('warning') 默认的输出格式是包含【时间、级别、模块名、行号以及日志信息】,不需要手动创建 logger ,直接使用即可,另外其输出还是彩色的,看起来会更加友好。 保留日志文件 一般情况,我们都需要将日志输出保存到文件中,loguru直接通过 add() 方法,就可以配置一个日志文件 12345678910111213import loguru## 保留日志文件loguru.logger.add("interface_log_{time}.log", rotation="500MB", ...
Python
未读原文链接:刘江的博客教程 既然有压缩模块zipfile,那有一个归档模块tarfile也是很自然的。tarfile模块用于解包和打包文件,包括被gzip,bz2或lzma压缩后的打包文件。如果是.zip类型的文件,建议使用zipfile模块,更高级的功能请使用shutil模块。 定义的类和异常 tarfile.open(name=None, mode=‘r’, fileobj=None, bufsize=10240, \**kwargs) 返回一个TarFile类型的对象。本质上就是打开一个文件对象。Python随处可见这种文件对象类型的设计,你很容易就明白,不是吗? name是文件名或路径。 bufsize用于指定数据块的大小,默认为20*512字节。 mode是打开模式,一个类似filemode[:compression]格式的字符串,可以有下表所示的组合,默认为“r”。 模式 说明 ‘r’or’r:*’ 自动解压并打开文件(推荐模式) ‘r:’ 只打开文件不解压 ‘r:gz’ 采用gzip格式解压并打开文件 ‘r:bz2’ 采用bz2格式解压并打开 ...
又很多添加水印的方法,如opencv模块、PIL模块但是感觉都较为复杂,filestools模块其本质上也是对ImageDraw.Draw.text()方法做了进一步的封装,让我们用起来更加的简便。 使用 filestools实现全图水印 /usr/local/bin/pip3 install filestools -i https://pypi.douban.com/simple/ # 安装 我们使用add_mark()方法可以生成数量较多的水印,该方法有8个参数,比较重要的有 mark:水印的内容 水印样式包括color、size、opacity、space、angle:颜色、大小、不透明度、空间、角度 123456789101112131415import osfrom watermarker.marker import add_mark # 添加水印模块def update_img(dir,water_name): try: if not dir and water_name: print("文件夹地址或水印名称不能为空") retu ...
不墨迹时间,直入正题看glob模块,fnmatch参考 python中可以使用 glob 模块实现快速查找文件 glob像是一个更强大版本的listdir()函数,支持使用模式匹配来搜索文件,其支持的通配符有:*,匹配任意0个或多个字符;**,当recursive参数为True时会匹配0个或多个子文件夹(且只能用于匹配子文件夹);?,匹配任意一个字符;[],匹配指定范围内的字符,如[0-9]匹配任意数字。 若需要全局搜索,则需启用recursive递归参数为True。 12# 超着qqq目录下所有深层目录下的后缀为png的文件,单层目录recursive=Falseprint(glob.glob("/Users/jerry/Downloads/qqq/**/*.png",recursive=True)) fnmatch 这篇文章主要分享的是python使用技巧查找文件,下面我们就来介绍针对python查找文件的相关内容,需要的小伙伴可以参考一下 标准库的fnmatch库专门用来进行文件名匹配,支持使用通配符进行字符串匹配。 1、fnmatch:判断文件名是否符合特 ...