颜淡慕潇
CSDN专家博主,CSDN内容合伙人,新星计划导师,全栈领域优质创作者,阿里云专家博主/星级博主
专注于分享后端领域技术,承蒙厚爱,感谢支持!
希望和大家一起努力,成为更好的自己!
展开
-
Kubernetes核心技术与实战解析专栏介绍
《Kubernetes核心技术与实战解析》是一个专注于深入探讨Kubernetes(k8s)核心技术与实战案例的专栏。该专栏通过系统性的文章,帮助读者从入门到精通,全面解锁云原生时代下的容器编排技术。原创 2024-09-30 17:25:29 · 251 阅读 · 11 评论 -
【K8S系列】第九讲:Kubernetes 之探针
启动容器时,可以为k8s配置一个等待时间,经过等待时间后才可以执行第一次准备就绪检查。之后,它会周期性的调用探针,并根据就绪探针的结果采取行动。如果某个Pod报告它尚未准备就绪,则会从该服务中删除该Pod。如果Pod再次准备就绪,则重新添加Pod。就绪探针与存活探针之间的重要区别:如果容器未通过准备检查,则不会被终止或重新启动。存活探针:通过杀死异常的容器,并用新的正常容器替代他们来保持Pod正常工作就绪探针:确保只有准备好处理请求的Pod才可以接收探针请求。原创 2022-11-08 22:04:11 · 6923 阅读 · 84 评论 -
【K8S系列】深入解析 k8s:入门指南(一)
了解容器技术、k8s、各大厂商使用k8s的情况理解掌握k8s的核心对象、架构层面掌握k8s的安装方式k8s常见问题的解决方案有了前面内容的铺垫,现在我们来正式看下Kubernetes 是什么吧他简称k8s,是谷歌开源的容器集群管理系统,他的前身Borg是一直以来都被誉为 Google 公司内部最强大的“秘密武器”。这个说法,虽然有些夸张,但不算是吹牛可以看到,上图中,Borg处于架构最底层。原创 2023-03-16 21:38:42 · 15267 阅读 · 48 评论 -
【K8S系列】深入解析Pod对象(一)
目录序言1.问题引入1.1 问题描述 2 问题解答2.1 pod 属性2.1.1 NodeSelector2.1.2 HostAliases2.1.3 shareProcessNamespace2.1.4 其他pod属性2.2 容器属性2.2.1 ImagePullPolicy2.2.2 Lifecycle下面先介绍 Pod 中几个重要字段的含义和用法原创 2023-03-22 09:27:58 · 17078 阅读 · 49 评论 -
【K8S系列】深入解析Service
Kubernetes的Service是一种抽象,用于定义一组Pods的访问方式。Service可以为Pods提供稳定的网络终结点,以便其他应用程序可以通过Service来访问这些Pods。总结一下Kubernetes Service知识点:Service类型:Kubernetes支持多种Service类型,包括ClusterIP、NodePort、LoadBalancer和ExternalName。每种Service类型都有不同的用途和特点,可以根据实际需求进行选择。Service端口:Service原创 2023-04-24 17:12:32 · 36415 阅读 · 88 评论 -
【云原生系列】第四讲:Knative 之 Eventing
Kubernetes 用户在实现开发和部署阶段服务之间松耦合的同时,服务间常要通过不同的事件机制来进行事件传递,为了解决大部分的云原生消息通信需求,Knative 提供了 Eventing 组件。特点:服务开发部署松耦合支持各种事件传递事件的生产者和事件的消费者是相互独立的确保跨服务的互操作性支持第三方的服务对接 Eventing 系统。原创 2022-11-28 10:25:59 · 5757 阅读 · 76 评论 -
【云原生系列】第一讲:什么是云计算
云计算(cloud computing):分布式:分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期:分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段:计算:分布式计算、效用计算、负载均衡、并行计算、存储。原创 2022-11-14 18:43:29 · 9899 阅读 · 154 评论 -
【云原生系列】第二讲:Knative 简介
在讲Knative之前,需要先讲一下Serverless。对于Serverless,目前还没有形成一个比较权威的定义,最新的一个定义是这样描述的:“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如AWS Lambda服务),客户端逻辑和服务托管远程过程调用的组合。”最开始,“无服务器”架构试图帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。这显然是不成立的,因为这项技术的目标并不是为了实现真正意义上的“无服务器”,而是指由。原创 2022-11-09 22:03:43 · 3947 阅读 · 85 评论 -
【云原生系列】云计算概念与架构设计介绍
云计算是一种基于互联网的计算模式,在这个模式下,各种计算资源(例如计算机、存储设备、网络设备、应用程序等)可以通过互联网实现共享和交付。云计算架构设计的主要目标是实现高效、可扩展、可靠、安全和经济的计算资源共享。在云计算架构中,通常会采用分层的设计思路,将计算资源划分为不同的层次,每个层次负责不同的功能和任务。例如,常见的云计算架构通常包括以下几个层次:物理层虚拟化层平台层应用层在上述云计算架构中,各个层次之间通过API(应用程序接口)进行通信和协作。原创 2023-07-03 16:50:58 · 48734 阅读 · 103 评论 -
【云原生系列】第五讲:Knative Eventing 下篇
ParallelCRD,Parallel.ParallelcreatesChannelsand.总结下来,就是支持根据不同的过滤条件对事件进行选择处理。原创 2022-12-01 18:50:43 · 5349 阅读 · 65 评论 -
【云原生系列】第三讲:Knative 之 Serving
Serving:即服务基于Kubernetes的crd提供缩容至零、请求驱动的计算功能。它本质上是无服务器平台的执行和扩展组件。主要有以下特性:模型抽象:更高级层的抽象化,对象模型更易于理解。可快速部署无服务容器自动扩容:基于 HTTP 请求的无缝自动扩缩,自动扩缩容机制,支持缩容到零网络集成:自动集成网络和服务网格可扩展:连接日志记录、监控、等其他平台Knative Serving组件是Knative的核心组件,它完成了一个Serverless计算平台最重要的能力原创 2022-11-21 22:15:08 · 6113 阅读 · 126 评论 -
【K8S系列】第二讲:Pod入门
Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。一个Pod封装一个应用容器(也可以有多个容器),存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。Docker是Kubernetes Pod中最常见的runtime ,Pods也支持其他容器runtimes。...原创 2022-08-11 20:53:27 · 6902 阅读 · 1 评论 -
【K8S系列】第三讲:Service基础入门
service 是一个固定接入层,客户端可以通过访问service 的 ip 和端口访问到service 关联的后端 pod,这个 service 工作依赖于在 kubernetes 集群之上部署的一个附件,就是 kubernetes 的dns 服务。原创 2022-08-11 21:40:59 · 7178 阅读 · 0 评论 -
【K8S系列】第一讲:基础概念入门
与VM虚拟机相比,容器镜像的创建更加容易。提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。在build或者release阶段创建容器镜像,使得应用和基础设施解耦。在本地或外网(生产环境)运行的一致性。可以在 Ubuntu、RHEL、 CoreOS、on-prem、Google Container Engine或其它任何环境中运行。应用程序分为更小的、独立的部件,可以动态部署和管理。资源隔离更高效。...原创 2022-08-11 20:12:29 · 7627 阅读 · 1 评论 -
【K8S系列】第七讲:有状态服务 VS 无状态服务
1.数据:无状态服务不会在本地存储持久化数据.多个实例可以共享相同的持久化数据2.结果:多个服务实例对于同一个用户请求的响应结果是完全一致的3.关系:这种多服务实例之间是没有依赖关系4.影响:在k8s控制器 中动态启停无状态服务的pod并不会对其它的pod产生影响5.示例:nginx实例,tomcat实例,web应用6.资源:相关的k8s资源有:Deployment7.创建方式:Deployment被设计用来。原创 2022-11-02 17:05:48 · 9914 阅读 · 64 评论 -
【K8S系列】第四讲:kubadm部署k8s时service-cidr网络和pod-network-cidr的地址如何定义
k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16。这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers。在用kubadm安装k8s时出现一个疑问,service-cidr和pod-network-cidr这个地址如何配置。这个参数就是master主机的IP地址,例如我的Master主机的IP是:192.168.180.123。原创 2022-10-18 17:40:48 · 7732 阅读 · 4 评论 -
【K8S系列】第五讲:在 Linux 上安装 KubeSphere
在生产环境中,由于单节点集群资源有限、计算能力不足,无法满足大部分需求,因此不建议在处理大规模数据时使用单节点集群。此外,单节点集群只有一个节点,因此也不具有高可用性。相比之下,在应用程序部署和分发方面,多节点架构是最常见的首选架构。本节概述了多节点安装,包括概念、KubeKey和操作步骤。有关高可用安装的信息,请参考高可用配置、在公有云上安装和在本地环境中安装。多节点集群由至少一个主节点和一个工作节点组成。可以使用任何节点作为任务机。原创 2022-10-26 16:17:06 · 1380 阅读 · 0 评论 -
【K8S系列】第五讲:在 Linux 上安装 KubeSphere
在生产环境中,由于单节点集群资源有限、计算能力不足,无法满足大部分需求,因此不建议在处理大规模数据时使用单节点集群。此外,单节点集群只有一个节点,因此也不具有高可用性。相比之下,在应用程序部署和分发方面,多节点架构是最常见的首选架构。本节概述了多节点安装,包括概念、KubeKey和操作步骤。有关高可用安装的信息,请参考高可用配置、在公有云上安装和在本地环境中安装。多节点集群由至少一个主节点和一个工作节点组成。可以使用任何节点作为任务机。原创 2022-10-26 16:32:52 · 3874 阅读 · 0 评论 -
【K8S系列】第六讲:Kubernetes的网络模型
iptables规则监视发往服务虚拟的流量IP,并从一组可用的Pod中随机选择一个Pod IP地址,并且iptables规则将数据包的目标IP地址从服务的虚拟IP更改为所选Pod的IP。第三个网络是Pod的网络, K8s中一个Pod由多个容器组成,但是一个pod只有一个IP地址,Pod中所有的容器共享同一个IP。为了解决Pod IP地址不是持久性的,可能会进行更改,k8s采用service对pod进行抽象,集群节点所在的网络,这个网络就是你的主机所在的网络,通常情况下是你的网络基础设施提供。原创 2022-10-28 17:00:59 · 8591 阅读 · 117 评论 -
【K8S系列】第八讲:Kubernetes 之kubectl 常用命令汇总
在控制台输入会出现以下界面,大概稍微列出来一些常用命令,如下图:get显示一个或多个资源describe:显示资源详情:create:从文件或标准输入创建资源:createupdate:从文件或标准输入更新资源:delete:通过文件名、标准输入、资源名或者 label 删除资源:log:输出 pod 中一个容器的日志::对指定的 RC 执行滚动升级exec:在容器内部执行命令:将本地端口转发到 Podproxy:为 Kubernetes API server 启动代理服务器run。原创 2022-10-31 16:42:44 · 4611 阅读 · 11 评论 -
【K8S系列】Pod重启策略及重启可能原因
1 重启策略1.1AlwaysPod中的容器,不管因为什么原因停止,都会自动重启。该为默认策略,没有定义重启策略时,默认的就是always1.2OnFailurePod中的容器,非正常停止/异常退出时,会自动重启容器,如果是正常停止,则不会1.3NerverPod中容器不管以什么原因退出,都不会自动重启容器自动重启的可能原因:1.Xms超出了k8s分配2.docker容器的内存限制3.出现OOMKilled事件原创 2023-01-30 18:32:48 · 14366 阅读 · 65 评论 -
【K8S系列】第十三讲:Ingress详解
NotePortIngressNodePort方式:最大的缺点是会占用很多集群机器的端口,而且需要在外部搭建额外的负载均衡;LB方式:最大的缺点则是每个service一个LB,有点浪费,并且需要k8s之外的支持,【eg:cloud provider】;ingress: Ingress就是为了解决1,2两种方式的限制,只需要一个NodePort或者一个LB就可以满足所有service对外服务的需求。原创 2022-12-23 17:56:29 · 21486 阅读 · 101 评论 -
【K8S系列】第十讲:kubectl 命令大全
目录序言1.基本介绍1.1 命令格式介绍2 基础命令2.1 create2.2 delete2.2.1 根据yaml删除资源2.2.1 根据名称删除资源2.3 get2.3.1查看pod列表2.3.2 查看node2.3.3 查看svc2.3.4 查看all2.3.5 查看ns2.3.4 查看deploy2.3 run 2.4 explain2.5 edit3.故障命令3.1 describe3.2 logs3.2.1 查看容器快照3.2.2 查看已停止的容器3.3 exec 2.2 delet原创 2022-12-03 22:31:49 · 9291 阅读 · 108 评论 -
【K8S系列】第十一讲:包管理神器-Helm
Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。类似于:Ubuntu 中的 APTCentOS 中的 YUM主要功能:创建:创建新的charts打包:将charts打包成tgz文件交互:与chart仓库交互安装:安装和卸载K8s的应用管理:管理使用Helm安装的charts的生命周期原创 2022-12-13 08:04:14 · 6929 阅读 · 85 评论 -
【K8S系列】第十二讲:Service进阶
Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组一种可以访问这组Pod的策略也可以理解为微服务。这一组 Pod 能够被 Service 访问到,通常是通过Label Selector实现的。Service 通过标签来选取服务后端,一般配合Deployment从而保证后端容器的正常运行。这些匹配标签的 Pod IP 和端口列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些 endpoints 上。原创 2022-12-19 21:44:15 · 7202 阅读 · 79 评论 -
【K8S系列】第十四讲:初识K8s架构之服务器的变迁
在介绍K8S架构之前,先介绍一下服务器的演变过程:物理机时代虚拟机时代容器化时代一台物理机上可以部署多个虚拟机一个虚拟机,可以运行多个容器资源的利用单元,越来越小容器编排是指自动化容器的部署、管理、扩展和联网。容器编排可以为需要部署和管理成百上千个容器和主机的企业提供便利。置备和部署配置和调度资源分配容器可用性根据平衡基础架构中的工作负载而扩展或删除容器负载平衡和流量路由监控容器的健康状况根据运行应用的容器来配置应用保持容器间交互的安全。原创 2023-02-28 10:45:15 · 6858 阅读 · 39 评论 -
【K8S系列】深入解析 k8s:入门指南(二)
在使用Kubernetes时,需要熟悉Kubernetes的核心概念和机制,并学习如何使用API和CLI工具进行操作。同时,还需要掌握Docker等容器技术,以便将应用程序打包成容器镜像,并部署Kubernetes集群中。Kubernetes是一种强大的容器编排平台,它可以帮助开发者更轻松地管理容器化应用程序。学习之路也是任重而道远,大家一起加油吧!!原创 2023-03-17 16:22:48 · 28433 阅读 · 33 评论 -
【K8S系列】深入解析无状态服务
无状态服务是一种不需要保存任何数据状态的服务,也不需要维护任何会话信息的服务。这些服务通常被设计为可扩展和高可用性的,因为它们可以在任何时间点部署或删除,而不会对应用程序的可用性产生影响。无状态服务并不适用于所有的应用程序。一些应用程序可能需要维护会话信息、状态信息或持久化数据,这就需要使用有状态服务。因此,在设计应用程序时,需要考虑应用程序的特定要求,以确定应该使用无状态服务还是有状态服务。DeploymentDeployment资源控制器。原创 2023-03-27 15:26:00 · 16390 阅读 · 34 评论 -
【面试题系列】K8S常见面试题
希望此文,能帮助读者在遇到K8S相关面试问题,能对答如流无论使用哪种自动伸缩方法,Kubernetes 都会根据应用程序的需求自动调整 Pod 的数量和资源限制,以确保应用程序始终具有足够的资源,并且可以根据需要扩展或缩减。Kubernetes 会根据当前节点的资源使用情况,将 Pod 动态地调度到具有可用资源的节点上,从而实现资源的最优分配。:一旦Pod被调度到节点上,kubelet代理将创建Pod中定义的每个容器,并使用相应的容器映像来填充它们……………………原创 2023-03-17 18:10:01 · 5505 阅读 · 37 评论 -
【K8S系列】深入解析有状态服务
在 Kubernetes 中,有状态服务可以使用StatefulSet 来进行部署和管理。StatefulSet 可以确保有状态服务的有序部署和缩放,并在节点失败时自动重新启动实例。与 Deployment 不同,StatefulSet 提供了稳定的网络标识符和稳定的存储卷名称,以确保有状态服务在重新调度后仍能够保持其身份和数据。原创 2023-03-27 09:27:16 · 21434 阅读 · 41 评论 -
【K8S系列】深入解析控制器
回忆一下,我和你详细介绍了 Pod 的用法,讲解了 Pod 这个 API 对象的各个字段。而接下来,我们就一起来看看“编排”这个 Kubernetes 项目最核心的功能吧。实际上,你可能已经有所感悟:Pod 这个看似复杂的 API 对象,实际上就是对容器的进一步抽象和封装而已。说得更形象些,“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说,还是太过简单了。这就好比,集装箱固然好用,但是如果它四面都光秃秃的,吊车还怎么把这个集装箱吊起来并摆放好呢?所以,原创 2023-03-29 13:33:59 · 30730 阅读 · 54 评论 -
【K8S系列】深入解析Pod对象(二)
Kubernetes(k8s)中的Volume 是一种抽象概念,用于表示容器中的存储设备。Volume 可以包含多个容器,以便它们可以在容器之间共享数据。Volume 在容器内部进行挂载,从而使容器中的应用程序可以像使用本地存储设备一样使用它们。Kubernetes 中的 Volume 具有以下特点:生命周期:Volume 可以独立于容器而存在,因此可以在容器之间共享和重用数据。类型:Kubernetes 中支持多种类型的 Volume,例如等等。原创 2023-03-23 10:31:20 · 19406 阅读 · 45 评论 -
【面试题系列】K8S面试题(二)
当回答这个问题时,可以先解释什么是有状态服务和无状态服务然后根据上述几个方面说明它们之间的区别举例说明哪些应用程序属于有状态服务,哪些应用程序属于无状态服务此外,可以进一步说明如何在Kubernetes中部署、管理和操作这些服务在Kubernetes中,有状态服务通常指那些需要持久性存储(例如数据库)或在运行期间需要保持某些状态(例如缓存)的应用程序。相反,无状态服务通常指那些不需要持久性存储且可以随时替换的应用程序,它们不会在运行期间保持任何状态。原创 2023-03-28 15:39:34 · 15600 阅读 · 5 评论 -
【K8S系列】Pod详解
Kubernetes(简称k8s)是一个流行的开源容器编排系统,它能够简化应用程序部署、管理和扩展。在Kubernetes中,Pod是最基本的部署单元。本文将对Kubernetes Pod进行详细介绍。Pod是Kubernetes中最小的可部署单元,它是一个或多个紧密关联的容器的组合,这些容器共享同一个网络命名空间和存储卷。Pod提供了一个抽象层,它封装了容器在节点上的运行环境,例如存储、网络和运行时环境。原创 2023-03-20 09:28:09 · 15584 阅读 · 80 评论 -
【K8S系列】深入解析StatefulSet(二)
StatefulSet 为每一个 Pod 分配并创建一个同样编号的 PVC。这样,Kubernetes 就可以通过 Persistent Volume 机制为这个 PVC 绑定上对应的 PV,从而保证了每一个 Pod 都拥有一个独立的 Volume。有了唯一编号之后,StatefulSet 就使用 Kubernetes 里的两个标准功能:Headless Service、PV/PVC,实现了对 Pod 的拓扑状态和存储状态的维护。原创 2023-04-06 21:06:13 · 31297 阅读 · 56 评论 -
【K8S系列】深入解析滚动升级
Kubernetes是一个流行的容器编排平台,其中的控制器是Kubernetes的核心组件之一,它可以控制Pod的部署和管理。滚动升级是Kubernetes中的一种重要的控制器操作,可以让用户在不中断服务的情况下对应用程序进行升级。本文将深入解析Kubernetes控制器滚动升级的原理和实现方法。滚动升级是指在不中断服务的情况下对应用程序进行升级的操作。在Kubernetes中,滚动升级是通过控制器来实现的。原创 2023-03-31 21:46:34 · 31718 阅读 · 65 评论 -
【K8S系列】深入解析StatefulSet(一)
简单介绍一下这个专栏要做的事:主要是深入解析每个知识点,帮助大家完全掌握k8s,Kubernetes StatefulSet是一种用于运行有状态应用的控制器。StatefulSet是一个有序的、可标识的Pod组,并且每个Pod都有一个独特的标识符。这使得StatefulSet能够管理有状态应用程序,例如数据库或队列服务,这些应用程序需要稳定的网络标识符或持久性存储,并且需要有序的、逐个更新的部署方式。应用实例之间有不对等关系实例对外部数据有依赖关系的应用就被称为“有状态应用。原创 2023-04-04 09:20:14 · 40967 阅读 · 58 评论 -
【K8S系列】深入解析 ReplicaSet
Kubernetes ReplicaSet 是 Kubernetes 中的一个重要组件,它用于确保指定数量的 Pod 副本正在运行。在本节中,我们将深入探讨 Kubernetes ReplicaSet 的一些关键特性和使用方法。原创 2023-03-30 22:20:14 · 41196 阅读 · 39 评论 -
【K8S系列】深入解析DaemonSet
Kubernetes是一个容器编排平台,其中DaemonSet是Kubernetes中的一个重要概念。DaemonSet是一种控制器,用于在集群内运行一组Pod,并确保每个节点上都有一个Pod副本在运行。1.2 常用特性下面是一些DaemonSet的常用特性:只在特定的节点上运行Pod:可以使用NodeSelector或者NodeAffinity来限制DaemonSet的Pod只在特定的节点上运行。根据节点的标签更新Pod:如果在集群中添加或删除了节点,Kubernetes会通过DaemonS原创 2023-04-10 19:56:45 · 38703 阅读 · 73 评论 -
【K8S系列】深入解析Job
k8s中的Job和CronJob是两种不同的控制器类型,用于在k8s集群中运行任务。我们总结一下它们的技术总结和使用场景总结。Job的使用场景:1,在集群中运行一次性任务,例如批处理作业、数据导入等。2,任务需要确保只运行一次,并且可以自动重新启动任务。CronJob的使用场景:1,在集群中定期运行任务,例如备份、数据清理等。2,任务需要按照一定的调度计划运行。原创 2023-04-13 22:49:56 · 28998 阅读 · 64 评论