- 博客(94)
- 收藏
- 关注
原创 devops、ci/cd、gitlab代码仓库安装、jenkins安装
devops:dev对应开发,ops对应运维方法:让互联网公司可以更快的应对更新和尝试发展的变化。开发:可以快速交付运维:部署更加稳定敏捷型开发模式:产品又叫SE或者需求设计人产品周期:甲方——找产品——设计笔记本——需求说明书——找开发(以上需求是否能够实现,-多少天之内完成)——进入开发阶段(7-15天)——A部分完成——测试验证A部分——B部分开发完毕——测试验证B部分——部署——找运维——发布到生产环境——验证(功能、性能、稳定性)——交付(运维)——收钱。
2024-09-23 13:53:54
1011
原创 PromQl语句
聚合操作符:使用聚合操作符用来将统计数据的元素聚合的更少(对采样数据的精确度会有所下降)。瞬时向量选择器:选择一组时序在某个采样点的采样值。会给指标项加入一个度量的指标,选择该指标在指定条件下的时序采样值。指的是过去一段时间内的采样值。常用:container_memory_usage_bytes{instance=~"master01"}数据模型:每个时间序列都是有指标名称(metric Name)和标签,根据它们来确定一个唯一标识。语句格式:指标名称 {标签名称1=标签值,标签名称2=标签值}
2024-09-20 10:12:15
534
原创 普罗米修斯监控
prometheus是开源的系统监控和告警。在k8s分布式的容器化管理系统当中,一般都是搭配prometheus来进行监控。它是服务监控系统,也可以监控主机,它自带时序数据库,这个时序数据库提供了数据模型和采集的指标项、存储、查询接口。prometheus组件:promql语言:如何采集和统计。nodeexporter:在k8s集群当中部署在node节点上,用来收集节点上的数据(主机指标:硬盘、CPU、网络,pod的使用情况)。需要部署在每个节点上。
2024-09-18 13:54:01
1443
原创 ingress对外服务
ingress是对外提供访问,它可以支持http、https访问流程:请求——ingress根据service的名称来匹配service——service把请求根据匹配的标签转发到pod部署方式:deployment+nodeport、daemonset+hostnetwork类型:ingress+nginx、ingress+traefik。
2024-09-14 16:46:16
854
原创 rbac安全机制
1. http token,是一个很长的特殊编码方式的而且是难以被模仿的特殊字符串,就是用来表达客户端的一种方式。注:#rules.verbs有:"get", "list", "watch", "create", "update", "patch", "delete", "exec"service-Account:是为了方便访问pod中的容器,以及容器访问apiserver专门创建的。http token和http base都是服务端对客户端的单向认证,https是双向认证的方式。认证过后,就到了鉴权。
2024-09-13 16:49:27
938
原创 helm一键化部署pod
mkdir helmcd nginx1/修改service的配置文件:如果设置nodeport需要添加,如下helm lint nginx1/ 检查语法有没有错误failed 0 才表示没有错误helm package nginx1/ 打包此时就会生成一个包:helm部署命令:helm install nginx1 /opt/helm/nginx1-0.1.0.tgz如果修改了yaml文件,需要更新helm upgrade nginx1 nginx1 更新。
2024-09-13 11:56:56
768
原创 HPA自动扩缩容和命名空间资源限制
缩容:速度会相对较慢。缩容的时候为了保证pod的资源突然又变大了,可以继续维持pod的数量,在一定时间之内,pod占用的资源维持在较低的比率,然后开始慢慢的缩容。它的作用是收集资源使用的数据,然后给HPA、scheduler等等使用。limitRange的作用:只要是创建在这个命名空间的pod,都会根据limitRange的配置来对所有的pod进行统一的资源限制。注:这里的50%是节点cpu的使用率,只有超过节点cpu的使用率的阈值才会扩容。最小的pod数是1,但是副本的数量定义是3,缩容会缩到1。
2024-09-12 17:12:32
1054
原创 pod控制器的类型、job控制器
对基于控制器创建的pod,delete pod相当于对pod重启,并不能删除pod,必须要把控制器删除,pod也会自动删除。有状态的部署,pod的名称是固定的,一旦创建永久不变,增加副本数,也是有序的递增。有状态的副本需要持久化存储,因为每一个pod都要有一个自己的独立的挂载卷。使用场景:主要用于数据库,数据库必须要有指定的编号,比如redis和ELK中的ES。使用场景:需要在每个节点都部署,或者是需要在后台运行的pod。定时任务 Cronjob:使用场景:需要定期执行的任务,比如环境扫描,健康检查。
2024-09-12 11:34:59
979
原创 清理缓存命令
echo 2 > /proc/sys/vm/drop_caches # 释放目录项和inode缓存。echo 1 > /proc/sys/vm/drop_caches # 释放页面缓存。echo 3 > /proc/sys/vm/drop_caches # 释放所有缓存。
2024-09-12 09:17:15
1449
原创 k8s用StatefulSet部署redis
redis-sentinel-statefulset.yaml (哨兵)redis-master-statefulset.yaml (主)redis-slave-statefulset.yaml (从)redis-config.yaml (配置文件)redis-service.yaml (端口)
2024-09-11 23:12:35
892
原创 静态pv、动态pv
因为k8s本身不支持nfs创建动态pv,所以使用外部的插件Provisioner存储分配器,可以自动使用配置好的NFS自定创建pv。在k8s当中,使用Provisioner来创建动态pv。Retain 保留:默认策略,就是虽然pvc被删除了,但是pv还是出于released的状态,即使恢复到Available状态,上一个挂载的数据也不会丢失。就是虽然pvc被删除了,但是pv还是出于released的状态,pv会自动的对资源进行回收,也就是删除数据,然后pv自动回到Available状态。
2024-09-11 02:11:51
1749
原创 污点、容忍、不可调度、排水、挂载卷
答:共享,因为pod会有pause底层容器,pause容器提供共享网络和共享挂载卷,也就是pod里面的所有容器共用一个ip地址,共用一个挂载点。使用场景:因为每个pod运行的服务不同,保留的数据要做区分,所以这个时候需要用hostPath,比如redis缓存数据库、kafka等等。因为容器、pod的生命周期是有限的,一旦重启或者崩溃,数据会丢失,所以我们为了保证数据的完整,我们要实现。--delete-local-data:如果被排水的节点上有本地的挂载点,它也会强制杀死该pod。
2024-09-04 17:45:01
984
原创 https的自签证书和harbor仓库
https是加密的http,它的端口是443,它的协议是tcp协议。建立连接和普通的tcp是一样的,都是三次握手和四次挥手,但是它三次握手之后有一个步骤:SSL或者TLS握手的过程,这个过程是为了建立安全的加密通信通道。3. 服务端发送数字证书给客户端,数字证书包含服务器的公钥,客户端有了公钥之后,就可以确认服务器的真实身份。1. 客户端向服务端发送一个信息,包含客户端支持的SSL/TLS的协议版本、加密算法的列表、随机数等等。4. 密钥交换:服务端和客户端协商一个对称加密的密钥,用于后续的加密通信。
2024-09-03 23:56:30
828
原创 k8s集群的调度
1、实现pod的探针:就绪探针 tocScoket2、挂载,容器 /usr/share/nginx/html/ 节点 /opt/html3.node的亲和性 尽量部署在node014、pod的亲和性 ,尽量部署包含有app=nginx的pod且标签名是xy102的节点。5、软策略选择标签名不包含xy102, xy103值小于100。
2024-09-03 18:18:05
1708
原创 基础容器pause、init初始化容器和镜像拉取策略
pod是k8s里面的最小单位,pod也是最小化运行容器的资源对象。容器是基于pod在k8s集群当中工作的。在k8s集群当中,一个pod就代表着一个运行的进程,k8s的大部分组件都是围绕pod来进行的,主要是对pod进行支撑和扩展。deployment和service都是围绕pod来进行部署的。k8s的pod有两种使用方式:1.一个pod里面只有一个容器。这是最常见的方式。k8s管理的是pod,而不是容器2.一个pod里面有多个容器。即使有多个容器,它们之间也是共享网络、共享挂载卷。
2024-09-03 01:30:01
1364
原创 pod的状态、资源限制、探针、容器钩子
yaml文件启动钩子和退出钩子和节点挂载: /usr/shar/nginx/html/ 节点的: /opt/nodeexec 执行 要能再目录中看到开始和打印的结果包含探针:1、启动探针:方法: exec 检测 /usr/shar/nginx/html/ index.html分件是否存在2、存活探针方法: httpGet访问验证返回码是否正确3、就绪探针:tcpSocket:监听容器的80端口是否正常。
2024-09-03 00:46:07
816
原创 k8s的yaml文件、容器的重启策略和传参
如果是deployment,那么容器的重启策略只能写Always,它默认就是Always,可以不写。基于pod的yaml文件,三种重启策略都可以写。command和agrs如果不需要传参只能存在一个,不论是args还是command都会覆盖容器的标准输出(cmd和entrypoint)
2024-08-29 21:13:53
1393
原创 命令行创建deployment和service、滚动更新
在每个节点(集群的所有节点)都会开放一个端口,外部就可以通过本机的ip+端口(nodeport端口)访问pod内的容器服务。,提供集群内部的一个虚拟ip地址。是用来让其他的pod来访问的,pod可以通过这个service的ip地址直接访问到内部的容器。test1 --image=nginx:1.22 --replicas=3 -n xy102 基于deployment创建的pod。注:pod的ip地址随着pod的生命周期有可能会发生变化,内部访问我们通过pod的ip可以直接访问,外部访问不会受到影响。
2024-08-28 19:39:52
1050
原创 ks8的网络插件类型flannel和calico
因为ks8本身不自带网络,所以依赖于CNI网络插件(flannel、calico)CNI:是一个标准接口,用于容器在运行时调用网络插件、配置容器的网络。CNI负责设置容器的网络命名空间、ip地址、路由等网络参数。通信的核心:pod的ip地址进行封装,然后通过node节点作为路由器转发到其他的node节点,其他的node节点收到数据包之后解包,然后把数据包转发到指定的pod。k8s的三种通信方式:1. pod内部的网络通信。
2024-08-28 00:43:13
823
原创 k8s的组件以及安装
分为主节点和node节点,主节点就是核心,kube-apiserver大脑:所有的一切都要通过kube-apiserver来调用,所有的一切最终都要保存到etcd中,etcd就是保存集群信息的数据库,怎么部署都是靠kube-controller-manager,往哪里部署靠kube-scheduler。到了node节点上,kubelet负责真正部署、控制容器,跨主机网络之间通信通过kube-proxy,服务是由底层docker来启动的。流程图kube-apiserver先接受信息,kube-
2024-08-28 00:42:54
1779
1
原创 Ansible远程自动化运维
ansible是基于python开发的配置管理和应用部署工具,也是自动化运维的重要工具。它可以批量配置、部署、管理上千台主机。只需要在一台主机配置ansible就可以完成其他主机的操作。1.模块化操作,也可以理解为命令行执行2.playbook 剧本,也就是把命令行脚本化,脚本的格式是yaml格式ansible的特性:幂等性幂等性:多次操作或者多次执行,对系统的影响不会发生变化,也就是不论执行多少次结果都是一样的。就是ansible什么都不会做。
2024-08-21 16:04:39
1236
原创 docker-harbor 仓库上传下载镜像以及仓库之间的镜像复制
它是由docker-compose一键编排的,所以也需要安装docker-compose。还检测仓库内镜像的变化以及token,根据不同的权限给于不同的token,token就是保存用户身份的信息,以及账户和密码,就是用于认证身份的组件,一次认证后续就不需要再输入账号和密码了。1.通过角色对权限进行控制:由于用户和仓库都是基于项目进行组织的,所以不同的用户在不同的项目中拥有不同的权限。:前端页面是nginx,然后在nginx的配置中做了反向代理,把浏览器不同的请求转发到后端不同的容器中。
2024-08-20 17:09:03
1860
原创 dockerfile部署ELK
一台docker虚拟机docker部署elasticsearch-6.7.2 ES1 :172.111.0.11docker部署elasticsearch-6.7.2 ES2 :172.111.0.12docker部署logstash-6.7.2 :172.111.0.13 可以用现成的镜像docker部署kibana-6.7.2-x86_64 :172.111.0.14 可以用现成的镜像。
2024-08-19 17:31:36
1152
原创 docker-compose一键部署LNMP
它是容器一键化部署的工具,是针对dockerfile,可以按照定制化的模式一键部署dockerfile创建的容器。其中mynet需要执行docker network ls查看它的全部名字,然后把其中所有的mynet都改过来。YAML是一种标记语言,直观的展示数据序列化的格式,可读性高。它的数据格式的结构是通过缩进来进行表示的。ps 基于docker-compose拉取的镜像生产的容器。字符串用双引号“ ”列表结构:表示有序的元素的集合,使用-开头。down 删除容器,网络,数据卷,镜像。
2024-08-19 16:33:56
730
原创 dockerfile自定义镜像
总结:做为容器启动时执行命令的语句,一般情况下二者是通用的,但是在传参的情况下,需要加上CMD,如果没有特殊的操作(传参),写一个CMD或者ENTRYPOINT即可,二者不要同时存在。:包含了一个完整的文件系统(操作系统),包括了所有的文件和目录,以及相关的权限和用户等等信息,运行容器时,整个根文件系统就会整个被使用,作为应用运行的环境。:主要是用来传参,是用户传递的参数,比如:/bin/bash就是ARG。3.基于基础镜像,创建好了容器之后,在容器内部进行定制化的操作,然后导出成镜像,下次继续使用。
2024-08-15 17:20:32
1426
原创 docker数据卷和资源控制
注:如果要删,可以先 rm -rf *删除,然后执行docker cp /etc/yum.repos.d/Centos-7.repo test1:/etc/yum.repos.d/ 远程复制 然后再下载epel源。注:如果要删,可以先 rm -rf *删除,然后执行docker cp /etc/yum.repos.d/Centos-7.repo test1:/etc/yum.repos.d/ 远程复制 然后再下载epel源。在容器内部可以通过容器名直接访问另一个容器,可以简化容器之间的连接配置。
2024-08-13 14:24:48
563
原创 docker网络
它和桥接模式一样,只不过我们可以自定义容器的网段和给新创建的容器指定ip地址。只有自定义网络可以在创建容器的时候指定ip地址查看docker网络设备的命令 :docker network ls先创建自定义网络再给容器指定ip地址。
2024-08-13 14:23:31
800
原创 docker基本管理和应用
容器是在linux上运行的,与其他容器共享主机内核以及主机的资源,独立运行、相互隔离的进程(应用程序),而且是轻量级的。在创建的时候加上/bin/bash——默认的执行命令覆盖,虽然nginx在运行,但是运行的不再是nginx的进程,而是/bin/bash。隔离的是网络设备、网络端口等:在network命令中间当中,每个进程都有自己独立的端口号,靠端口号可以实现网络访问的隔离。隔离的是进程编号:每个进程在系统重都有一个唯一标识,唯一标识就是pid,靠的是使用不同的pid来保证进程之间不发生冲突。
2024-08-12 21:02:23
949
原创 ELK+Filebeat+Kafka(ELKFK)
把node-v8.2.1.tar、phantomjs-2.1.1-linux-x86_64.tar、elasticsearch-head-master拖进虚拟机。然后分别在61 echo 1 > /opt/zookeeper/data/myid。把apache-zookeeper-3.5.7-bin.tar拖入到三台虚拟机中。在62 echo 2 > /opt/zookeeper/data/myid。在63 echo 3 > /opt/zookeeper/data/myid。
2024-08-07 17:17:28
845
原创 ceph集群
原理:先把数据分散,分成每个object,每个object给一个id,每个id保存到osd中,根据object分成不同的pg组,把pg组结合起来保存到存储池,osd看要不要做副本,做副本就复制,有两个就做主从,有3个就两两复制。优点:磁盘映射,raid和lvm提供磁盘空间,多个主机上的raid或者lvm组成一个逻辑上的raid和lvm,多块磁盘组成这种逻辑空间,可以并发的执行读写操作,IO效率比较高。ceph的集群进行逻辑划分,设置ceph存储集群的权限,副本数、 pg的数量和算法的规则。
2024-08-07 16:45:26
1015
原创 rsync远程同步
rsync就是远程同步,它分为上行和下行,跟scp相似。它是开源的快速备份的工具,一般是系统自带的。inotify wait 监控修改,创建,移动,删除,属性修改(权限修改,所有者,所在组)如果发生变动,立即输出结果。服务端:在远程同步的任务中,负责发起rsync的叫做发起端。客户端:在远程同步的任务中,负责响应的同步请求的叫做客户端。r:递归整个目录 ,只要有变化包含子目录的变化全部记录。3. -z 压缩,在传输的过程中对文件进行压缩。如果客户端修改,服务端也会同步保证两边一致。
2024-08-06 17:18:32
681
原创 zookeeper集群+kafka集群
zookeeper就是保存集群的元数据面试题:kafka的消息堆积如何解决?原因:消费者出现了延迟或者处理能力太差,导致消息堆积。解决办法:1.减少kafka持久化的保存时间2.修改主题的分区数,扩大分区的数量,提高消费者获取的通道3.可以指定多个消费者共同工作,处理消息的积压(代码完成)
2024-08-05 15:57:11
1798
原创 ELK日志系统
ELK是一套完整的日志集中处理方案。E:ElasticSearck 简称ES 分布式索引型非关系型数据库,用来存储logstash输出的日志 ,它是一个全文检索引擎,保存的格式是json格式L:logstash 是基于Java语言开发的,用来作数据收集引擎、日志的收集。可以对数据进行过滤,分析,汇总,以标准格式输出K:Kibana 是ES的可视化工具,对ES存储的数据进行可视化展示,分析和检索。
2024-08-01 17:31:04
2826
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人