自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_26124425的博客

小白的自述

  • 博客(27)
  • 收藏
  • 关注

原创 k8s部署私有镜像库保障node节点间镜像一致

部署私有镜像站需要用到docker的registry,可以直接从 https://github.com/distribution/distribution/releases 下载符合自己平台的二进制,建议把这个镜像站部署在主节点,部署在其他节点也可以。为了解决这样的场景,我们在k8s集群内部部署一个私有镜像站就可以完美解决。集群ip和域名已经可以在整个k8s集群下生效了,但是这个域名和ip的对应关系是动态的,我们写个定时脚本来动态修改域名。先写一个配置文件,配置一下私有镜像站的相关属性,放到。

2024-12-13 00:13:31 277

原创 配置ingress将service中的端口暴露出去

service是管理pod的暴露的,但是每个service都暴露一个端口到外部并不是很合适。使用ingress将不同的service暴露的端口通过子url的方式做反向代理,使用7层代理方式暴露给外部。配置ingress-nginx需要先按照前面讲解的安装方式安装一下,然后就可以修改helm的values.yaml配置文件。对集群下任意节点的ip访问都可以到达pod得到响应,到此ingress-nginx暴露golang服务端口成功。获取一下ingress的对外暴露端口。可以查看ingress的配置状态。

2024-12-11 11:54:11 571

原创 k8s下的dns说明

k8s下有一个核心组件是coredns可以看到coredns会启动一个service在集群内部可以访问,使用clusterip访问进行dns解析,随便新建一个pod可以查看一下底层的k8s会对每一个pod上面都添加dns服务到coredns里面,也就是所有pod里面解析dns都会交给coredns进行处理。下面是coredns对于不同类型组件的域名的处理。

2024-12-10 11:49:13 562

原创 使用kubeadm命令安装k8s

版本信息。

2024-12-09 16:07:49 418

原创 nginx配置笔记

限制不安全请求方法,拒绝接受除POST和GET,HEAD以外的请求方法。防止溢出,给所有客户端配置buffer容许最大值。控制iframe,防止iframe注入。禁止nginx服务器目录列表功能。限制仅使用HTTPS访问。去除nginx指纹信息。cookie信息安全。

2024-12-03 22:12:25 1053

原创 linux上ssh到另一台linux,可以显示中文不能输入怎么回事?

里面说明LC_ALL,LC_CTYPE等设置有问题,那么就检查一下/etc/locale.gen,发现里面确实没打开en_US.UTF-8,直接修改里面的值,放开下面几个。研究一个小时自己搞定了,主要还是locale没有生成编码导致。查看locale提示有问题。ssh到另一台机器,vim等可以输入中文显示,但是在终端里面可以显示但输入变成怎么处理。要重新登陆一下,让终端重新加载环境变量就可以了。linux本机可以输入中文显示中文。输入命令生成一下编码。

2024-12-02 00:27:00 290

原创 dfs(深度优先遍历)——解决图上距离/连通性问题(非动态规划)

dfs是深度优先遍历,本身就是一个独立的算法。只是在动态规划中,可以使用dfs+记忆化搜索来解题。对于dfs算法本身可以用来解决树上距离问题。从某个点进行深度优先遍历,计算此点到其他点的距离或是否可达。如leetcode上面这个问题。

2024-12-01 16:14:33 400

原创 使用configMap给pod加环境变量

顺便还要修改一下deployment.yaml的模板文件,从configmap里面加载key到pod里面。然后就可以在values.yaml里面定义configmap中的TEST的值。默认helm生成的模板文件里面并没有configmap的模板,我们写一个。不进行占用,制作镜像并提交到minikube里面,然后进行热更新到。需要修改我们的镜像,支持读取这个环境变量并输出出来。先使用helm回退到版本1,对。查看configmap是否生效。查看configmap的状态。查看pod状态,很好,生效了。

2024-11-30 21:23:15 403

原创 helm部署golang服务

Helm 是 Kubernetes 的一个包管理工具,类似于 Linux 中的 apt 或 yum。它使得在 Kubernetes 上部署和管理应用程序变得更加简单和高效。

2024-11-29 20:04:32 496

原创 使用statefulset管理pod

而对于那种有状态需要存储数据的,如log、数据库、消息中间件需要持久化数据的,则建议使用StatefulSet,我们的pod现在扩充了pv和pvc,那就使用StatefulSet重新部署一下试试。会发现pod是一个一个启动的,一个启动成功才会启动另一个,而且名字是按照0,1,2开始的。默认的statefulset的升级策略是从最大的开始升级,一个一个升级到最小的编号。启动一个窗口监控pod的状态,看一下启动statefulset的启动效果。试一试升级到读取文件的版本,看升级过程。

2024-11-28 19:44:05 497

原创 docker上手记录

docker是一个将软件虚拟化的工具,可以在任意设备上,建立虚拟机跑软件,实现快速环境搭建运行。

2024-11-27 22:17:43 2201

原创 挂载本地目录到k8s的pod实现持久化存储

本地目录实现持久化存储容器是无状态的,每次重启都是新的进程,但是我们需要将一些状态数据如配置、用户数据等存到本地来方便新的容器可以拿到历史状态。先创建一个目录来存放数据,并且挂载到minikube虚拟机内(不是pod里面)。注意要新开一个终端来调用,这个命令会阻塞,不能中断。=> mkdir storage=> minikube mount storage:/data可以测试一下是否成功了=> echo aaa > storage/test.txt=> minik

2024-11-25 14:34:20 775 1

原创 动态规划——dfs+记忆化搜索

动态规划做题最主要的是先分解问题,列举状态方程,然后选用不同的方式解题。

2024-11-24 16:01:26 394

原创 linux上的性能观测工具

一个进程有500K的代码并且链接了2500K的共享库,然后有200K的堆栈分配。其中有400K自身的代码、1000K的共享库以100K的堆栈内存被加载在实际内存(RAM)中,并且系统中一共有两个进程用了同样的共享库。

2024-11-22 16:36:19 418

原创 使用简单实验体验k8s的热升级机制

负载均衡的容错基本可以了,现在考虑要升级一下这个容器,把其中的test.go修改一下,返回hello, world的同时打印一下HOSTNAME。可以看到窗口1里面pod的更新状态,先停止1个,启动2个pod。2个pod就绪后停止第三个,启动1个pod。两种方式,可以直接修改deployment里面的image,也可以使用下面的命令。但是作为运维人员,假设升级出现问题,需要回滚,执行下面命令就可以回滚。,使用老的然后测试更新为新的,开不同的窗口,执行下面的命令监控状态。每秒变一下不同的pod返回,并且**

2024-11-21 11:59:12 800

原创 使用deployment管理简单的服务器

承接上文。

2024-11-20 14:53:21 770

原创 使用minikube快速搭建一个简单的golang微服务访问

先在宿主机的docker下载一下golang的最新镜像写个简单的服务器,监听7878端口,请求都返回搞到docker里面制作镜像这个时候查看docker的镜像里面就存在了我们制作的要发布的镜像注意,这里的镜像是宿主机的docker的,不是minikube里面的,minikube是个类似虚拟机的环境,里面还有一个docker。我们把这个镜像加载进去然后就能看到这个这个镜像在minikube里面。

2024-11-19 17:28:25 604

原创 C语言在linux上实现进程线程开发

当有子进程结束或僵尸进程时,立刻返回第一个结束的子进程ID。如果有子进程在运行,阻塞父进程。如果没有子进程在运行,返回-1。同一个进程中,原子操作是不可被线程间抢占的。一个线程中的原子操作可以实现同步,加快线程间的协调作用,进行无锁化编程。进程相互之间的变量包括指针指向的地址都是不共享的,进程间通信需要使用共享内存。进程相互之间的变量包括指针指向的地址都是不共享的,进程间通信需要使用共享内存。此操作会导致进程阻塞,用于进程间加锁使用。获取ID(ftok)

2024-11-18 12:27:43 890

原创 CMake基本使用笔记

1.1. if 条件判断2. 内置变量汇总: 项目工程目录: 可执行文件输出目录: 动态库输出目录: C++标准: 调用cmake命令的系统名称: 非跨平台就是,跨平台开启时,参考 开启cross compiling3. 修改CMakeCache.list的变量三种方式修改变量参数的方式修改详情看修改CMakeCache.txt有gui有文本直接修改添加cmake配置修改添加一个文件,此文件会被cmake执行前先加载4. 重点方法详解4.1. target_inclu

2024-11-17 18:01:02 1651

原创 linux驱动开发框架

不同系统不一样,需要安装内核的开发包,下面是kali linux的方式,里面的版本号使用uname -r确认。

2024-11-16 19:03:01 992

原创 stm32学习之路——使用串口打印日志

滴答时钟配置完了,现在调试手段还是只能通过单步断点,断点调试太麻烦也太不稳定。参考linux内核的方式将日志加到串口上,通过串口输出一下日志。串口的配置很简单,这里使用USART2,主要是因为引脚比较好接线。使用同步模式,不配置中断。为了打印日志所以不想搞太复杂,异步或中断还要考虑实现buffer来处理缓冲区问题,可以但没必要,简单最好

2024-11-13 22:15:51 1081

原创 stm32学习之路——系统滴答时钟

虽然uwTick作为ms计数很不错,这里搞个好玩的,把linux的jiffies搞进来使用,单独记录一个。主要是想要应用层代码和HAL完全隔离,不想要太多依赖HAL库,这样好移植。stm32配置完外部晶振时钟源后会有一个默认的时钟中断用于记录tick,这个时钟是固定的1ms(暂时没找到不修改代码调整的方式)。定义的,说明可以用户自定义,从里面的定义可以看出,这个uwTick保持ms级别计数。作为我们自己的定时器处理函数,可以从一个1ms定时器搞出很多个定时器。的是计数器的值,计数到达这个值触发中断。

2024-11-12 21:35:13 340 1

原创 linux上搭建stm32开发环境

大学时期搞单片机两年,手头上有开发板两个,各种小型板好几个,放着浪费。现在工作这么多年,已经对编译、环境、linux等很熟悉了。想着将这个技能重新拾起来,顺便给后代铺条路。本文是基于linux上使用stm32cubemx生成工程,使用jlink烧写stm32,开发环境是vscode(宇宙第一编辑器),语言C/C++,可能扩展一下使用golang开发更方便。

2024-11-10 16:07:49 1701

原创 如何做到liba.so和libb.so两个动态库分别链接不同版本的静态库libc.a而不冲突

静态库的链接类似于将源码编译到二进制里面。动态库的链接类似于将二进制外置链接一个符号进行调用。想要不出现冲突和问题就需要注意对外的符号暴露问题。可以做个实验来看一下。符号暴露和不暴露的现象。

2024-11-08 18:42:52 478

原创 《30天自制操作系统》在linux上实现(2)——引入C语言

过程中的那些读磁盘写磁盘啥的,参考书上继续做就好。这里讲一下引入C语言后和书上不一样的地方。

2024-11-05 20:46:54 144 1

原创 《30天自制操作系统》在linux上实现(1)——前言和进入系统

网上其实很多人都说《30天自制操作系统》这本书没什么作用,都是在写界面,和现代操作系统的设计思想脱节等。其实我不这么认为,书本是好书,知识就在那里,看个人怎么去学习。至少我从其中获取到了很多有用的知识,如软盘结构、中断处理、内存分页、进程调度在cpu上是什么等。从其中我甚至可以学习到linux是怎么实现的,这一步肯定是无法直接从书中得来,但是以书中的任务为契机,在看到作者实现分段分页时,想到linux内核里面应该也有对应的实现。

2024-11-05 20:36:18 283

原创 makefile如何写一个工程化的项目,语法是怎么样的?

所以虽然两个符号的意思有点沾边,但是他们的工作方式时完全不一样。

2024-11-05 13:13:11 2139

深入解析计算机网络中的 OSI 七层模型及其实现

内容概要:本文详细介绍了计算机网络的基础概念,特别是 OSI 七层模型的具体实现。文章首先解释了每一层的功能及其代表性协议,接着详细分析了 IP 地址的分类及其结构,特别是IPv4和IPv6的数据包结构,还探讨了传输层的 TCP 和 UDP 协议的头部结构及其实现机制。在应用层,文章列举了一些常见的网络协议及其头部信息,并讨论了 HTTP 和 TLS 握手过程中的关键步骤。文中还包括 DNS 查询过程的不同系统的处理方式,以及 TCP 和 UDP 在 DNS 中的作用。 适合人群:计算机网络领域的初学者,尤其是对 OSI 七层模型感兴趣的开发者和技术爱好者。 使用场景及目标:帮助读者全面了解计算机网络的基本原理,掌握 OSI 七层模型中各层的具体功能和实现机制,理解网络通信过程中涉及的各种协议和技术,提高网络编程和故障排除的能力。 其他说明:文章提供了详细的图表和代码片段,有助于理解和实际应用。建议读者结合具体的网络抓包工具(如 Wireshark)进行实践操作。

2024-12-10

kubeadm命令部署kubernetes 1.28.0集群指南

内容概要:本篇文章详细介绍了如何利用kubeadm工具搭建Kubernetes 1.28.0集群的具体步骤,从前期环境准备开始,逐步讲述了关闭SWAP分区、安装所需的容器运行时、加载必要模块以及使用特定版本配置初始化master节点的过程。针对出现节点NotReady状态的问题进行了故障排查,并提供了解决办法。最后介绍了移除主节点污点的方法,以便充分使用集群内的所有节点。 适合人群:对于希望深入理解Kubernetes集群架构与构建过程的技术爱好者,或是具有一定Linux操作背景并打算搭建K8s环境的企业IT工程师。 使用场景及目标:适用于初次尝试搭建Kubernetes集群的学习者和企业环境部署,帮助理解各组件的功能及其交互机制。 其他说明:本文档还涵盖了安装Calico作为网络插件的实际操作流程,这对于提高集群内部通信效率至关重要。此外,文档提及的每个关键步骤均附带了具体命令示例,确保新手也能快速掌握安装技巧。

2024-12-09

golang语法和学习笔记

总结工作这么多年学习到的golang的语法和很多踩坑的点,里面详细讲解了golang的很多底层原理和语法说明。包括一些好用的第三方库,帮助快速搭建后台服务器。

2024-11-25

stm32的C++开发环境.zip

使用stm32cubemx生成工程,内置makefile支持写C++程序编译运行

2024-11-10

c语言初学者快速基于windows搭建学习环境

初学者快速基于vscode搭建一个可以调试编辑运行的c语言编译环境,适合大学编程使用

2024-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除