3-Kubernetes容器编排
文章平均质量分 91
Kubernetes,简称k8s,是由Google开源的一个容器编排平台,用于部署、管理和扩展容器化应用程序。Kubernetes提供了自动化容器部署、自动化扩缩容、自动化故障处理、负载均衡、服务发现等强大功能,可以帮助开发人员和运维人员管理大规模容器化应用程序,并提供统一的管理界面。
神奇的海马体
拥有RHCE、RHCAS、CKA证书,主分享Linux运维、云原生相关技术博文,感谢您的关注。
展开
-
部署Rancher2.9管理K8S1.26集群
Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。容器管理:Rancher 支持 K8S,允许用户通过 Web 界面集中管理多个 K8S集群,用户通过简单的几步就能够部署k8s资源;多云支持:Rancher 提供了对多个云提供商的支持,如 AWS、Azure、Google Cloud 等;高可用性:Rancher 高可用模式,确保平台本身的稳定性和容错性。原创 2024-09-01 20:13:38 · 2745 阅读 · 4 评论 -
【Kubernetes部署篇】二进制搭建K8s高可用集群1.26.15版本(超详细,可跟做)
kube-scheduler,负责将 Pods 调度到合适的节点上,根据预定义的策略和资源的可用性,选择最适合的节点以运行 Pod,kube-scheduler 会考虑各种因素,如节点资源、Pod 需求、亲和性和反亲和性规则等,确保 Pod 在集群中均匀地分布并满足性能需求。提示:在master-1、master-2、master-3中部署组件,证书和配置的可以先在其中一台生成,然后拷贝到其他master主机中。1、创建etcd目录(master-1、master-2、master-3中都要先创建)原创 2024-08-30 16:39:53 · 2214 阅读 · 0 评论 -
K8S对接Ceph分布式存储
Ceph 是一个开源的分布式存储系统,用于提供高性能、高可靠性的对象存储、块存储和文件系统,它通过去中心化的架构,自动处理数据复制和恢复,旨在提供弹性扩展和容错能力。Ceph包含一下几种存储类型:(1)块存储(RBD):用途: 提供了高性能的块级存储,类似于传统的磁盘驱动器。通常用于虚拟机的存储或数据库的存储。接口: 通过 Ceph 的 RADOS(Reliable Autonomic Distributed Object Store)接口提供块设备。原创 2024-08-25 04:59:06 · 1606 阅读 · 0 评论 -
【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群
系统的仓库源为例,如果系统版本不同,可到阿里镜像仓库寻找对应版本!把Key添加到本地trusted数据库中。配置定时任务,每天凌晨1点自动同步时间。启动Docker && 加入开机自启动。修改主机名,请复制到对应服务器执行。2、配置国内仓库源,安装所需依赖。禁止开机自启动swap交换分区。验证定时任务是否配置成功。3、添加本地域名解析。6、安装Docker。添加Docker仓库。配置Docker驱动。原创 2023-08-05 15:40:29 · 1811 阅读 · 2 评论 -
【Kubernetes运维篇】ingress-nginx实现业务灰度发布详解
这个时候就可以利用 Nginx Ingress 基于 Header 或 Cookie 进行流量切分的策略来发布,业务使用 Header 或 Cookie 来标识不同类型的用户,我们通过配置 Ingress 来实现让带有指定 Header 或 Cookie 的请求被转发到新版本,其它的仍然转发到旧版本,从而实现将新版本灰度给部分用户。:基于服务权重的流量切分,适用于蓝绿部署,权重范围 0 - 100 按百分比将请求路由到 Canary Ingress 中指定的服务。原创 2023-07-25 19:03:47 · 2872 阅读 · 3 评论 -
【Kubernetes部署篇】ingress-nginx高可用架构实施部署
(Keepalived Master操作,我这里将16.32.15.201定义为主)1、上面部署ingress controller分配在不同的两台Node节点。2、修改Keepalived Master节点配置文件,并启动。1、编写YAML文件,基于官方下载,根基自己需求进行对应修改。3、修改Keepalived Backup节点配置文件,并启动。3、在主机启动,VIP会自动表漂移到主机。3、查看创建的Pod资源状态是否已运行。1、创建后端Pod、Server资源。2、在备机,查看VIP是否漂移过去。原创 2023-07-23 21:42:09 · 1405 阅读 · 3 评论 -
【Kubernetes资源篇】ingress-nginx最佳实践详解
是一个七层负载调度器,常见的七层负载均衡器有nginx、traefik,以我们熟悉的nginx为例,客户端的请求首先会到Ingress Controller七层负载调度器,由七层负载调度器将请求代理到后端的Pod。以Nginx举例,客户端请求首先会到Nginx中,由Nginx中的upstream模块将请求代理到后端的服务上,但是K8s场景下,后端Pod的IP地址不是固定的,因此在Pod前面需要添加一个service资源,请求到达Service,由Service代理到后端的Pod。原创 2023-07-23 17:04:17 · 4055 阅读 · 2 评论 -
【Kubernetes运维篇】RBAC之准入控制器详解
如果我们在创建Pod定义了资源上下限,但不满足LimitRanger规则中定义的资源上下限,此时LimitRanger会拒绝创建Pod资源,如果创建Pod时没有指定资源上下限,默认会使用LimitRanger规则中的资源上下限制。强制执行资源限制:LimitRanger可以确保Pod或容器只使用指定的资源限制,通过对Pod的准入控制来强制执行这些限制。通过设置配额限制,可以控制每个命名空间可用的资源总量,以及每个命名空间中每种资源的使用情况。,防止在一个名称空间下的Pod占用过多的资源,原创 2023-07-16 13:28:10 · 6337 阅读 · 0 评论 -
【Kubernetes运维篇】RBAC认证授权详解(二)
使用RoleBinding有名称空间限制,只能绑定同一个名称空间的角色,使用ClusterRoleBinding没有名称空间限制,为集群范围内授权。在K8S中,所有资源对象都是通过API进行操作,他们保存在ETCD里面,而对ETCD的操作,我们需要通过访问kube-apiserver来实现,Role是一组权限的集合,在名称空间下定义的角色,只能对名称空间下进行资源授权。注意:创建名称空间后,都会存在一个默认的SA账户,如果该名称空间下创建的资源没有指定SA,默认使用。原创 2023-07-15 20:20:40 · 6526 阅读 · 0 评论 -
【Kubernetes运维篇】RBAC之创建集群用户管理K8S
用户加入集群用户中,用来认证apiserver的连接。用户加入集群用户中,用来认证apiserver的连接。系统用户提交给新来的运维同事等,让新来的同事只有在。的权限,因为是查看所有命名空间Pod,所以这里使用。第九步:切换lisi用户测试权限。可以切换后,先切换回来管理用户。第九步:在Linux中添加一个。可以切换后,先切换回来管理用户。第十步:在Linux中添加一个。第二步:生成一个证书请求。第二步:生成一个证书请求。用户,默认没有任何权限。用户,默认没有任何权限。用户,测试是否有权限。原创 2023-07-15 19:41:26 · 6330 阅读 · 0 评论 -
【Kubernetes运维篇】RBAC认证授权详解(一)
RBAC是一种基于角色访问控制方式,它将权限和角色相关联,用户加入到角色中,就会拥有角色中的权限,RBAC的核心思想是,将权限赋予给角色,角色中加入多个用户,加入进来的用户会具有角色的权限,如果修改权限也是针对角色进行操作,而不是针对每个用户进行权限操作,这样效率太低了。官方中文参考文档在K8S中准入控制器的模块有很多,其中比较常用的有LimitRanger、ResourceQuota、ServiceAccount,也是K8S默认启用的准入模块(具体看K8S版本),我们只需要定义对应的规则即可。原创 2023-07-08 21:16:18 · 17900 阅读 · 4 评论 -
【Kubernetes资源篇】Secret加密数据配置管理详解
用于存放明文非加密数据,比如程序的配置文件等信息,ConfigMap并不能实现加密,如果存放一下token、密码、秘钥等敏感信息我们要使用Secret类型来进行加密。使用busybox镜像创建Deployment资源,并引入Secret。创建deployment,引入secret。上篇文章讲解了 ConfigMap资源。原创 2023-07-02 12:08:30 · 16996 阅读 · 1 评论 -
【Kubernetes资源篇】ConfigMap配置管理中心详解
ConfigMap是API对象,用于存放明文(非机密性)数据保存到键值对中,可以使用环境变量、命令行参数或者存储卷方式应用到Pod中,ConfigMap相当于Pod中程序的配置文件,通过修改ConfigMap内容来修改程序的配置。原创 2023-07-01 18:00:04 · 18390 阅读 · 4 评论 -
【Kubernetes资源篇】DaemonSet控制器入门实战详解
DaemonSet控制器用于控制每个Node节点有运行指定Pod副本集,当添加或删除Node节点时,DaemonSet会自动创建指定的Pod副本集,来保证每一个Node节点都运行此Pod。用于收集日志、监控等场景。DaemonSet rollingUpdate更新策略是先删除旧版本Pod,在创建新版本Pod,因为每个Node节点只能创建一个Pod副本集。原创 2023-06-23 16:42:34 · 17724 阅读 · 9 评论 -
【Kubernetes资源篇】StatefulSet有状态服务管理入门实战详解
无状态服务则是指不需要持久化存储和状态的服务,例如Web服务器、API服务器等。这些服务可以在任何节点上运行,因为它们不需要在不同节点之间共享数据,也不需要在节点故障时进行快速恢复。无状态服务可以通过水平扩展来提高性能和可用性。有状态服务是指需要持久化存储并且需要保持状态的服务,例如数据库、缓存等。这些服务需要在不同的节点之间保持数据同步,并且需要在节点故障时能够快速恢复。statefulset管理的Pod名称是有序的,删除指定Pod后自动创建的Pod名称不会改变。原创 2023-06-22 18:35:50 · 19167 阅读 · 5 评论 -
【Kubernetes存储篇】StorageClass存储类动态生成PV详解
1、搭建NFS服务端2、搭建NFS供应商,指定NFS服务端IP地址及共享目录3、创建StorageClass资源,指定使用NFS供应商4、创建PVC,使用自动指定使用StorageClass5、创建Pod,使用PVC。原创 2023-06-11 21:10:36 · 4336 阅读 · 3 评论 -
【Kubernetes存储篇】持久化存储PV、PVC详解
pvc和pv绑定,如果使用默认的回收策略retain,那么删除pvc之后,pv会处于released状态,我们想要继续使用这个pv,需要手动删除pv,kubectl delete pv pv_name,删除pv,不会删除pv里的数据,当我们重新创建pvc时还会和这个最匹配的pv绑定,数据还是原来数据,不会丢失。如下图,我是用的是只读的 PVC,容器里面应当没有创建文件权限,但是容器里面确实可以创建文件,我咨询了云原生领域大佬,这应该是K8S PVC bug,我当前K8S版本是:v1.27.0。原创 2023-06-11 16:47:07 · 6426 阅读 · 0 评论 -
【Kubernetes存储篇】常见存储方案及场景分析
因为Pod是有生命周期的,如果pod不挂载数据卷,那pod被删除或重启后这些数据会随之消失,如果想要长久的保留这些数据就要用到pod数据持久化存储。上面curl 两个节点上的Pod都可以访问,说明挂载nfs存储卷成功了,nfs支持多个客户端挂载,可以创建多个pod,挂载同一个nfs服务器共享出来的目录;NFS共享存储卷,需要先搭建NFS服务端,Pod共享NFS服务端数据,解决了Pod调度在不通Node节点,导致数据不一致问题,但是NFS需要依赖网络带宽。删除此Pod,节点上的数据依旧存在。原创 2023-06-11 16:43:50 · 4364 阅读 · 0 评论 -
【Kubernetes资源篇】Service四层代理入门实战详解
场景:创建Service资源,代理本机的3306端口首先在宿主机安装、启动MySQL服务我们svc中没有定义关联的Pod标签,所以svc中并Endpoint为none创建Endpoint资源 并关联上面的SVC。原创 2023-06-09 17:38:48 · 2350 阅读 · 1 评论 -
【Kubernetes资源篇】Deployment控制器入门实战详解
Deployment是ReplicaSet的高级别抽象,ReplicaSet控制器有的功能Deployment全部具备,ReplicaSet没有的Deployment也具备比如,它提供了滚动升级和回滚的功能。Deployment是控制多个ReplicaSet,从而可以实现无缝升级和回滚。选择器:ReplicaSet使用标签选择器来选择要管理的Pod副本。伸缩性:Deployment高级控制器可以根据负载自动伸缩容器数量,以满足应用程序的需求。原创 2023-06-03 19:07:20 · 17553 阅读 · 4 评论 -
【Kubernetes部署篇】Ansible自动化工具离线部署K8s 1.27版本
第五步:执行剧本,过程耐心等待,离线部署不涉及网络,较快,大约(10分钟)第四步:指定Packages目录位置(必须)第三步:配置安装主机信息(必须)第二步:安装ansible命令。第六步:验证集群,状态为。第一步:获取离线安装包。原创 2023-05-30 17:37:31 · 18735 阅读 · 9 评论 -
【Kubernetes资源篇】Replicaset控制器入门实战详解
ReplicaSet是k8s中一种资源对象,简写rs用于管理Pod副本数量和健康状态,在字段中可以定义Pod副本数量,ReplicaSet会始终保持Pod在指定数量,当发现Pod数量大于副本数量时,会移除多出的Pod,当发现Pod小于副本数量会自动创建Pod,使其始终维护在副本数量,此外,ReplicaSet还会监控Pod的健康状态,如果某个Pod出现故障,ReplicaSet会自动替换它。自动化管理:ReplicaSet可以自动地创建、删除和更新Pod副本,以确保指定数量的Pod副本一直在运行。原创 2023-05-28 15:18:47 · 18059 阅读 · 2 评论 -
【Kubernetes运维篇】零故障升级Pod健康探测详解
Pod探测是Kubernetes中的一种机制,用于检测Pod的状态和健康状况。当探测到Pod状态不正常时,根据重启策略进行相应的Pod操作,探测可以帮助Kubernetes集群自动化地管理容器的健康状态,提高应用程序的可靠性和可用性。探测针对Pod中容器进行操作,所以探测定义在字段下面1、探测总结:启动探测(startupProbe):探测容器中程序是否启动,如果失败,根据重启策略进行对应操作。原创 2023-05-27 20:17:23 · 13193 阅读 · 1 评论 -
【Kubernetes运维篇】Pod生命周期、启动停止钩子详解
2、初始化容器(initContainers):一个Pod可以定义任意个初始化容器,如上图就定义了两个初始化容器,初始化会按照YAML清单中顺序执行,当最后一个初始化容器执行成功后,才会去启动主容器。来定义初始化容器,可以定义多个初始化容器,会按照顺序一次执行,执行完成后依次关闭初始化容器。实例:定义Pod资源,创建两个初始化容器,初始化容器执行 sleep 2,也就是说我们要等定义的两个初始化容器都睡眠2秒后,才创建主容器。实例:创建Pod定义停止钩子,在容器停止前,优雅的关闭容器内服务。原创 2023-05-21 17:53:55 · 18867 阅读 · 3 评论 -
【Kubernetes运维篇】污点、容忍度与Pod重启策略详解
表示满足其中一项即可容忍,下面Pod没有定义key,value,表示没有key,value方面限制,容忍排斥等级=NoSchedule的节点。Pending(挂起):Pod 已经被 Kubernetes API 接受,但是容器镜像还没有被拉取到本地,或者某些容器正在等待其他容器启动。Pod的重启策略,应用于Pod中所有的容器,可以通过在 Pod 的 YAML 文件中设置。查看状态,因为没有任何节点满足该Pod容忍,所以该Pod处于Pending状态。查看状态,Pod成功调度,且状态为。原创 2023-05-20 23:01:43 · 3625 阅读 · 0 评论 -
【Kubernetes运维篇】标签、Node选择器与亲和性详解
Node选择器是指,我们在创建Pod资源时指定该Pod资源运行在那台Node节点上,默认schedule会根据资源随机调度到一个工作节点,但是我们可以通过nodeName、nodeSelector在指定运行到那台Node节点。,通过使用Node亲和性,可以将Pod调度到具有特定硬件、软件或其他特定属性的节点上,以满足应用程序的需求。执行后 会看到创建的Pod资源,即使没有满足标签的Node节点,也会找一台Node创建Pod资源。例如,可以将需要GPU支持的Pod调度到具有GPU的节点上,以获得更好的性能。原创 2023-05-17 09:26:50 · 4988 阅读 · 0 评论 -
【Kubernetes资源篇】Namespace名称空间详解
可以通过Resource Quota来限制Namespace中资源的使用,资源配额是一种控制机制,可以限制Namespace中资源使用量,包括CPU、内存、存储等。命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间。如果Namespace进行了资源配额了,那么在创建Pod时必须使用resources进行限制。可以抽象的吧Namespace理解为,QQ分组,分组中存着不同的好友,好友就是容器。第二种:通过YAML资源清单进行创建Namespace。原创 2023-05-08 17:13:15 · 20934 阅读 · 2 评论 -
【Kubernetes资源篇】Pod最小调度单元入门实战详解
大小写敏感;使用缩进表示层级关系;缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格;字符后缩进一个空格,如冒号,逗号,短横杆(-) 等"—"表示一个文件的开始 “…” 表示一个文件的结束"#"表示注释。原创 2023-05-07 16:10:19 · 18765 阅读 · 0 评论 -
【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本
ctr支持多种容器运行时,包括Docker、containerd、CRI-O等,而crictl只支持CRI(Container Runtime Interface)兼容的容器运行时,如CRI-O、containerd等。5、查看镜像,咱们使用containerd拉取的镜像,使用docker images命令是查看不到镜像的。ctr提供了更多的功能,如镜像管理、网络管理、卷管理等,而crictl只提供了基本的容器管理功能,如容器创建、删除、启动、停止等。原创 2023-05-04 20:35:44 · 91521 阅读 · 18 评论 -
【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本
在 Kubernetes 中,Kubelet 使用 CRI 接口与容器运行时进行通信,而 crictl 工具则可以用于直接与容器运行时进行交互。ctr支持多种容器运行时,包括Docker、containerd、CRI-O等,而crictl只支持CRI(Container Runtime Interface)兼容的容器运行时,如CRI-O、containerd等。ctr提供了更多的功能,如镜像管理、网络管理、卷管理等,而crictl只提供了基本的容器管理功能,如容器创建、删除、启动、停止等。原创 2023-04-26 11:13:31 · 50501 阅读 · 0 评论 -
【Kubernetes部署篇】K8s图形化管理工具Dasboard部署及使用
Kubernetes Dashboard是一个Web UI,用于管理Kubernetes集群中的应用程序和资源。它提供了一个可视化的界面,可以方便地查看和管理Kubernetes集群中的各种资源,如Pod、Deployment、Service、ConfigMap等。Dashboard还提供了一些高级功能,如日志查看、资源监控、命名空间管理等。官方GitHub官方下载地址网盘下载地址。原创 2023-04-24 15:17:10 · 51677 阅读 · 0 评论 -
【Kubernetes部署篇】一键安部署K8s单机版脚本(需要联网)
2、查看Pod状态:如果不是Running状态,请耐心等待。4、验证是否可调度 及 CoreDNS解析。原创 2023-04-22 19:34:34 · 20549 阅读 · 6 评论 -
【Kubernetes部署篇】Kubeadm方式搭建K8s高可用集群1.23.0版本
Docker默认使用的Cgroup Driver为默认文件驱动,而k8s默认使用的文件驱动为systemd,k8s要求驱动类型必须要一致,所以需要将docker文件驱动改成systemd,并且配置国内加速器。在kubernetes中Service有两种代理模型,一种是基于iptables的,一种是基于ipvs,两者对比ipvs的性能要高,如果想要使用ipvs模型,需要手动载入ipvs模块。在 master-1、 master-2主机同步执行,Nginx配置是一致的。原创 2023-04-21 23:50:33 · 23679 阅读 · 1 评论 -
【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.23.0版本
不止这些,需要用到其他组件,就需要开放组件的端口号,列如CNI网络插件calico需要179端口、镜像私服需要5000端口,根据所需集群组件在防火墙上面放开对应端口策略。在Kubernetes中Service有两种代理模型,分别是iptable和IPVS,两者对比IPVS的性能高,如果想要使用IPVS模型,需要手动载人IPVS模块。kubeadm将使用kubelet服务以容器方式部署kubernetes的主要服务,所以需要先启动kubelet服务。的插件,本文使用的是kubernetes1.23版本。原创 2023-04-21 14:43:38 · 22814 阅读 · 0 评论 -
【Kubernetes理论篇】Kubernetes核心组件及资源介绍
Service(4层代理):在k8s中,Pod是有生命周期的,如果Pod重启IP很有可能会发生变化。如果我们的服务都是将Pod的IP地址写死,Pod的挂掉或者重启,和刚才重启的pod相关联的其他服务将会找不到它所关联的Pod,为了解决这个问题,在k8s中定义了service资源对象,Service 定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用集群实例,service是一组Pod的逻辑集合,这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector实现的。原创 2023-04-21 10:05:21 · 24920 阅读 · 0 评论
分享