- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 Kubernetes从零到精通(17-扩展-Operator模式)
Operator模式是通过扩展Kubernetes的API来管理特定的应用程序或服务,它是以Kubernetes的控制器为核心的设计模式,允许开发者用Kubernetes的标准工具来管理应用程序的生命周期。:Operator是结合了CRD和控制器的具体实现,能够以自动化的方式管理和操作复杂的应用程序。Kubernetes中可以通过CRD自定义自己的资源类型(Custom Resource, CR),这些资源类型可以是应用特定的,例如数据库实例、缓存集群等。上找到现成的、适合自己需求的Operator。
2024-09-30 12:22:45
1226
原创 Kubernetes从零到精通(16-扩展-CRD、Custom Controller)
默认的功能可能不完全满足实际的需求(例如数据库集群的创建、扩缩容、备份、恢复等操作),所以,Kubernetes提供了让用户自定义资源和控制器的功能,借助这些功能,我们可以扩展Kubernetes的能力,实现类似原生资源的管理。通过CRD,用户可以定义Kubernetes之前不存在的资源类型,并将其注册到Kubernetes API Server中,从而使其像Pod、Service这样的原生资源一样被管理和操作,当然也可以用kubectl进行管理。CRD定义了CR的结构和行为,CR则是具体的数据实例。
2024-09-29 18:11:41
1225
原创 Kubernetes从零到精通(14-Storage)
在Kubernetes中,存储是一个关键的部分,用于持久化应用程序的数据。Kubernetes的存储模型支持多种存储类型,并且能根据应用程序的需求动态地提供存储资源。以下是Kubernetes存储的基本概念和机制。Kubernetes支持很多类型的卷。Pod可以同时使用任意数目的卷类型。临时卷类型的生命周期与Pod相同,但持久卷可以比Pod的存活期长。;。对于给定Pod中任何类型的卷,在容器重启期间数据都不会丢失。
2024-09-24 23:11:20
1352
原创 Kubernetes从零到精通(13-Configmap、Secret)
ConfigMap是一种用于存储非机密的键值对数据的对象,通常用于配置文件、环境变量、命令行参数等。它允许你将配置数据与容器化的应用程序分离,从而让应用在不同的环境中具有更好的灵活性。存储配置信息:你可以将环境相关的配置(例如数据库URL、服务端口等)存储在ConfigMap中,部署应用时将这些配置注入到Pod中。存储非敏感信息:它用于存储非机密的配置信息,而敏感数据则使用Secret。通过环境变量挂载到文件系统。
2024-09-23 16:39:47
1067
原创 Kubernetes从零到精通(12-Ingress、Gateway API)
它将网关(Gateway)和路由(Routes)解耦,允许更复杂的配置,并支持多种协议(不仅仅是HTTP/HTTPS,还包括TCP、UDP 等)。但Ingress/Gateway API提供了更高级、灵活的流量管理、安全认证、跨协议等功能,解决了Service的局限性。它们的基本原理是通过配置规则,将来自外部的网络流量路由到Kubernetes集群内部的服务上。Ingress是Kubernetes中较早提出的网络流量管理机制,目的是通过一个单一的入口点管理集群的外部HTTP和HTTPS流量。
2024-09-18 18:42:37
1192
原创 Kubernetes从零到精通(11-CNI网络插件)
Flannel是一种简单易用的Kubernetes网络插件,专注于为Kubernetes提供容器网络解决方案。它的主要作用是为Kubernetes集群中的Pod提供跨主机的网络连接,允许不同节点上的Pod能够互相通信。Flannel是一种覆盖网络(overlay network)实现,底层依赖于封装(encapsulation)技术来跨越不同节点的网络边界。Calico是一种广泛使用的Kubernetes网络插件,主要用于提供容器网络和网络安全策略。
2024-09-18 12:56:17
1929
原创 Kubernetes从零到精通(10-服务Service)
现在如果某组Pod A需要访问另一组Pod B,A就需要在应用的配置参数里动态跟踪并更改B的ip和端口,把这种需求放在业务端去实现显然是非常不合理的。每当符合条件的Pod发生变更,Kubernetes控制器会更新EndpointSlice,对应的kube-proxy也会随之调整路由规则,并操作iptables或IPVS。IPVS使用更高效的哈希表来存储转发规则,具有更高的性能,适合大规模集群中的服务发现和负载均衡。仅在集群内部可以访问,提供一个虚拟IP地址供集群中的其他Pod访问,如上面的示例。
2024-09-13 17:32:24
1425
原创 Linux技术04-IPVS
IPVS(IP Virtual Server)是一种基于Linux内核的四层负载均衡技术。它是LVS(LinuxVirtualServer)框架的一部分,基于Netfilter的内核空间的工具,专门用于处理大规模网络服务的负载均衡。相比于Iptables,IPVS能更好地支持大规模高并发的流量分发。注意,IPVS只负责它所在的机器上,相关请求的负载均衡和转发动作,至于底层不同服务器上物理网络、虚拟网络等之间的流量转发,需要路由、虚拟网络等技术来实现。
2024-09-13 13:03:43
1490
原创 Kubernetes从零到精通(09-工作负载-Job、CronJob)
在Kubernetes中,Job和CronJob是两种用于执行一次性或周期性任务的工作负载类型。它们非常适合处理短暂任务、批处理任务、或定时任务。以下是它们的详细介绍。
2024-09-12 17:49:54
806
原创 Kubernetes从零到精通(08-工作负载-DaemonSet)
DaemonSet是Kubernetes中的一种工作负载类型,专门用来确保集群中的每个(或指定的)节点上都运行一个Pod实例。它非常适用于需要在集群所有节点上提供服务的场景,比如日志收集、监控代理、或者网络插件。以下是DaemonSet的创建示例:使用命令创建 DaemonSet查看 DaemonSet 的状态。
2024-09-12 16:31:08
625
原创 Linux技术03-Netfilter、Iptables、Nftables、Firewalld
Netfilter是Linux内核中的一个强大的网络数据包处理框架,主要用于实现防火墙、网络地址转换(NAT)等功能。它直接利用Netfilter的数据包处理机制,但在用户空间中提供了一个更现代的接口,统一了不同协议(IPv4、IPv6、ARP和桥接流量)的处理。2.数据包过滤和转发规则:管理员可以通过工具(如iptables或nftables)在用户空间定义数据包处理规则,这些规则被传递到内核空间并在钩子点处应用。连接跟踪模块是Netfilter的关键部分,帮助系统了解所有通过的网络连接的状态。
2024-09-11 13:41:10
1117
原创 开源反向代理工具-Nginx
NGINX 是一种高性能的反向代理服务器、负载均衡器和 HTTP 缓存服务器。它的设计初衷是为了应对高并发和低资源消耗,尤其适合处理大量的短连接请求。NGINX 的高效性能来自其事件驱动架构和异步非阻塞的处理方式。
2024-09-10 14:58:02
1456
原创 开源Devops工具-Ansible
Ansible是基于Python开发的自动化运维工具,架构相对比较简单,仅需通过SSH连接客户机执行任务即可。集合了众多运维工具(puppet、chef、func)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
2024-09-09 21:20:46
1390
原创 Kubernetes从零到精通(07-工作负载-StatefulSet)
正如Deployment管理无状态应用程序的资源,StatefulSet用来管理有状态应用程序(如kafka、redis、zookeeper集群等)的资源,它为每个 Pod 分配一个固定的名称和存储,以确保它们可以保留状态,无论Pod怎么调度,每个 Pod 的 ID都是永久不变的。StatefulSet可以与PersistentVolumeClaim(PVC)一起使用,每个Pod都可以分配到唯一的PVC,这样可以保证每个Pod拥有固定的存储,确保数据持久化。的 Redis 集群配置示例,使用持久化存储。
2024-09-09 13:00:46
458
原创 Linux技术02-KVM
虚拟机技术发展虚拟机技术发展1.全虚拟化随着x86的流行并成为了服务器的行业标准,为解决基础架构利用率低,成本高等缺点,大大促进了虚拟化技术的发展。VMware首创了纯软件实现方式并迅速抢占虚拟化市场,全虚拟化需要在VMM中模拟出一颗包含各种单元的CPU,还需要模拟一张进行虚拟存储地址和物理存储地址转换的页表,还需要模拟磁盘设备控制器、网络适配器等各种I/O外设接口。全虚拟化性能较低,技术实现异常困难。代表性产品如VMware vSphere、Hyper-V、Xen、KVM。2.半虚拟化。
2024-09-06 23:29:22
823
原创 Kubernetes从零到精通(06-工作负载-Deployment)
我们的应用以容器的形式在Kubernetes下的Pods中运行;但是,直接管理单个Pod的工作量将会非常繁琐(例如,一个Pod失败了,我们要挑选一个node节点再运行一个新的Pod来替换它,尤其是微服务框架下应用服务Pod数量非常大)。Kubernetes定义并实现了更高一层的抽象资源-工作负载。Kubernetes控制平面根据我们定义的工作负载对象规约自动管理Pod对象,其中最常见的就是Deployment。
2024-09-05 16:59:45
2077
原创 Linux技术01-虚拟网络、网络命名空间
访问外网8.8.8.8不通的原因一是因为缺少路由,二是没有设置NAT转发。首先我们添加路由然后测试发现不通^C添加NAT转发并打开linux的ipv4 forwarding功能再次测试成功:
2024-09-04 17:40:44
1161
原创 Kubernetes从零到精通(05-Pod)
上节研究了Docker Compose对容器的使用方法,有了一组容器的概念。而Kubernetes中的Pod是可以在Kubernetes中创建和管理的最小的可部署的计算单元。Pod也是一组(一个或多个)容器;这些容器共享存储(可以访问一个逻辑磁盘)、网络(可以通过localhost和端口互相访问)、以及Kubernetes提供的参数约束。同样的,除了应用容器,Pod 还可以包含在Pod启动期间运行的Init容器,也可以注入临时性容器来调试正在运行的 Pod。
2024-09-02 13:32:34
911
原创 Kubernetes从零到精通(04-容器)
虚拟化能使应用程序在不同VM之间被彼此隔离,提供一定程度的安全性,并且能够更好地利用物理服务器的资源,具有更高的可扩缩性,以及降低硬件成本等好处(如vSphere ESXi现在把5台机房中的物理服务器统一部署成虚拟化集群,管理员登陆管理页面,可以创建出20台虚拟服务器,而虚拟服务器在各个物理服务器上只不过是一个个文件,他们共享集群中的计算资源)。所以,容器比VM更轻量级,每个容器都具有自己的文件系统、CPU、内存、进程空间等,由于与基础架构分离,容器可以跨云和操作系统进行移植。
2024-08-29 15:54:52
552
原创 Kubernetes从零到精通(03-资源对象)
10.互联网用户访问Kubernetes中的业务应用方式,可以通过Service的LoadBalancer模式,这种模式一般由云服务厂商提供集成(例如AWS,用户定义Service的配置,会自动创建出AWS的NLB等);11.未体现出的资源对象,如持久化存储多用于有状态服务的Pod,配置用来分离容器应用所需的配置信息(如参数,密钥,配置文件等),命名空间用来实现多租户(如不同的业务组下的资源逻辑隔离),等等。1.基础资源对象,例如节点Node,容器组Pod,服务Service,存储卷Volume等;
2024-08-29 15:17:47
1016
原创 Kubernetes从零到精通(02-组件架构)
今天我们对Kubernetes的架构做进一步的了解,就像office分成了excel,word等组件一样,Kubernetes也拆分为多个组件,office可以选择自己需要的组件安装,而Kubernetes的这些组件大多都是必须的,每个组件有自己的功能,各个组件之间协作完成任务。
2024-08-29 15:15:27
1202
原创 Kubernetes从零到精通(01-简介)
对于大规模的应用部署,kubernetes优势明显,我们举个实例:现在有一个后端服务需要部署30个节点,如果只用docker部署,可能需要5台物理服务器或者虚拟服务器,每台服务器上部署6个节点,这样每台服务器上可能都有一个docker-compose.yml启动文件,配置参数有端口映射等,部署启动后,前端的代理服务如nginx和负载均衡,要在upstream里把这30个节点用ip:port的方式配置好;上面提到的pod和service就是kubernetes定义的基础资源对象,后面会跟其他概念一起介绍。
2024-08-29 15:12:31
1303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人