- 博客(32)
- 收藏
- 关注
原创 k8s service类型理解
4.kube-proxy(一般通过轮转方式选择)kube-proxy 根据 Selector 选择一组 Pod,根据自身 mode 选择其中一个 Pod,并且转发到pod的ip和port(targetport)4.kube-proxy(一般通过轮转方式选择)kube-proxy 根据 Selector 选择一组 Pod,根据自身 mode 选择其中一个 Pod,并且转发到pod的ip和port(targetport)无状态服务是不需要保存状态的服务。有状态服务是需要保存状态的服务。
2023-10-28 18:56:42
102
原创 Gin-Jwt实践
具体是在Header添加一条key/value,对应的是Authorization/Bearer token。存放生成token和解析token以及认证中间件。存放auth和home两条路由的处理函数。启动服务后,使用postman验证。首先使用post方法访问/auth。然后使用get方法访问/home。这里需要携带上面得到的token。的数据,其有效负载保存。
2023-10-28 18:18:57
152
原创 配置redis主从复制
tips:若主宕机,从依然可以读数据,但是此时在从数据库查看主数据库的状态,是down,当主重新恢复后,变为up。当从shutdown后,主写入数据,从重新启动后依然可以看到期间写入的数据。先看看从数据库能不能写数据。说明从数据库不能写数据。
2023-09-27 17:51:05
98
原创 go context withcancel理解
上面代码定义了一个print1函数,print1函数里面又定义了一个名叫print2的goroutine,goroutine使用的是print1的print2的ctx,而print1的ctx就是main goroutine的context.Background(),main启动了2个goroutine,所以模型是下面这样。包中的一个函数,用于创建一个具有取消功能的上下文(context)。它的主要目的是允许你在需要的时候取消一个长时间运行的任务或多个任务,以确保程序可以优雅地退出或处理超时情况。
2023-09-25 22:11:45
375
原创 基于kubernetes的私有云基础设施搭建和自动化管理
1.下载node_exporter-1.4.0-rc.0.linux-amd64.tar.gz源码,上传到节点服务器上。为整个web集群提供数据,让所有的web业务pod都去访问,通过pv、pvc和卷挂载实现。这里一定要使用https访问,并且打开浏览器高级选项就可以看到登录面板了。5.在prometheus server里添加exporter程序。4.在node节点服务器上安装exporter程序。3.创建pv使用nfs服务器上的共享目录。浏览器登录,使用的端口是30389。用户名和密码都是admin。
2023-09-13 22:31:07
469
原创 kubenetes中master查不到节点,重新初始化加入节点。
首先,清理掉控制平面组件,包括etcd、kube-apiserver、kube-controller-manager和kube-scheduler。:根据你的网络插件选择,安装和配置网络插件。根据你的需求和环境设置,可以使用不同的参数选项。:将工作节点加入到重新初始化的集群中。使用之前生成的连接信息和令牌执行加入操作。:接下来,清理工作节点上的Kubernetes组件和配置。:等待工作节点加入集群,然后使用以下命令验证集群状态。是刚刚重新初始化的控制平面节点的IP地址和端口,
2023-09-13 17:44:02
158
原创 k8s集群搭建过程
确认sysctl配置中的net.bridge.bridge-nf-call-iptables设置为1。7).运行iptables检查桥接流量。没有压缩包可以行docker pull。2).关闭防火墙、selinux。到此,k8s集群的搭建完美结束。我这里导入下载好的压缩包即可。centos7.9 3台。3).更改hosts文件。在master执行命令。2)安装docker。提前下载好需要的镜像。
2023-07-25 11:20:26
104
原创 centos部署本地dns服务器
可以多加几条,这样就实现了同一个域名分到多个ip地址,实现负载均衡(最简单的一种负载均衡)最后,更改named.conf配置文件,改3个any,刷新服务。新建sc.com.zone文件(cp -a),里面加上最后一条。防止其修改/etc/resolv.conf。named,network更新服务。使用cp复制区域文件时加上-a。
2023-07-24 14:00:14
101
原创 python3字典的底层原理以及对hashlib的简单使用
先创建一个md5_hash对象,然后使用open打开文件,使用lambda表达式构造返回读取的数据块,b""表示如果遇到空字符串就停止,然后使用chunk来遍历一个iter对象,最后md5_hash不断更新数据块的hash值,在循环结束后,我们就可以得到整个文件内容的MD5哈希值,即hexdigest。具体来说,Python3的字典内部包含了一个哈希表,其中每个元素都是一个"entry"(条目),每个entry都包含了三个元素:键、值和哈希值。python3.6是使用开放地址来解决地址冲突的问题的。
2023-06-11 19:16:45
139
原创 通过prometheus监控mysql
5.添加配置文件在/prom_exporter/mysqld_exporter/my.cnf,并且运行。vim prometheus.yml,最后3行复制,然后写被监控机器的ip和port。4.进入mysql,并且授权一个用户mysqld_exporter用于拉取数据。2.分别解压到/prom和/prometheus_exporter。3.在exporter机器上安装mysql(我使用的是编译安装)6.将prometheus做成一个服务,方便管理。8.更改配置文件使监控机器来监控。
2023-06-10 12:01:37
508
原创 python logging模块使用
DEBUG 10 最详细的信息,开发过程中用于诊断问题INFO 20 详细日志信息仅次于debug,记录关键节点的信息WARNING 30(默认) 当前不期望的事情发生ERROR 40 发生错误问题导致某些观念跟那个不能正常使用CRITICAL 50 发生严重错误导致程序不能继续运行。
2023-06-03 19:04:49
67
原创 redis基本命令
Nosql数据库使用redis-cliredis有0~15号数据库,默认是0号,可以使用select来切换数据库添加键值对,并且查看清空当前数据库清空所有数据库(flushall)批量添加键值对查看当前数据库的所有keyexists查看key对应value的类型删除key为一个key重命名吗,如果名字存在,则为覆盖得到key对应的value值将一个键值对移动到另一个数据库
2023-05-30 20:22:11
35
原创 centos安装redis
Redis是一个高性能的键值存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。Redis通常被用作缓存、消息队列、任务队列和实时统计等场景。快速:Redis能够处理高并发的读写请求,并支持多种操作,如原子操作和事务。内存存储:Redis将所有数据存储在内存中,因此读取和写入速度都非常快。同时,Redis也支持将内存中的数据异步地写入磁盘,以保证数据的持久化存储。数据结构丰富:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合。
2023-05-29 20:55:53
198
原创 python迭代器和可迭代对象
定义:迭代器是用于遍历这些可迭代对象的工具,它需要支持 next() 方法,以便不断地返回下一个元素。当使用 for 循环遍历一个可迭代对象时,实际上是通过该对象的 iter() 方法获取到了一个迭代器,然后通过调用迭代器的 next() 方法依次获取每个元素。定义:可迭代对象是指那些可以通过 for 循环进行遍历的对象,例如列表、元组、字符串等。这些对象都支持 iter() 方法,返回一个迭代器对象。Python 还提供了一种更简洁的方式来使用迭代器,即通过 for 循环直接遍历可迭代对象。
2023-05-20 20:14:15
120
原创 ansible模块以及playbook编写
执行完copy后会触发notify,然后handler会捕获,然后执行handler的命令。由python开发,使用ssh协议,paramiko库,sshpass库。模块 module 插件plugins :可以实现某个功能的库。playbook 剧本 :告诉主机清单里的电脑,做什么事情。command模块(裸执行,不进行shell解析,不好用)小提示:安装都用latest,卸载都用absent比较好。all:所有组,如上面的webservers就是一组。7.shell模块(执行shell命令)
2023-05-20 19:58:23
479
原创 使用go语言来下载图片
接着,我们检查响应码是否为200。若响应码不为200,意味着服务器未正常响应,这时应该输出错误信息并退出程序。首先,我们需要发送HTTP请求来获取要下载的文件。代码中使用了Go语言内置的。方法向指定URL地址发送GET请求,获取响应结果。这里要注意,如果请求失败,若写入文件过程中出现错误,应该输出错误信息并退出程序。然后,我们需要将响应体的内容写入文件中。方法读取响应体中的所有内容,并将其保存到。好的,来一步步分析该代码的执行流程。至此,整个下载文件的过程就完成了。最后,不要忘记关闭响应体。
2023-05-18 20:55:50
1218
原创 python多进程案例
使用进程时一定要用if==“”:否则会出错这个代码首先定义了一个锁lock,然后在锁的作用下定义了函数addnum,python多进程中,最后在循环中创建了6个进程去执行函数,最后输出是所有的num都为2。原因:因为创建进程时,所有的进程都会拷贝父进程的所有资源,所以每一个进程都会有自己的num,执行函数时,它们分别为自己的num加1,所以最后输出都为2.如果需要共享资源,下面有3个方法,分别是Value、Manager、Queue。
2023-05-17 20:50:24
330
原创 go语言递归实现爬楼梯问题
递归方法的原理是将一个大问题拆分成一系列相似的小问题,并且通过递归调用自身,最终得到结果。对于爬楼梯问题,我们可以将它拆分成走到第n-1级台阶和走到第n-2级台阶两个子问题,通过递归调用自身,最终得到走到第n级台阶的方案数。当n大于等于3时,假设走到第n级台阶有f(n)种走法,那么走到第n-1级台阶只有一种方式(迈一步),也就是f(n-1)种走法;走到第n-2级台阶有两种方式(分别迈一步和迈两步),也就是f(n-2)种走法。因此,f(n) = f(n-1) + f(n-2),这就是斐波那契数列的定义式。
2023-04-20 16:58:30
159
原创 tcpdump和netstat使用
(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。netstat查看网络状态的命令,例如哪些端口打开,哪些人连接。-vv:更详细的信息(wireshark可以打开保存的文件)数据类型关键字:host,port,net。连接关键字:and or not!数据传输方向关键字:src,dst。-l 显示处于listen状态。协议族的核心协议之一。-p 显示程序的pid和名字。-nn:以数字形式显示。
2023-04-17 18:52:34
59
原创 iptables
新链怎样被使用:1.创建新链2.其他链调用该链删除链必须把调用的规则和自己的规则先删掉打开路由器功能: /proc/sys/net/ipv4/ip_forward打开路由功能后forward链才会起作用。
2023-04-17 18:51:11
41
原创 linux配静态ip地址
BOOTPROTO:none或static表示静态指定,dhcp表示通过dhcp服务器动态获取ip地址 不需要的删掉 DEVICE:设备名字 ONBOOT=“yes”表示开机的时候激活这个网络连接,no表示禁用 PREFIX=24:子网掩码的长度位24,相当于255.255.255.0 NETMASK=255.255.255.0,与上面的PREFIX效果相同 GATEWAY=192.168.0.1:默认网关 DNS1=114.114.114.114:首选dns服务器。
2023-04-17 18:46:11
65
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人