
k8s & docker
文章平均质量分 93
k8s & docker
01Byte空间
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
专注后端技术:Java、Shell、Socket、MySQL、Oracle、Linux、中间件、分布式、微服务。偶尔扯扯淡、分享技术干货。
https://github.com/zhouxx1055
https://zhouxx.blog.youkuaiyun.com/
展开
-
科普文:软件架构之K8s系列【Kubernetes十周年:送给架构师的十条实用技巧】
我于2016年开始接触Kubernetes ,我在华特迪士尼工作室工作,当时我们正处于一次重大的云迁移中,为了管理不断增长的容器化工作负载,我们关注到了Kubernetes(以下简称K8s)。当时,K8s仍处于早期阶段,采用它就像踏入未知领域。因此我们面临许多挑战:从理解核心概念,到弄清楚如何将云原生原则集成到我们现有的系统中。在这一阶段,我得到了在大型企业环境中实施 K8s 的宝贵经验,加深了技术理解,深入了解这当中所需的组织和文化转变。原创 2024-11-19 14:27:03 · 1044 阅读 · 0 评论 -
科普文:微服务之容器化【8种JDK性能测试:K8s上应该用哪种JDK?】
每次我测试一个新的 JVM 提供程序时,我都会删除以前版本的应用程序和数据库。Spring Boot 应用程序公开了几个端点,但我将测试POST /persons用于将数据插入 Mongo 的端点。如果您已经使用 Dockerfile 构建了镜像,那么您可能使用的是来自 Docker Hub 的官方 OpenJDK 基础镜像。然而,目前镜像网站上的公告称它已被正式弃用,所有用户都应该找到合适的替代品。不同 JVM 实现之间的大小差异是由内部包含的 Java 工具和二进制文件的数量造成的。原创 2024-11-10 17:55:16 · 835 阅读 · 0 评论 -
科普文:微服务之Spring Cloud组件5种注册中心【Etcd--分布式键值存储系统及其8大应用场景】
etcd 是一种开源的分布式键值存储库,用于保存和管理分布式系统保持运行所需的关键信息。最值得注意的是,它可以管理 Kubernetes(流行的容器编排平台)的配置数据、状态数据和元数据。与所有分布式工作负载一样,容器化工作负载也具有复杂的管理要求,而且这些要求随着工作负载的扩展而变得更加复杂。Kubernetes 通过跨所有集群(可在多个地点的多台机器上运行)协调配置、部署、服务发现、负载均衡、作业调度和运行状况监控等任务,简化了这些工作负载的管理过程。原创 2024-10-22 17:52:25 · 855 阅读 · 0 评论 -
科普文:云原生Docker系列之【32个常见的Docker问题及解决思路】
可能都遇到过,在编写启服务启动配置文件的时候,添加环境变量时到底是使用单引号、双引号还是不使用引号的问题?中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。反正我是遇到过很多问题,都是因为添加引号导致的服务启动异常的,后来得出的结论就是一律不使引号。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个。的状态,通过如下日志发现,原来是复制配置文件启动的时候,提示磁盘空间不足。原创 2024-08-26 14:14:23 · 918 阅读 · 0 评论 -
科普文:云原生Docker系列之【5点Dockerfile建议】
最好在内部有一个存放软件包的地方,类似于上述的PHP官方下载地址:http://docs.php.net/distributions/php-5.6.36.tar.gz,如果用到maven构建这样的操作,同时也更改为私有maven仓库,减少网络传输时间,提高镜像构建速度。选择原则一:追求镜像小,可使用Alpine镜像,Alpine是一个轻量级的Linux发行版,镜像仅有5.6MB,构建出的镜像也很小,但其采用MuslLibc,相比Glibc兼容性市面主流技术较差,需进一步测试。改写后可以减少镜像层级。原创 2024-08-26 14:01:06 · 411 阅读 · 0 评论 -
科普文:云原生Docker系列之【Dockerfile 语法增强】
Dockerfile 是使用 Docker 的相关开发人员的基本工具,用来充当构建 Docker 镜像的模板,在这个文件中包含用户可以在命令行上调用来构建镜像的所有命令。然而 .dockerignore 文件并不是解决此问题的好方法,因为它们仅列出从客户端构建上下文中排除的文件,而不是从远程 Git/HTTP URL 的构建中排除的文件,并且每个 Dockerfile 仅限一个。简而言之,其想法是定义一个全局构建参数,然后定义构建阶段,在阶段名称中使用构建参数值,同时通过构建参数名称指向目标阶段的基础。原创 2024-08-26 13:31:55 · 935 阅读 · 0 评论 -
科普文:微服务之容器化【如何安全又优雅地退出、删除Kubernetes Pod】
注意从集群中删除的 Pod,因为它们的 IP 地址可能仍然用于路由流量。与立即关闭 Pod 相比,你应该考虑在应用程序中等待更长的时间,或者设置一个preStop钩子。只有在集群中的所有端点都被传播并从 kube-proxy、Ingress 控制器、CoreDNS 等中删除后,才应该删除 Pod。通过合理的优雅退出配置 T4原创 2024-08-10 00:07:04 · 956 阅读 · 0 评论 -
科普文:微服务之容器化【如何安全又优雅地退出、删除Docker容器】
在Docker中,为了实现容器的优雅退出,确保你的应用程序能够接收和处理 SIGTERM 信号是至关重要的。推荐使用 docker stop 命令来停止容器,因为这会发送 SIGTERM 信号给容器内的进程,允许它们有机会完成未完成的任务并正常退出。相比之下,直接使用 docker rm -f 或 docker kill 可能会强制终止进程,导致数据丢失或不一致的状态。此外,在 Dockerfile 中设置 ENTRYPOINT 或 CMD 时,应使用 exec 格式,以确保信号正确传递给应用程序。转载 2024-08-10 00:06:38 · 826 阅读 · 0 评论 -
实战:微服务之容器化【2万字详解服务编排利器Deployment】
Deployment是Kubernetes中用来部署容器化应用程序的控制器之一,它的主要作用是定义应用程序的期望状态,并根据需要创建或更新Pod。Deployment通过使用ReplicaSet来管理Pod的副本数量,当Pod的数量与期望状态不一致时,Deployment会自动创建或删除Pod以实现状态的匹配。Deployment可以保证应用程序的高可用性和稳定性。如果Pod由于某些原因而崩溃或失效,Deployment会自动创建一个新的Pod以替换它。原创 2024-08-10 00:03:42 · 624 阅读 · 0 评论 -
科普文:微服务之容器化【万字详解Kubernet工作负载Pod及其生命周期】
除了 Docker 之外,Kubernetes 支持很多其他容器运行时Docker是最有名的运行时, 使用 Docker 的术语来描述 Pod 会很有帮助。Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离方面, 即用来隔离容器的技术。在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。Pod 类似于共享名字空间并共享文件系统卷的一组容器。原创 2024-08-10 00:03:11 · 1179 阅读 · 0 评论 -
科普文:微服务之容器化【2万字+30图带你详细了解Kubernetes 组件、架构、工作流程和网络】
Kubernetes是一个全新的基于容器技术的分布式领先方案。简称:k8s。它是Google开源的容器集群管理系统,它的设计灵感来自于Google内部的一个叫做Borg的容器管理系统。继承了Google十余年的容器集群使用经验,它为容器化的应用提供了部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,极大的提高了大规模容器集群管理的便捷性。原创 2024-08-10 00:02:33 · 1212 阅读 · 0 评论 -
科普文:linux系列之操作系统内存管理详解
内存管理主要包括虚地址、地址变换、内存分配和回收、内存扩充、内存共享和保护等功能。单一连续存储管理在这种管理方式中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CP/M和DOS 2.0以下就是采用此种方式。这种方式的最大优点就是易于管理。但也存在着一些问题和不足之处,例如对要求内存空间少的程序,造成内存浪费;程序全部装入,使得很少使用的程序部分也占用—定数量的内存。原创 2024-08-03 08:17:10 · 840 阅读 · 0 评论 -
科普文:linux系列之操作系统内存管理简介
操作系统内存管理是计算机系统中的核心技术之一,页式管理、段式管理和段页式管理各有优缺点。它将物理内存分成固定大小的块,称为页框(Frame),同时将程序的逻辑地址空间也分成同样大小的块,称为页(Page)。例如,Linux系统采用的是页式管理,而Windows系统则采用段页式管理。段式管理(Segmentation)将程序的逻辑地址空间分为若干段(Segment),每段有不同的长度和属性。段表记录每个段的基地址和段长,可以是单级段表,也可以是多级段表。:段的划分更符合程序的逻辑结构,例如代码段和数据段。原创 2024-08-03 08:10:49 · 775 阅读 · 0 评论 -
科普文:Linux目录详解
本文,我们系统性的总结了 Linux的目录和文件,作为程序员,我们很多时候都需要和 Linux或者类 Linux系统打交道,因此,如果我们能正确理解 Linux 目录和文件结构,就可以快速的适应和掌握 Linux的相关知识。原创 2024-07-31 19:53:21 · 1036 阅读 · 0 评论 -
科普文:微服务架构设计和技术选型概叙
微服务架构现在依旧是架构设计的主流,微服务分而治之的思想永不过时。架构是从简单到复杂的一个过程,架构设计是为了把复杂变得尽量简单,所以能用单体就单体,不要盲目微服务,随之带来的可能不是微服务的好处,而是成本。DDD是微服务拆分的指导思想,它以业务为王,只关心于业务模型本身。微服务拆分按业务是基础,在业务之上还可以按照业务复杂度、变动频率、吞吐量、以及团队情况等进行多维度的拆分。服务的人员分配可参考3个火枪手原则。原创 2024-07-30 11:15:08 · 825 阅读 · 0 评论 -
科普文: Etcd实现高可用AP+强一致性CP的分布式锁
工欲善其事,必先利其器。” 懂得原理方能触类旁通,立于不败之地。本场 Chat 将分 4 节详细解读著名的分布式一致性算法——Raft,在此基础上,再介绍 Etcd 的架构和典型应用场景。通常,Raft 集群中只有一个 Leader,其它节点都是 Follower。Follower 都是被动的:它们不会发送任何请求,只是简单的响应来自 Leader 或者 Candidate 的请求。原创 2024-07-30 00:10:26 · 1520 阅读 · 0 评论 -
科普文:docker网络
默认网络: Docker安装后自动创建bridge、host、none三个网络,可通过。Docker官方提供了五种网络模式:Bridge(默认模式):每个容器分配IP,并连接到docker0虚拟网桥,通过Iptables nat表与宿主机通信。Host:容器不配置虚拟网卡,使用宿主机的IP和端口。Container:新容器不创建自己的网络配置,与指定容器共享IP、端口。None:关闭容器网络功能,不与其他容器或宿主机连通。Overlay:这种模式用于在多个Docker主机之间创建一个虚拟原创 2024-07-29 12:00:29 · 625 阅读 · 0 评论 -
实战:K8S 中部署 MySQL 主从复制
1. Kubernetes 基础概念• 容器、Pod、Deployment、Service 等• 资源管理与调度机制2. MySQL 集群架构• 主从复制、读写分离• 数据同步与一致性保证通过在 Kubernetes 中部署 MySQL 集群,我们能够充分利用容器化和编排技术的优势,构建强大、可靠且易于管理的数据库服务。随着技术的不断发展,持续学习和优化将是保持数据库系统高效运行的关键。原创 2024-07-29 10:59:56 · 1859 阅读 · 0 评论 -
科普文:kubernets原理
kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。本文将带着大家快速了解 kubernetes ,了解我们谈论 kubernetes 都是在谈论什么。从宏观上来看 kubernetes 的整体架构,包括 Master、Node 以及 Etcd。Master 即主节点,负责控制整个 kubernetes 集群。它包括 Api Server、Scheduler、Controller 等组成部分。原创 2024-07-27 22:04:52 · 826 阅读 · 0 评论 -
科普文:docker基础概念、软件安装和常用命令
容器是在隔离的环境里面运行的一个进程,这个隔离的环境有自己的系统目录文件,有自己的ip地址,主机名等。也可以说:容器是一种轻量级虚拟化的技术。原创 2024-07-27 21:48:07 · 1163 阅读 · 0 评论 -
科普文:Linux系统安全加固指南
本指南仅关注安全性和隐私性,而不关注性能,可用性或其他内容。列出的所有命令都将需要root特权。以“$”符号开头的单词表示一个变量,不同终端之间可能会有所不同。选择一个好的Linux发行版有很多因素。避免分发冻结程序包,因为它们在安全更新中通常很落后不使用与Systemd机制的发行版。Systemd包含许多不必要的攻击面;它尝试做的事情远远超出了必要,并且超出了初始化系统应做的事情。使用musl作为默认的C库。原创 2024-07-25 09:58:57 · 2147 阅读 · 0 评论 -
科普文:图文探究Linux内核
本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么?原创 2024-07-25 09:46:31 · 3222 阅读 · 0 评论 -
科普文:云计算服务类型IaaS, PaaS, SaaS, BaaS, Faas说明
提供基础设施服务,包括服务器、存储、网络等硬件资源。用户可以在这些基础设施上运行自己的应用和数据,从而大大降低了基础设施的购买和管理成本。这种服务模式让用户能够专注于应用开发,而不必担心基础设施的管理和维护。提供了一个平台和环境,用户可以在这个平台上开发、运行和管理自己的应用。PaaS解放了用户从基础设施管理的困扰,让他们可以专注于应用的开发。这种服务模式通过提供开发工具、运行时环境等,简化了应用的开发和部署过程。。原创 2024-07-23 11:48:11 · 4266 阅读 · 0 评论 -
科普文:企业级磁盘阵列软件架构与功能概述
其实控制平面的软件可以理解为前文介绍的集群管理软件,他会监控控制器的节点状态和其中运行的资源的状态,当发现节点异常的情况下会进行业务的切换。控制平面的软件结合存储系统的冗余设计,可以极大的保证存储系统的可靠性和可用性。硬件的冗余设计加上软件的配合,极大的提高了存储系统的可靠性,减小了存储系统的宕机时间。管理平面是管理员访问存储系统的接口,管理平面的软件实现了对存储系统中资源的管理。当然,上述划分方法是作者自己对一些自己接触到的存储系统的总结,并非每一个存储的软件架构都是这样的。原创 2024-07-19 04:45:23 · 945 阅读 · 0 评论 -
实战:MySQL运行在Docker容器中会损失多少性能
自从使用 docker 以来,就经常听说 MySQL 数据库最好别运行在容器中,性能会损失很多。一些之前没使用过容器的同事,对数据库运行在容器中也是忌讳莫深,甚至只要数据库跑在容器中出现性能问题时,首先就把问题推到容器上。那么到底会损失多少,性能损失会很多吗?为此我装了两个 MySQL,版本都是 8.0.34。一个用官网二进制包安装,另一个用 docker hub 的 MySQL 镜像安装。两个 MySQL 都运行在同一台机器,但不同时运行,先后运行测试。原创 2024-07-15 10:33:56 · 941 阅读 · 0 评论 -
科普文:分布式存储性能优化思路
企业实现私有云之后,云上的存储资源会是多元化的架构模式,基于上述提纲,在实践的过程当中实现更精细化的梳理、更准确客观的分析、更实事求是的态度,才能解决好云平台上存储架构性能与扩展性的平衡问题。分布式存储系统当中在哈希计算的时候之所以能保持集群的相对稳定性,就是因为虚拟对象(如Ceph的PG、Pool,如Swift的Container)设计,同样这些虚拟对象数量、管理方式、映射关系等方面的配置也是决定数据分布式算法计算因子是否优秀的重要方面,同样需要精细化设计。比如高速网络的选择要考虑到网络通讯质量的需求。原创 2024-07-15 10:17:06 · 1246 阅读 · 0 评论 -
科普文:了解RAID独立冗余磁盘阵列
RAID 6思想最常见的实现方式是采用两个独立的校验算法,假设称为P和Q,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。外接RAID卡通过其硬件RAID控制器,接收主机发送的数据,按照预设的规则进行数据的分割、条带化,并根据所选的RAID级别,将数据分散存储到多个磁盘驱动器上。RAID的设计初衷是提供高端的存储功能和冗余的数据安全,在整个系统中,RAID被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的I/O性能。以满足不同数据应用的需求。原创 2024-07-15 09:43:39 · 1333 阅读 · 0 评论 -
科普文:微服务之Apollo配置中心
写一个 Controller 类来输出 test 变量的值,使用了 Spring 的 @Value 注解,用于读取配置文件中的变量的值,这里来测试该值,项目启动后读取到的变量的值是设置在 application 配置文件中的默认值,还是远程 Apollo 中的值,如果是 Apollo 中配置的值,那么再测试在 Apollo 配置中心中改变该变量的值后,这里是否会产生变化。对程序配置的期望值也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……原创 2024-07-14 07:36:32 · 1736 阅读 · 0 评论 -
科普文:微服务技术栈梳理
如上两图所示,微服务架构下,需要的组件很多,上面中也并未列全。下面将梳理一下国内微服务架构下,用到的技术栈,仅供参考。在前面架构介绍的文章中的两句话,也适用于微服务组件的选择。在微服务架构中,选择合适的中间件是一个重要的决策。这会影响到系统的可用性、稳定性、可扩展性和开发效率。:首先,你需要清楚地了解你的系统需求。这包括你的系统的规模(如用户量、请求量、数据量)、性能需求(如响应时间、吞吐量)和功能需求(如消息队列、缓存、数据库)。你选择的中间件需要能够满足这些需求。:你的中间件需要能够处理你的系统的负载。原创 2024-07-13 00:03:03 · 1529 阅读 · 0 评论 -
科普文:K8S中常见知识点梳理
比如,可以指定一个 Pod 只能被调度到与指定节点具有相同标签的节点上,或者指定一个 Pod 不能被调度到与指定节点具有相同标签的节点上。在这种方式下,Kubernetes 会根据当前节点的资源使用情况,将 Pod 动态地调度到具有可用资源的节点上,从而实现资源的最优分配。通过为节点打上不同的标签,可以让 Kubernetes 将特定类型的 Pod 调度到具有相应标签的节点上。集群自动伸缩(Cluster Autoscaler):根据集群节点的资源利用率,动态地增加或减少节点的数量,以适应不同的负载需求。原创 2024-07-09 05:30:13 · 877 阅读 · 0 评论