- 博客(101)
- 收藏
- 关注
原创 k8s配置资源管理
系统自建的:kubernetes.io/service-account-token用来访问系统的apiserver,pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信。保存的是不需要加密的信息。configmap在创建容器中,给他注入我们需要的配置信息,既可以是单个的属性,也可以是整个容器的配置文件。:是secret的默认模式,Opaque,base64加密编码的secret用户自定义的密码,密钥等等。
2024-01-25 15:22:27
1312
1
原创 pod控制器
pod的序号是固定的,重启之后,pod的名称也不会发生变化。可以限制部署的节点。maxUnavailable: 25%升级过程中,新的pod启动好之后,销毁的旧的pod数量不能超过期望pod数量的25%deployment的pod是没有名称的,随机字符串,无序,他需要一个集中的clusterip来集中统一为pod提供网络。statefulset是有序的,pod的名称是固定的,重建之后pod的标识符也不变,pod的名称是唯一的标识符。pod的名称都是有序的,所有的pod都是独立的,存储卷也是独立的。
2024-01-24 16:26:10
669
原创 pv和pvc存储卷
selfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连接,self-link是一个唯一标识符号,可以用于标识k8s集群当中每个资源的对象。storageclass的名称,nfs服务器的地址,以及nfs的目录。nfs的provisioner的客户端以pod的方式运行在集群当中,监听k8s集群当中pv的请求,动态的创建与NFS服务器相关的pv。hostPath:持久化存储数据,可以和节点上目录做挂载。创建账户,给卷插件能够在集群内部通信,获取资源,监听事件,创建,删除,更新pv。
2024-01-23 12:07:54
1021
原创 k8s之存储卷
1、Provisioning(配置)-------pvc请求request-------检索(找一个合适的pv)---------pvc和pv(binding绑定)--------使用-------pod被删除---------pv(releasing释放)--------recycling回收。容器和节点之间创建一个可以持久保存容器内文件的存储卷,即使容器被销毁,删除,重启,节点上的存储卷的数据依然存在,后续可以继续使用。好处就是集中,方便管理。hostPath:节点目录的存储卷,可以实现持久化存储。
2024-01-23 12:04:32
1271
原创 pod的亲和性和反亲和性
特殊情况:NoExecute依然可以部署pod,但是有生命周期,时间一到,pod会被销毁,生命周期结束之后,会被驱逐一部分pod到其他节点,有的节点还是会保留在污点节点上。拓扑域:k8s集群节点当中的一个组织结构,可以根据节点的物理关系或者逻辑关系进行划分,可以用来表示节点之间的空间关系,网络关系或者其他类型的关系。指定key的值,指标节点的标签值,但是不指定污点的类型,那么所有节点上只要包含了这个指定的标签名,可以容忍所有的污点。drain:排水,把该节点下的pod全部转移到其他的node节点上运行。
2024-01-22 16:08:56
1492
1
原创 k8s的集群调度
list-watch-----会在每一步监听的消息(APIserver:6443)------controller manager scheduler etcd都会监听apiserver:6443端口。podfitshost:pod适应主机,如果pod指定了node的name,nginx1 pod---->node01,检测主机名是否存在,存在要和pod指定的名称匹配,这样才能调度过去。硬策略(选择pod时,声明了node01,我是硬策略,必须满足硬策略的条件,必须部署在node01,强制性要求)
2024-01-22 15:57:02
1236
原创 k8s之pod基础(下)
就绪探针的特点:pod的状态是running,ready状态是notready,容器不可以提供正常的业务访问,就绪探针不会重启容器。onFailure:当pod内的容器退出时,整个pod都不会重启,只有一个或者N个容器非正常退出,状态码非0,整个pod才会重启。6、就绪探针,如果不影响容器运行,status:running,这个时候不会重启,但是,容器退出的话,就绪探针也会重启。5、在pod的生命周期当中,后续的条件是满足哪个探针的条件,触发哪个探针的条件。启动 存活 就绪都针对一个容器。
2024-01-16 14:11:09
1210
原创 pod进阶
只是在容器的启动后开始检测,容器内的应用是否启动成功,在启动探测成功之前,所有的其他探针都会处于禁用状态,但是一旦启动探针结束,后续的操作不再受启动探针的影响。livenessProbe,探测容器是否正常运行,如果发现探测失败,会杀掉容器,容器会根据重启策略来决定是否重启。响应状态码大于等于200,小于400都是成功。timeoutSeconds:探针执行检测请求后,等待响应的超时时间,默认为 1s,最小值是 1s,pod可以有多个容器,只要有一个容器退出,整个pod都会重启,pod内的所有容器都会重启。
2024-01-16 14:06:46
1033
原创 k8s之pod基础
解耦,一个pod内运行多个容器,耦合度太高,一旦一个进程失败,整个pod将全部失败,实现解耦,基于pod可以创建多个副本,实现高可用和负载均衡。一个pod内的容器,必须都运行在同一个节点。第四步:pause容器掀起的,提供命名空间,进程管理pid号1,来为pod内的容器提供共享服务以及容器的进程管理。2、pod内的容器共享ip 共享volume,解决了容器内网络通信的问题,也解决了容器内部文件共享的问题。在pod的启动过程中,启动容器时按照初始化容器先启动,每个容器必须在下一个容器启动之前,要成功退出。
2024-01-10 15:10:07
1228
原创 声明式管理方法(yaml文件)
restartPolicy指的是pod内的容器启动失败或者有问题的重启策略:Always Never Onfalie(只有异常退出才会重启,状态非0,如果状态是0,不重启),restartPolicy指的是容>器的重启策略,资源类型定义为deployment,容器的重启策略只能是Always。#这里的spec是声明容器的相关参数,虽然我制定了容器的暴露端口是80,nginx默认的镜像就是80,即使指定了其他的端口,也不会改变容器的端口。编辑好的yaml文件,还是要依靠陈述式的命令发布到k8s集群当中。
2024-01-10 15:06:14
466
原创 k8s的陈述式资源管理
发布的过程中,暂时停止,只有一部分的pod先升级,其他的pod还是处于老的版本。确定无问题之后,再把剩下的老版本,升级成新的版本,把暂停取消,继续发布。如果是基于deployment方式创建的pod,或者是daemonset方式创建的pod,是由控制器创建的pod,使用delete删除pod是不删不掉的,相当于重启pod.l。ClusterlP:创建service的默认类型,提供一个集群内部的虚拟ip地址,这是service的默认类型。pod的更新时使用,逐步的引入新的pod.逐步的减少日的pod.。
2024-01-10 15:03:41
10131
4
原创 kubeadm
node1:192.168.233.92 2核4G 4核8G docker kubelet kubeadm kubectl flannel。node2:192.168.233.93 2核4G 4核8G docker kubelet kubeadm kubectl flannel。可以在一个网络空间里面实现通信,协调这个命名空间里面的资源(实现pod内容器的兼容性)-out server.key: 指定生成的私钥文件的名称为 server.key。
2024-01-03 16:16:51
1009
原创 k8s的网络
ip地址fenpei:veth pair连接容器的部分给容器分配一个ip地址,这个ip地址是唯一标识,宿主机也会被veth pair分配一个calico网络的内部ip地址,和其他节点上的容器进行通信。BGP模式的特点:交换路由信息的外部网关协议,可以连接不同的节点,node节点可能不是一个网段,BGP实现可靠的,最佳的,而且是动态的路由选择。cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,ip地址,路由等等参数。封装:宿主机ip,容器内部的ip地址。
2024-01-03 15:57:08
1341
1
原创 k8s的二进制部署
组件:kube-apiserver kube-controller-manager kube-scheduler etcd。上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包。组件:kube-apiserver kube-controller-manager kube-scheduler。etcd是一个高可用----分布式的键值存储数据库,采用raft算法保证节点的信息一致性。:用于生成根证书和私钥的签名请求文件。
2023-12-28 17:31:20
1197
原创 k8s基础
ETCD:k8s的存储服务,etcd分布式键值存储系统(key:value),k8s的关键配置和用户配置,先通过APIserver调用etcd当中的存储信息,然后再实施(整个集群当中,能对etcd进行读写权限的,只有API-server)因为传统的部署方式:一般意义上的二进制部署,从安装----运行----运行维护,需要专业的人员,如果出了故障还需要人工重新拉起来。对docker的容器技术从应用的包--------部署--------运行---------停止---------销毁,全生命周期管理。
2023-12-25 15:22:05
934
原创 ansible的脚本-----playbook剧本
标签模块:标签模块,可以在playbook当中为任务设定标签(tags),我们在运行playbook时可以通过指定任务标签,来实现只运行设定的标签任务。#声明变量item,playbook的内置变量,with_items,会把item的值,遍历>列表当中的a,b,c,d。#声明变量item,playbook的内置变量,with_items,会把item的值,遍历>列表当中的a,b,c,d。5、Roles角色:是一种组织和封装playbook的,允许把相关的任务,变量,模板和处理器组织成一个可复用的单元。
2023-12-21 16:13:24
1222
原创 Ansible
Ansible的作用:远程操作主机功能自动化运维(playbook 剧本 yaml)是基于ptthon开发的配置管理和应用部署工具,在自动化运维中,现在是异军突起Ansible能批量配置、部署、管理上千台主机。类似于shell的一键输入的工具,不需要每次都切换主机进行操作只要有一台ansible的固定主机,就可以所有节点的操作不需要agent,客户端只需要一台主机上配置了ansibleansible是基于模块进行工作,只是提供了一种运行的架构,执行操作和辩证的是ansible的模块来实现的。
2023-12-20 19:56:36
1053
原创 docker consul
集群当中的成员,直接成为集群的leader,后续加入的服务器都是follower。服务发现:其他的服务需要和这个服务通信时,只需要向注册表查询服务位置(ip+端口),这样的话可以直接在服务注册表中,直接获取我要的信息,不需要到静态配置查看了。获取锁:微服务2,建立会话,获取锁,如果申请的锁没有被使用,客户端成功获取,如果已经存在,标识已有其他的服务在占用,会给你分配一个新的锁(KV存储)微服务1在注册到consul的时候,consul会和这个服务的会话创建一个锁,锁用来标识具体的服务器,会话和锁之间关联。
2023-12-18 15:15:52
992
原创 docker-harbor私有仓库
proxy:安装完harbor之后,他会自动生成一个nginx的容器自动对外映射,80端口,nginx前端代理,在Harbor当中,registry,UI,TOKEN,都在nginx的反向代理后面,通过nginx的代理,可以把请求转发到后端的不同应用。Registry:负责存储镜像,docker pull/push的命令都由其负责,用户进行访问控制,不同的用户对docker的镜像有不同的读写权限。基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以用于不同的权限。
2023-12-18 12:24:04
952
原创 docker-compose
docker一般都是内部访问,无需使用https。yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高,类似于json格式,语法简单。docker-compose既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。-f:使用特定的compose的模板文件,一般都是用docker-compose.yml。docker-compose:命令的开头,使用docker-compose进行容器编排。Dockerfile:先配置好文件,然后build,镜像-------->容器。
2023-12-17 00:29:32
1251
原创 dockerfile创建镜像LNMP+wordpress
安装镜像,切换到nginx里面,打开一个空文件nginx.conf。访问浏览器192.168.233.10(主机名,不是内网名)dockerfile创建镜像 LNMP+wordpress。docker network rm -f 删除网络。切换到nginx目录下,然后把软件包拖进来。打开文件vim dockerfile。打开一个空文件vim my.cnf。切换到/opt/mysql目录下。需要有mysql.sock。打开Dockerfile。然后把软件包和文件拖进去。
2023-12-14 10:52:44
906
原创 dockerfile
联合文件系统(UnionFS),docker镜像的基础,镜像通过分层来进行集成,特性就是一次同时加载多个文件系统,但是从外面来看,就是一个文件系统。entrypoint和cmd的指令都是在容器启动时执行,都会成为容器的主进程,主进程负责接收信号,处理容器的生命周期,主进程退出,容器也将终止运行。镜像层是不可变的,你在某一层当中添加一个新的命令,但是在下一层删除了指令,镜像中基于这个命令创建的文件,依然是存在的,但是在容器中看不见。copy只能复制,不能解压,而且只能是本地文件,不支持URL路径。
2023-12-13 12:07:54
1581
原创 docker的资源控制
-cpu-shares是给每个容器使用cpu设置了相对的权重,权重高的,可以使用cpu的资源更多,但是,如果只有一个容器再运行,即使设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限。在使用dd获取空字符集是从文件系统的缓存当中输入,速度是比较快的,禁用文件系统缓存,直接把数据写入磁盘,可以更真实的测试设备的性能,模拟直接写入物理设备的情况。容器使用cpu的配额时间必须,大于1ms,--cpu-quota的值,必须是>=1000。限制使用swap:想要限制容器使用swap。
2023-12-13 11:58:21
486
原创 docker网络
容器和主机通信:通过桥接模式,容器可以与主机直接通信,容器可以访问主机上的运行服务,主机也可以通过桥接网络docker:0来访问容器内部的进程(iptables的nat地址转换,在主机上做了地址转换)数据卷是一个供容器使用的特殊的目录,在容器中,和宿主机的目录进行映射,主机和宿主机之间都可以对目录中的文件进行修改,双方同步生效,对镜像也没有影响。类似于飞行模式(测试容器的功能)-P:在创建容器时,在宿主机和容器之间做端口映射,-P随机分配一个端口给宿主机(容器的端口是不变的),-P从32768开始。
2023-12-12 11:48:02
844
原创 docker的基本管理和概念
是docker的基础,最小单位,类似于虚拟机的ISO文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量等等)docker的宿主机是linux,集装箱可以理解为相互隔离的容器(组件,应用程序APP),每个容器都是一个独立的应用程序。每一个容器都是相互隔离的,互不可见。docker镜像也是一个压缩包,不是一个解压的文件,是一个环境部署的脚本,甚至包含了完整的操作系统。docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器。
2023-12-11 12:25:02
1013
原创 zabbix的自动发现机制以及zabbix的代理功能、zabbix的snmp监控
zabbix的自动发现机制:zabbix客户端主动和服务端联系,将自己的地址和端口发送服务器,实现自动添加监控主机客户端是主动的一方缺点:自定义网段中主机数量太多,登记耗时会很久,而且这个自动发现机制不是很稳定。
2023-12-11 12:15:53
1126
原创 zabbix监控
5、zabbix_sender:可选组件,提供命令行的工具,可以将自定义数据发送到zabbix服务器,对于不直接由zabbix代理监控的数据或者是从脚本来的数据,比较方便的。5、zabbix_sender:可选组件,提供命令行的工具,可以将自定义数据发送到zabbix服务器,对于不直接由zabbix代理监控的数据或者是从脚本来的数据,比较方便的。2、zabbix agent:就是被监控的目标机器,把需要收集的数据以及自定义的监控项数据,发送给zabbix server。
2023-12-10 18:46:41
1029
原创 zookeeper集群+kafka集群
可恢复性:系统当中的有一部分组件消失,不影响整个系统,也就是说再消息队列当中,即使有一个处理消息的进程失败,一旦恢复,还可以重新加入到队列当中,继续处理消息。主题:topic topic类似一个数据流的管道,生产者把消息发布到主题,消费者从主题当中订阅数据,主题可以分区,每个分区都有自己的偏移量。B 启动,再发起一次选举,A和B分别投自己一票,交换选票信息,myid,A发现B的myid比A大,A的这一票转而投给B。只要通信保证,其他的修改不影响整个集群,每个组件可以独立的扩展,修改,降低组件之间的依赖性。
2023-12-08 15:28:31
1506
原创 elk(filebeat)日志收集工具
elk:filebeat日志收集工具 和logstash相同filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小得多filebeat可以运行在非Java环境。他可以代理logstash在非java环境上收集日志filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用filebeat收集的数据可以发往多个主机,即远程收集。
2023-12-07 16:18:12
1587
原创 ELK日志分析系统
总结:ELK的作用,当我们管理一个大集群时,需要分析和定位的日志就会很多,每一台服务器分别去饭呢西,将会耗时耗力,所以我们应运而生了一个集群的统一的日志管理和分析系统,极大的提高了定位问题的效率。Logstash,数据收集引擎,支持动态的(实时)从各种服务应用收集日志资源,还可以收集到日志数据进行过滤,分析,丰富,统一格式等等操作,然后把数据同步到ES存储引擎。fliebeat:轻量级的开源的,日志收集数据,收集的速度比较快,但是没有数据分析和过滤的能力,一般是结合logstash一块使用。
2023-12-06 21:17:26
948
原创 redis-cluster集群
集群模式自带哨兵模式,可以自动实现故障切换,但是在故障切换完成之前,整个集群都将不可用,切换完毕之后,集群会立刻恢复。主从复制:主宕机之后,主节点原来负责的哈希槽位将会不可用,需要从节点继续负责原有的哈希槽位,保证集群正常操作。每个主都可以对外提供读写的功能,但是数据是一一对应写入主的对应从节点,在集群模式中,可以容忍数据的不完整。集群模式当中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从只能读。根据集群当中的主从节点数分配哈希槽位,每个主从节点只负责一部分的哈希槽位。
2023-11-23 11:08:45
304
原创 redis的高可用(主从复制和哨兵模式)
maxmemory-policy volatile-lru:使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)maxmemory-policy volatile-lru:使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)一旦高并发,数据库会很快崩溃。allkeys-lru:LRU算法当中,对所有的键值对进行淘汰,移除最少使用的键值对(针对所有的键值对)
2023-11-22 21:30:00
411
原创 redis的高可用(持久化)
文件重写是指定期的重写AOF文件,减小AOF文件的体积,AOF重写是把redis进程内的数据,转化为写命令,同步到新的AOF文件当中(不会额外的生成一个新的文件,只是在原有的内容中进行压缩),不会对原有的AOF文件进行任何读,写的操作。RDB的持久化:只在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(快照持久化),用二进制压缩存储,保存的文件名的后缀.rdb,只要redis启动时,可以直接读取快照文件,实现数据恢复。缺点:做不到实时的持久化,数据如此重要,不能够容忍丢失的。
2023-11-22 16:30:00
75
原创 redis 非关系型数据库
redis:基于内存运行,支持持久化(数据恢复),采用的就是key-value(键值对)的存储形式,目前在分布式架构中,是非常重要的一环。不需要定义库,也不需要定义表结构,直接记录即可,而且每条记录都可以有不同的数据类型,字段(字段个数)一台服务器,一般部署三个redis进程(根据情况来看,高并发,要部署多个,一般情况下,单进程足够)平常的数据都是保存在内存中,持久化可以写入磁盘中,既可以保存到本地,也可以实现备份。平常的数据都是保存在内存中,持久化可以写入磁盘中,既可以保存到本地,也可以实现备份。
2023-11-22 15:30:00
89
原创 GFS分布式文件系统
BRICK(存储块),存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元,也是对外提供的存储目录。分布式卷的特点:文件数据通过HASH算法分布到设置的所有BRICK SERVER上,GFS的默认卷,属于raid0没有容错机制。在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上。高可用,可以自动对文件进行复制,多次复制,确保数据总是可以访问,哪怕硬件故障也能正常访问。不同硬盘上的不同分区,组成一个逻辑上的硬盘。不同的服务器上的不同硬盘分区,组成一个卷,可以动态的扩容。
2023-11-22 14:30:00
77
原创 rsync远程同步
rsync的特点: 拷贝文件,连接文件,设备 可以保持源文件或者目录的权限不变,时间、软硬连接、所有者、所在组等均可以保持不变 可以实现增量同步,即只同步发生变化的数据,数据传输效率很高 可以支持匿名认证。rsync远程同步: 是一个开源的快速备份工具,可以在不同主机之间同步整个目录 在此远程同步任务中,一个是源端,一个是发起端(发起端和源端同步) 源端负责文件的原始位置,发起端和源端的文件同步。同步方式: 1、完整备份,第一次同步都是完整备份 2、往后同步,都是增量备份(差异备份),只同步变化的数据。
2023-11-22 14:00:00
272
原创 squid代理服务器
浏览器会提示请求或访问太大maximum_obiect_size 100 MB 能够缓存的对象的最大值,超过这个单位不会被缓存,直接返回给用户。反向代理,在反向代理的squid服务器当中缓存了请求资源,将资源直接返回客户端,否则,代理服务器会代理客户端向web服务器发起请求,然后再把请求的资源响应给客户端,同时把响应缓存在本地,后续请求者都可以使用。有缓存直接响应缓存内容,没有缓存,才会代替客户端请求web资源,响应结果保存在缓存,然后响应给客户端,下一次直接访问缓存即可,缓存是否命中。
2023-11-22 00:00:00
190
原创 数据库之MHA
node组件-------->需要部署在所有服务器上。apply_didd_relay_logs:识别二进制日志当中的差异事件,然后发送给其他的slave。master_ip_online_change:在切换时,vip的管理脚本。masterha_check_ssh:检查MHA的SSH的配置状况。masterha_check_repl:检查mysql的复制情况。masterha_check_status:检测MHA的运行状态。master_ip_failover:自动切换时管理vip的脚本。
2023-11-21 19:08:09
241
原创 mysql主从复制和读写分离
这种方式是最多的.性能好,在代码中就可以实现,不需要额外的硬件设备缺点:开发实现的,跟我们无关。如果大型的复杂的应用,设计改动的代码非常多。2、slave节点会一定时间内对上库的二进制日志文件进行探测,看其是否发生变化,如果有变化,从库会开启一个/0的线程请求的主库的二进制事件。----------------------搭建 MySQL主从复制--------------------------------读写分离之后,数据的写入和读取是分开的,哪怕写入的数据量比较大,但是不影响查询的效率。
2023-11-15 09:00:00
181
原创 mysql存储过程
存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。-> insert into info2 values('小白','running','2002-7-11');INOUT 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。#仅当存在时删除,不添加If EXISTS 时,如果指定的过程不存在,则产生一个错误。#存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。
2023-11-15 00:00:00
228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人