K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群

news2024/12/21 17:02:16

开篇

  • 《K3s 系列文章》
  • 《Rancher 系列文章》

方案

在腾讯云上安装 K3S

后续会在这套 K3S 集群上安装 Rancher

方案目标

  1. 高可用
    1. 3 台master 的 k3s 集群
  2. 数据备份
    1. k3s 数据备份到 腾讯云对象存储 cos
  3. 尽量复用公有云的能力
    1. Tencent Cloud Controller Manager (❌ 因为腾讯云已经放弃维护相关源码, 所以无法复用)
    2. SVC LoadBalancer 调用 CLB (❌ 因为腾讯云已经放弃维护相关源码, 所以无法复用)
    3. 备份 - 使用腾讯云 COS

前提条件

  1. 有腾讯云账户,账户至少拥有如下权限:auto k3s 安装 - 设置 CAM 以及这些权限:

    1. QcloudTAGFullAccess
  2. 该腾讯云账号有对应的 API 密钥,地址:访问密钥 - 控制台 (tencent.com) ,或者拥有相关权限:cam:QueryCollApiKeycam:CreateCollApiKey

  3. 一台 linux 操作机,用于部署 autok3s

  4. 一个对象存储通 cos,用于备份

  5. 已有的镜像仓库的一些账号密码或认证信息,包括:quay,docker,腾讯云 (用于加速 pull push镜像)

    ℹ️ Info:

    腾讯云 tcr 广州 提供免费个人版实例,可以使用并添加:

    https://ccr.ccs.tencentyun.com

K3S 安装注意事项

  1. 通过autok3s部署
  2. 通过 autok3s 安装后, 默认 k8s api 通过 公网 IP 进行通信, 需要调整 systemd 配置使其通过内网进行通信.
  3. ⚠️付费模式,安装后可根据具体情况在将付费模式控制台改为:包年包月

K3S 安装参数

本次 K3s 安装参数如下:

  1. Master 3
  2. Worker: 0
  3. Region:shanghai (ap-shanghai
  4. zone:二区(ap-shanghai-2
  5. Instance Type:S5.MEDIUM8
  6. Image: img-22trbn9x (ubuntu 20.04)
  7. instanceChargeType:默认后付费,且无法调整。⚠️安装后控制台改为:PREPAID
  8. Disk: CLOUD_SSD (ℹ️ CLOUD_PREMIUM(高性能云盘), CLOUD_SSD(SSD云硬盘))
  9. Disk Size: 50 G
  10. VPC ID: 空(autok3s 会自动创建)
  11. Subnet ID: 空(autok3s 会自动创建)
  12. Internet Max Bandwidth Out:5 (可以按需调小)
  13. Security Group Ids:空, 让 autok3s 自动创建, 集群创建好之后再调整安全组, 缩小入口范围
  14. EIP:是否使用弹性公网IP false
  15. Tags (见下文)
  16. K3s Version: v1.21.7+k3s1
  17. Cluster: true
  18. Master Extra Args: 见下文
  19. Cluster模式: true
  20. Registry(见下文)
  21. UI:true

⚠️ Warning:

执行 autok3s 创建前, 如果选择已有的安全组, 那么 CVM 实例至少需要应用以下安全组规则:

Rule        Protocol    Port      Source             Description
InBound     TCP         22        ALL                SSH Connect Port
InBound     TCP         6443      K3s agent nodes    Kubernetes API
InBound     TCP         10250     K3s server & agent Kubelet
InBound     UDP         8472      K3s server & agent (Optional) Required only for Flannel VXLAN
InBound     TCP         2379,2380 K3s server nodes   (Optional) Required only for embedded ETCD
OutBound    ALL         ALL       ALL                Allow All

特别是: 22 端口必须要对操作机的公网IP 开放

原因: autok3s 自动部署公有云时, 通过公网IP 上传 KeyPair, 如果没有以上安全组, autok3s 会执行失败. 报错如下: (101.34.46.218 就是公网 IP)

level=error msg="[ssh-dialer] init dialer [101.34.46.218:22] error: [tencent] calling getInstanceStatus error. region: ap-shanghai, zone: ap-shanghai-2, instanceName: [ins-ggxozpyl ins-cfi2vio1 ins-78rkem0b], message: not `RUNNING` status"

安装步骤

AutoK3s

在操作机上安装,命令如下:

curl -sS http://rancher-mirror.cnrancher.com/autok3s/install.sh  | INSTALL_AUTOK3S_MIRROR=cn sh

过程如下:

Downloading package http://rancher-mirror.rancher.cn/autok3s/v0.4.6/autok3s_linux_amd64 as /tmp/autok3s_linux_amd64
Download complete.

Running with sufficient permissions to attempt to move autok3s to /usr/local/bin
New version of autok3s installed to /usr/local/bin
Version: {"gitVersion":"v0.4.6","gitCommit":"4537e6ee2aea8b204a72f7b6c377edb154f7c058","gitTreeState":"","buildDate":"2021-12-28T04:15:30Z","goVersion":"go1.16.2","compiler":"gc","platform":"linux/amd64"}
Downloading package http://rancher-mirror.rancher.cn/kube-explorer/v0.2.7/kube-explorer-linux-amd64 as /tmp/kube-explorer-linux-amd64
Download complete.

Running with sufficient permissions to attempt to move kube-explorer to /usr/local/bin
New version of kube-explorer installed to /usr/local/bin
Skipping /usr/local/bin/kubectl symlink to autok3s, already exists

您可以通过以下 CLI 命令启动本地 UI。

autok3s serve --bind-address 0.0.0.0 --bind-port 8087

⚠️ Warning:

页面无登录认证,确保最小权限开放以及用完后及时关闭。

输出如下:

INFO[0000] run as daemon, listening on 127.0.0.1:8087

访问 UI:http://<操作机IP>:8087

AutoK3s UI 模板

如果今后要多次安装,可以在 UI 上创建可复用的模板,模板包括如下固定参数:

  1. Credential Options:

    1. 腾讯云 Secret Id
    2. 腾讯云 Secret Key
  2. Instance Options

    1. Basic
      1. Region:ap-shanghai
      2. Zone:ap-shanghai-2
      3. Instance Type: S5.MEDIUM8
      4. Image: img-22trbn9x (ubuntu 20.04)
      5. Disk Category: CLOUD_SSD
      6. Disk Size: 50 G
    2. Network
      1. Internet Max Bandwidth Out:5
      2. EIP: Disable
      3. ⚠️ 注意:另外 3 个参数:VPC ID、SubnetID、Security Group Ids 每次创建时需要按需填写或留空
    3. SSH Public
      1. SSH User:ubuntu
      2. SSH Port:22
      3. Keypair Id : 留空(⚠️ 注意:如果 Keypair Id 留空,会自动生成 Keypair)
    4. SSH Private
      1. SSH Agent Auth:Disable
      2. SSH Key Path: 留空(⚠️ 注意:如果上面选择了 Keypair Id, 那么对应的SSH Key Path 也要填写)
    5. Advance
      1. 打了 3 个 tags,方便后续管理:
        1. app=rancher
        2. env=prod
        3. provider=k3s
  3. K3s Options

    1. Basic

      1. K3s Channel: stable
      2. K3s Version: v1.21.7+k3s1 (ℹ️ Info: 202201 根据 suse 官网选型的最新稳定版,k3s v1.21.7+k3s1,后面会按需调整版本)
      3. Cluster: Enable(启用集群模式,使用 etcd 组成高可用集群)
      4. K3s Install Script:http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh
    2. Master

      1. Master: 3

      2. Master Extra Args:

        --write-kubeconfig-mode "644" --pause-image registry.cn-hangzhou.aliyuncs.com/rancher/pause:3.6 --etcd-s3 --etcd-snapshot-schedule-cron 0 0 * * * --etcd-s3-endpoint cos.ap-shanghai.myqcloud.com --etcd-s3-access-key <your-cos-access-key> --etcd-s3-secret-key  <your-cos-secret-key> --etcd-s3-bucket  <your-cos-bucket> --etcd-s3-folder /rancher/k3s
    3. Worker

      1. Worker: 0
    4. Advance: 留空

    5. TLS Sans: 留空 (⚠️ 如果前面会使用 CLB 作为负载均衡,那么建议填上 CLB VIP)

    6. Registry, 见下面registries.yaml

  4. Additional Options

    1. UI: explorer

registries.yaml:

mirrors:
  docker.io:
    endpoint:
      - "https://mirror.ccs.tencentyun.com"
      - "https://registry.cn-hangzhou.aliyuncs.com"
      - "https://docker.mirrors.ustc.edu.cn"
  quay.io:
    endpoint:
      - "https://mirror.ccs.tencentyun.com"    
configs:
  'ccr.ccs.tencentyun.com':
    auth:
      username: <your-account-id>
      password: <your-registry-password>

AutoK3s 通过 UI 创建 K3S 集群

访问 UI 界面, 点击 Quick Start, Provider 选择 tencent;

然后在下方填入自定义的信息, 主要是填写 Network 的信息, 如下图:

点击 Create, 等待返回结果即可.

AutoK3s CLI 命令

您也可以通过以下 CLI 在 腾讯云上快速创建一个 3 master, 0 worker 节点的 K3s 高可用集群。

autok3s create --provider tencent --cluster --enable [ "explorer" ] --k3s-channel stable --k3s-install-mirror INSTALL_K3S_MIRROR=cn --k3s-install-script http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh --k3s-version v1.21.7+k3s1 --master 3 --master-extra-args '--write-kubeconfig-mode "644" --pause-image registry.cn-hangzhou.aliyuncs.com/rancher/pause:3.6 --etcd-s3 --etcd-snapshot-schedule-cron 0 0 * * * --etcd-s3-endpoint cos.ap-shanghai.myqcloud.com --etcd-s3-access-key <your-cos-access-key> --etcd-s3-secret-key <your-cos-secret-key> --etcd-s3-bucket <your-cos-bucket> --etcd-s3-folder /rancher/k3s' --name rancher-1 --ssh-port 22 --ssh-user ubuntu --tls-sans <your-clb-ip> --worker 0 --disk-category CLOUD_SSD --disk-size 50 --image img-22trbn9x --instance-type S5.MEDIUM8 --internet-max-bandwidth-out 5 --keypair-id <your-keypair-id> --region ap-shanghai --secret-id <your-tencent-secret-id> --secret-key <your-tencent-secret-key> --tags 'app=rancher' --tags 'env=prod' --tags 'provider=k3s' --zone ap-shanghai-2 --vpc <your-vpc-id> --subnet <your-subnet-id> --registry /etc/autok3s/registries.yaml

安装成功日志显示如下:

time="2022-02-12T14:52:16+08:00" level=info msg="[tencent] executing create logic..."
INFO[0000] [tencent] use existing key pair 
time="2022-02-12T14:52:16+08:00" level=info msg="[tencent] 3 masters and 0 workers will be added"
time="2022-02-12T14:52:16+08:00" level=info msg="[tencent] check default security group autok3s in region ap-shanghai"
time="2022-02-12T14:52:16+08:00" level=info msg="[tencent] create default security group autok3s in region ap-shanghai"
time="2022-02-12T14:52:16+08:00" level=info msg="[tencent] check rules of security group autok3s"
time="2022-02-12T14:52:18+08:00" level=info msg="[tencent] 3 number of master instances will be created"
time="2022-02-12T14:52:23+08:00" level=info msg="[tencent] 3 number of master instances successfully created"
time="2022-02-12T14:52:23+08:00" level=info msg="[tencent] waiting for the instances [ins-xxxxx] to be in `RUNNING` status..."
time="2022-02-12T14:52:54+08:00" level=info msg="[tencent] instances [ins-xxxxx] are in `RUNNING` status"
time="2022-02-12T14:52:54+08:00" level=info msg="[tencent] executing init k3s cluster logic..."
time="2022-02-12T14:52:54+08:00" level=info msg="[tencent] creating k3s master-1..."
mirrors:
    docker.io:
        endpoint:
            - https://mirror.ccs.tencentyun.com
            - https://registry.cn-hangzhou.aliyuncs.com
            - https://docker.mirrors.ustc.edu.cn
    quay.io:
        endpoint:
            - https://mirror.ccs.tencentyun.com
configs:
    ccr.ccs.tencentyun.com:
        auth:
            username: 
            password: 
            auth: ""
            identity_token: ""
        tls: null
auths: {}
time="2022-02-12T14:53:26+08:00" level=info msg="[cluster] k3s master command: curl -sLS http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_TOKEN='xxxxxxx' INSTALL_K3S_EXEC='server  --tls-san xxxxx --tls-san xxxxxxxx --tls-san xxxxxxx --node-external-ip xxxxxx --write-kubeconfig-mode \"644\" --pause-image registry.cn-hangzhou.aliyuncs.com/rancher/pause:3.6 --disable-cloud-controller --cluster-cidr 10.42.0.0/16 --cluster-init' INSTALL_K3S_VERSION='v1.21.7+k3s1' sh -"
[INFO]  Using v1.21.7+k3s1 as release
[INFO]  Downloading hash http://rancher-mirror.cnrancher.com/k3s/v1.21.7-k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary http://rancher-mirror.cnrancher.com/k3s/v1.21.7-k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Creating /usr/local/bin/ctr symlink to k3s
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
[INFO]  systemd: Starting k3s
time="2022-02-12T14:53:59+08:00" level=info msg="[tencent] successfully created k3s master-1"
time="2022-02-12T14:53:59+08:00" level=info msg="[tencent] creating k3s master-2..."
...
time="2022-02-12T14:54:35+08:00" level=info msg="[tencent] successfully created k3s master-2"
time="2022-02-12T14:54:35+08:00" level=info msg="[tencent] creating k3s master-3..."
...
time="2022-02-12T14:55:06+08:00" level=info msg="[tencent] successfully created k3s master-3"
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: ......
    server: https://127.0.0.1:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    client-certificate-data: ......
    client-key-data: ......
time="2022-02-12T14:55:06+08:00" level=info msg="[tencent] deploying additional manifests"
time="2022-02-12T14:55:06+08:00" level=info msg="[tencent] successfully deployed additional manifests"
time="2022-02-12T14:55:06+08:00" level=info msg="[tencent] successfully executed init k3s cluster logic"
---
time="2022-02-12T14:55:07+08:00" level=info msg="[tencent] successfully deployed manifests"
time="2022-02-12T14:55:07+08:00" level=info msg="=========================== Prompt Info ==========================="
time="2022-02-12T14:55:07+08:00" level=info msg="Use 'autok3s kubectl config use-context prod-ha.ap-shanghai.tencent'"
time="2022-02-12T14:55:07+08:00" level=info msg="Use 'autok3s kubectl get pods -A' get POD status`"

🎉 到这里, K3S 集群创建完毕.

K3s 配置调整

🚩 Important:

安装后, 默认 k8s api 通过 公网 IP 进行通信, 出于安全考虑,建议调整 systemd 配置使其通过内网进行通信.

步骤如下:

修改后两台 master 的 /etc/systemd/system/k3s.service.envK3S_URL 为第一台 master 的内网地址

K3S_URL=https://<master1-internal-ip>:6443

第一台 master, 修改 /etc/systemd/system/k3s.service , 增加:

        '--node-ip' \
        '<master1-internal-ip>' \
        '--advertise-address' \
        '<master1-internal-ip>' \

另外2台, 增加及修改如下:

        '--server' \
        'https://<master1-internal-ip>:6443' \
        ...
        '--node-ip' \
        '<other-master-internal-ip>' \
        '--advertise-address' \
        '<other-master-internal-ip>' \

重启生效:

systemctl daemon-reload
systemctl restart k3s.service

验证:

查看 kubernetes 的 endpoint, 从公网地址变为内网地址, 如下:

apiVersion: v1
kind: Endpoints
metadata:
  name: kubernetes
  namespace: default
  ...
  labels:
    endpointslice.kubernetes.io/skip-mirror: 'true'
  managedFields:
    - manager: k3s
      operation: Update
      ...
  selfLink: /api/v1/namespaces/default/endpoints/kubernetes
subsets:
  - addresses:
      - ip: <master2-internal-ip>
      - ip: <master1-internal-ip>
      - ip: <master3-internal-ip>
    ports:
      - name: https
        port: 6443
        protocol: TCP

收尾工作

调整安全组

入站规则:

  1. TCP:22(SSH) 端口权限收紧
  2. TCP:6443(K8S API) 端口权限收紧
  3. UDP:8472(K3s vxlan) 只开放给内网
  4. TCP:10250(kube api-server) 只开放给内网

最终效果如下: (应该可以进一步收紧)

总结

🎉🎉🎉 至此, 完成腾讯云上 K3S 高可用集群的搭建, 并配置备份.

为后面的 Rancher 搭建做好了基础。

以下是安装后的相关输出信息:

K3s

  1. 3 个 Master 和 Server hostname、内外网IP

  2. K3S API Server 地址:https://<以上6个IP地址任一个或CLB的IP>:6443

  3. K3S kubeconfig 配置:位于 k3s 的/etc/rancher/k3s/k3s.yaml 以及操作机的 /root/.autok3s/.kube/config

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/371209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LINUX】环境变量以及main函数的参数

文章目录前言环境变量常见环境变量&#xff1a;设置环境变量&#xff1a;和环境变量相关的命令&#xff1a;环境变量的组织方式&#xff1a;获取环境变量环境变量可以被子进程继承环境变量总结main函数的参数前言 大家好久不见&#xff0c;今天分享的内容是环境变量和main函数…

JUC并发编程与源码分析笔记09-原子类操作之十八罗汉增强

基本类型原子类 AtomicInteger、AtomicBoolean、AtomicLong。 常用API&#xff1a; public final int get();// 获取当前的值 public final int getAndSet(int newValue);// 获取当前值&#xff0c;并设置新值 public final int getAndIncrement();// 获取当前的值&#xff0…

2.25Maven的安装与配置

一.Mavenmaven是一个Java世界中,非常知名的"工程管理工具"/构建工具"核心功能:1.管理依赖在进行一个A 操作之前,要先进行一个B操作.依赖有的时候是很复杂的,而且是嵌套的2.构建/编译(也是在调用jdk)3. 打包把java代码给构建成jar或者warjar就是一个特殊的压缩包…

【基础算法】二分例题(我在哪?)

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

元宇宙+教育,正在引发哪些剧烈变革?机会在哪里?丨圆桌实录

图片来源&#xff1a;由无界AI绘画工具生成2月23日&#xff0c;温州元宇宙创新中心为2023年第一批申请入驻的项目企业举办了签约仪式。温州临境网络科技有限公司、温州好玩文化产业有限公司、温州云兮科技有限公司&#xff08;筹&#xff09;等企业完成签约。这意味着&#xff…

Spring 事务管理详解及使用

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Vue模态框的封装

一、模态框1、模态框&#xff1a;若对话框不关闭&#xff0c;不能操作其父窗口2、非模态框&#xff1a;对话框不关闭&#xff0c;可以操作其窗口二、Vue组件实现模态框的功能1、模态框是一个子组件2、显示和隐藏由父组件决定3、对话框的标题也是由父组件传递的4、对话框的主显示…

OpenAPI SDK组件之Spring Aop源码拓展

Spring Aop 看这个分享的应该都用过Spring Aop&#xff0c;这里就不再过多介绍了它是什么了。 我抽取了Spring Aop的部分源码&#xff0c;通过它实现请求参数可变拦截&#xff0c;同时apisdk离开Spring框架&#xff0c;仍然可以正常运行。 讲拦截也好&#xff0c;通知也罢&a…

[蓝桥杯 2022 国 B] 卡牌(贪心/二分)

题目传送门 该题第一思路是想去模拟题目中所描述的过程 这里我选择从大到小遍历可能凑出的牌套数&#xff0c;计算凑出它需要补的牌数以及判断是否会超出能补的牌数 #include<iostream> #include<climits> #include<vector> #include<algorithm> #def…

深拷贝与浅拷贝的理解

浅拷贝的理解浅拷贝的话只会拷贝基本数据类型&#xff0c;例如像string、Number等这些&#xff0c;类似&#xff1a;Object、Array 这类的话拷贝的就是对象的一个指针(通俗来讲就是拷贝一个引用地址&#xff0c;指向的是一个内存同一份数据)&#xff0c;也就是说当拷贝的对象数…

【人工智能 AI】What is RPA? 什么是机器人流程自动化?

目录 Introduction to RPA 机器人流程自动化简介 What is RPA? 什么是机器人流程自动化?

17、触发器

文章目录1 触发器概述2 触发器的创建2.1 创建触发器语法2.2 代码举例3 查看、删除触发器3.1 查看触发器3.2 删除触发器4 触发器的优缺点4.1 优点4.2 缺点4.3 注意点尚硅谷MySQL数据库教程-讲师&#xff1a;宋红康 我们缺乏的不是知识&#xff0c;而是学而不厌的态度 在实际开发…

数据结构:各种排序方法的综合比较

排序方法的选用应视具体场合而定。一般情况下考虑的原则有:(1)待排序的记录个数 n;(2)记录本身的大小;(3)关键字的分布情况:(4)对排序稳定性的要求等。 1.时间性能 (1) 按平均的时间性能来分,有三类排序方法: 时间复杂度为 O(nlogn)的方法有:快速排序、堆排序和归并排序,其中…

前端一面必会面试题(边面边更)

哪些情况会导致内存泄漏 以下四种情况会造成内存的泄漏&#xff1a; 意外的全局变量&#xff1a; 由于使用未声明的变量&#xff0c;而意外的创建了一个全局变量&#xff0c;而使这个变量一直留在内存中无法被回收。被遗忘的计时器或回调函数&#xff1a; 设置了 setInterval…

P1196 [NOI2002] 银河英雄传说 带权并查集

[NOI2002] 银河英雄传说 题目背景 公元 580158015801 年&#xff0c;地球居民迁至金牛座 α\alphaα 第二行星&#xff0c;在那里发表银河联邦创立宣言&#xff0c;同年改元为宇宙历元年&#xff0c;并开始向银河系深处拓展。 宇宙历 799799799 年&#xff0c;银河系的两大军…

使用Java编写Hive的UDF实现身份证号码校验及15位升级18位

使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中&#xff0c;有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息。古人是用Oracle做数仓&#xff0c;理所当然是用SQL写UDF【虽然SQL写UDF给SQL用就像用鸡肉饲养肉…

Gin获取Response Body引发的OOM

有轮子尽量用轮子 &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; 我们在开发中基于Gin开发了一个Api网关&#xff0c;但上线后发现内存会在短时间内暴涨&#xff0c;然后被OOM kill掉。具体内存走势如下图&#xff1a; 放大其中一次 在…

OllyDbg

本文通过吾爱破解论坛上提供的OllyDbg版本为例&#xff0c;讲解该软件的使用方法 F2对鼠标所处的位置打下断点&#xff0c;一般表现为鼠标所属地址位置背景变红F3加载一个可执行程序&#xff0c;进行调试分析&#xff0c;表现为弹出打开文件框F4执行程序到光标处F5缩小还原当前…

EF 框架的简介、发展历史;ORM框架概念

一、EF 框架简介EF 全称是 EntityFramework 。Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。如果不用ORM框架&#xff0c;我们一般这样…

考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略

考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略一级目录二级目录三级目录控制原理ELADRC信号提取龙格贝尔观测器方波注入simulink仿真给定转速&#xff1a;转速环&#xff1a;电流环&#xff1a;一级目录 二级目录 三级目录 首先声明一下&#xff0c;本篇博客是复现…