k8s的原理和,k8s的安装

k8s:管理容器集群k8s的组成和调用原理cluster集群:控制平面和node共同构成一个cluster服务调用流程ingress控制器:让外部用户访问集群内部的服务kubeprox转发pod的容器中Control plan控制平面组件:控制和管理多个node1.api server:支持使用提供的api创建服务----kubectl执行命令调用api(6443)2.scheduler:负责集群内部的资源调度和分配(10259)    3.Controller manager:创建,关闭服务(10257)4.ctcd:存储上述数据(2379-2380)node组件1.kubelet:管理pod,包括创建,修改,容器监控,节点状态汇报和api server通信(10250)2.Pod 组成:应用服务container,日志服务container,监控采集器         3.Container runtime:下载部署镜像(containerd)4.kubeprox:负责pod的通信与负载均衡功能(10256)部署服务工作流程:1.执行命令kubectl解析yml文件(定义pod里面用到了哪些镜像占用多少内存等),将解析的文件发送给api server,api server根据要求驱使shecduler通过etcd提供的数据寻找合适的node2.控制平面内的controller manager控制node节点去创建服务3.kubelet收到指令后,通知container runtime去拉取镜像创建容器kubernetes 安装环境harbor	192.168.88.240	2CPU,4G内存master	192.168.88.50	2CPU,4G内存node-0001	192.168.88.51	2CPU,2G内存node-0002	192.168.88.52	2CPU,2G内存node-0003	192.168.88.53	2CPU,2G内存kubernetes 安装一.安装控制节点1、配置软件仓库准备包2、系统环境配置(1)配置安装源[root@master ~]# vim /etc/yum.repos.d/k8s.repo[k8s]name=Rocky Linux $releasever - Kubernetesbaseurl="ftp://192.168.88.240/rpms"enabled=1gpgcheck=0(2)禁用 firewall 和 swap[root@master ~]# sed '/swap/d' -i /etc/fstab[root@master ~]# swapoff -a[root@master ~]# dnf remove -y firewalld-*3、安装软件包kubeadm:集群配置管理工具config:生成配置文件的模板,查看需要安装哪些镜像kubeadm config print init-defaults > kubeadm-config.yamlkubeadm config images list #查看需要安装哪些镜像init:集群初始化join:计算节点加入集群reset:还原,删除集群配置token:token凭证管理create delete generate listhelp:命令帮助信息kubectl:集群进行交互的命令行工具kubelet:管理podcontainerd.io(runtime):容器管理软件 ipvsadm:容器集群管理工具ipset:iproute-tc:网络流量管理工具(1):域名映射 /etc/hosts192.168.88.240  harbor192.168.88.50   master192.168.88.51   node-0001192.168.88.52   node-0002192.168.88.53   node-0003(2)安装相关包dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc(3)修改containerd指向仓库地址[root@master ~]# containerd config default >/etc/containerd/config.toml #生成默认配置文件[root@master ~]# vim /etc/containerd/config.toml61:     sandbox_image = "harbor:443/k8s/pause:3.9"125:    SystemdCgroup = true154 行新插入:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls]insecure_skip_verify = true(4)重启: systemctl enable --now kubelet containerd4、配置内核参数(1)加载内核模块[root@master ~]# vim /etc/modules-load.d/containerd.confbr_netfilter #网桥防火墙模块xt_conntrack #链接跟踪表模块[root@master ~]# systemctl start systemd-modules-load.service (2)设置内核参数[root@master ~]# vim /etc/sysctl.d/99-kubernetes-cri.confnet.ipv4.ip_forward = 1    #路由转发net.bridge.bridge-nf-call-iptables = 1 #开启ipv4桥流量监控net.bridge.bridge-nf-call-ip6tables = 1 #开启ipv6桥流量监控net.netfilter.nf_conntrack_max = 1000000 #设置连接跟踪表大小[root@master ~]# sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf  #刷新5、导入 k8s 镜像拷贝本阶段 kubernetes/init 目录到 masterrsync -av kubernetes/init 192.168.88.50:/root/(1)安装部署 docker[root@master ~]# dnf install -y docker-ce[root@master ~]# vim /etc/docker/daemon.json {"registry-mirrors":["https://harbor:443"],"insecure-registries":["harbor:443"]}[root@master ~]# systemctl enable --now docker[root@master ~]# docker info(2)上传镜像到 harbor 仓库[root@master ~]# docker login harbor:443 Username: <登录用户>Password: <登录密码>Login Succeeded[root@master ~]# docker load -i init/v1.29.2.tar.xz[root@master ~]# docker images|while read i t _;do #打tag上传镜像[[ "${t}" == "TAG" ]] && continue[[ "${i}" =~ ^"harbor:443/".+ ]] && continuedocker tag ${i}:${t} harbor:443/k8s/${i##*/}:${t}docker push harbor:443/k8s/${i##*/}:${t}docker rmi ${i}:${t} harbor:443/k8s/${i##*/}:${t}done6、设置kubeadm和kubectl的Tab键,tab出子命令[root@master ~]# source <(kubeadm completion bash|tee /etc/bash_completion.d/kubeadm)[root@master ~]# source <(kubectl completion bash|tee /etc/bash_completion.d/kubectl)7、安装主控制节点(1)修改ip[root@master ~]# vim /root/init/init.yaml13:  advertiseAddress: 192.168.88.50(2)测试系统环境[root@master ~]# kubeadm init --config=init/init.yaml --dry-run 2>error.log[root@master ~]# cat error.log(3)主控节点初始化[root@master ~]# rm -rf error.log /etc/kubernetes/tmp[root@master ~]# kubeadm init --config=init/init.yaml |tee init/init.log# tee一般用于记录日志的(4)管理授权mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config(5)验证安装结果[root@master ~]# kubectl get nodesNAME     STATUS     ROLES           AGE   VERSIONmaster   NotReady   control-plane   19s   v1.29.2#config配置文件修改的部分localAPIEndpoint:advertiseAddress: 192.168.88.50 --bindPort: 6443 --nodeRegistration:criSocket: unix:///run/containerd/containerd.sock --imagePullPolicy: IfNotPresentname: master --taints: nullimageRepository: harbor:443/k8s --kind: ClusterConfigurationkubernetesVersion: 1.29.2  --#kubeadm version查看版本networking:dnsDomain: cluster.local #域名 --podSubnet: 10.244.0.0/16  #pod的子网 --serviceSubnet: 10.245.0.0/16 #服务的子网 -----kind: KubeProxyConfiguration   --apiVersion: kubeproxy.config.k8s.io/v1alpha1 --mode: ipvs --ipvs: -- strictARP: true -----kind: KubeletConfiguration --apiVersion: kubelet.config.k8s.io/v1beta1 --cgroupDriver: systemd --二.安装网络插件calico:让容器可以跨节点通信,也可以设置访问策略1.上传镜像rsync -av kubernetes/plugins 192.168.88.50:/root/[root@master ~]# cd plugins/calico[root@master calico]# docker load -i calico.tar.xz[root@master calico]# docker images|while read i t _;do[[ "${t}" == "TAG" ]] && continue[[ "${i}" =~ ^"harbor:443/".+ ]] && continuedocker tag ${i}:${t} harbor:443/plugins/${i##*/}:${t}docker push harbor:443/plugins/${i##*/}:${t}docker rmi ${i}:${t} harbor:443/plugins/${i##*/}:${t}done2.安装 calico(1)修改配置文件的docker仓库sed -ri 's,^(\s*image: )(.*/)?(.+),\1harbor:443/plugins/\3,' calico.yaml(2)启动[root@master calico]# kubectl apply -f calico.yaml   [root@master calico]# kubectl get nodes  和 ifconfig三.安装计算节点1、获取凭证(1)查看,删除,创建 tokenkubeadm token listkubeadm token delete abcdef.0123456789abcdefkubeadm token create --ttl=0 --print-join-command#ttl:token的生命周期,#print-join-command:打印如何使用token也可以计算hash值openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt |openssl rsa -pubin -outform der |openssl dgst -sha256 -hex(2)node加入control plan组成k8s集群[root@node ~]#每台机器操作 控制节点 的2,3,4步骤kubeadm join 192.168.88.50:6443 --token cdo4jl.9qmtqvhvti54k8vo --discovery-token-ca-cert-hash sha256:c2d96fc0ef5b813058eb51cf3ad805edfc5170415e5399d5f1c0083f3f36e14f  #执行命令加入集群

k8s:管理容器集群

k8s的组成和调用原理

    cluster集群:控制平面和node共同构成一个cluster
    
    服务调用流程
        ingress控制器:让外部用户访问集群内部的服务
        kubeprox转发
        pod的容器中
    
    Control plan控制平面组件:控制和管理多个node
          1.api server:支持使用提供的api创建服务----kubectl执行命令调用api(6443)
         2.scheduler:负责集群内部的资源调度和分配(10259)    
          3.Controller manager:创建,关闭服务(10257)
          4.ctcd:存储上述数据(2379-2380)
    
    node组件
         1.kubelet:管理pod,包括创建,修改,容器监控,节点状态汇报和api server通信(10250)
          2.Pod 组成:应用服务container,日志服务container,监控采集器         
          3.Container runtime:下载部署镜像(containerd)
          4.kubeprox:负责pod的通信与负载均衡功能(10256)
    
    部署服务工作流程:
        1.执行命令kubectl解析yml文件(定义pod里面用到了哪些镜像占用多少内存等),将解析的文件发送给api server,api server根据要求驱使shecduler通过etcd提供的数据寻找合适的node
          2.控制平面内的controller manager控制node节点去创建服务
         3.kubelet收到指令后,通知container runtime去拉取镜像创建容器

kubernetes 安装
    环境
        harbor    192.168.88.240    2CPU,4G内存
        master    192.168.88.50    2CPU,4G内存
        node-0001    192.168.88.51    2CPU,2G内存
        node-0002    192.168.88.52    2CPU,2G内存
        node-0003    192.168.88.53    2CPU,2G内存

kubernetes 安装

一.安装控制节点

1、配置软件仓库
    准备包

2、系统环境配置
    (1)配置安装源
    [root@master ~]# vim /etc/yum.repos.d/k8s.repo
        [k8s]
        name=Rocky Linux $releasever - Kubernetes
        baseurl="ftp://192.168.88.240/rpms"
        enabled=1
        gpgcheck=0
    (2)禁用 firewall 和 swap
        [root@master ~]# sed '/swap/d' -i /etc/fstab
        [root@master ~]# swapoff -a
        [root@master ~]# dnf remove -y firewalld-*

3、安装软件包
    kubeadm:集群配置管理工具

        config:生成配置文件的模板,查看需要安装哪些镜像
            kubeadm config print init-defaults > kubeadm-config.yaml
            kubeadm config images list #查看需要安装哪些镜像
        init:集群初始化
        join:计算节点加入集群
        reset:还原,删除集群配置
        token:token凭证管理
            create delete generate list
        help:命令帮助信息

    kubectl:集群进行交互的命令行工具
    kubelet:管理pod
    containerd.io(runtime):容器管理软件 
    ipvsadm:容器集群管理工具
    ipset:
    iproute-tc:网络流量管理工具

    (1):域名映射 /etc/hosts
        192.168.88.240  harbor
        192.168.88.50   master
        192.168.88.51   node-0001
        192.168.88.52   node-0002
        192.168.88.53   node-0003
    (2)安装相关包
        dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc

    (3)修改containerd指向仓库地址
        [root@master ~]# containerd config default >/etc/containerd/config.toml #生成默认配置文件

        [root@master ~]# vim /etc/containerd/config.toml

        61:     sandbox_image = "harbor:443/k8s/pause:3.9"
        125:    SystemdCgroup = true
        154 行新插入:
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
                  endpoint = ["https://192.168.88.240:443"]
               [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]
                  endpoint = ["https://192.168.88.240:443"]
               [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls]
                  insecure_skip_verify = true

    (4)重启: systemctl enable --now kubelet containerd

4、配置内核参数

    (1)加载内核模块
        [root@master ~]# vim /etc/modules-load.d/containerd.conf
            br_netfilter #网桥防火墙模块
            xt_conntrack #链接跟踪表模块
        [root@master ~]# systemctl start systemd-modules-load.service 
    
    (2)设置内核参数
        [root@master ~]# vim /etc/sysctl.d/99-kubernetes-cri.conf
        net.ipv4.ip_forward = 1    #路由转发
        net.bridge.bridge-nf-call-iptables = 1 #开启ipv4桥流量监控
        net.bridge.bridge-nf-call-ip6tables = 1 #开启ipv6桥流量监控
        net.netfilter.nf_conntrack_max = 1000000 #设置连接跟踪表大小
        [root@master ~]# sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf  #刷新
    
5、导入 k8s 镜像
    拷贝本阶段 kubernetes/init 目录到 master
    rsync -av kubernetes/init 192.168.88.50:/root/


    (1)安装部署 docker
        [root@master ~]# dnf install -y docker-ce
        [root@master ~]# vim /etc/docker/daemon.json 
        {
            "registry-mirrors":["https://harbor:443"],
            "insecure-registries":["harbor:443"]
        }
        [root@master ~]# systemctl enable --now docker
        [root@master ~]# docker info

    (2)上传镜像到 harbor 仓库
        [root@master ~]# docker login harbor:443 
        Username: <登录用户>
        Password: <登录密码>
        Login Succeeded
        [root@master ~]# docker load -i init/v1.29.2.tar.xz
        [root@master ~]# docker images|while read i t _;do #打tag上传镜像
            [[ "${t}" == "TAG" ]] && continue
            [[ "${i}" =~ ^"harbor:443/".+ ]] && continue
            docker tag ${i}:${t} harbor:443/k8s/${i##*/}:${t}
            docker push harbor:443/k8s/${i##*/}:${t}
            docker rmi ${i}:${t} harbor:443/k8s/${i##*/}:${t}
        done

6、设置kubeadm和kubectl的Tab键,tab出子命令
    [root@master ~]# source <(kubeadm completion bash|tee /etc/bash_completion.d/kubeadm)
    [root@master ~]# source <(kubectl completion bash|tee /etc/bash_completion.d/kubectl)

7、安装主控制节点
    (1)修改ip
    [root@master ~]# vim /root/init/init.yaml
        13:  advertiseAddress: 192.168.88.50

    (2)测试系统环境
        [root@master ~]# kubeadm init --config=init/init.yaml --dry-run 2>error.log
        [root@master ~]# cat error.log

    (3)主控节点初始化
        [root@master ~]# rm -rf error.log /etc/kubernetes/tmp
        [root@master ~]# kubeadm init --config=init/init.yaml |tee init/init.log
                # tee一般用于记录日志的
    (4)管理授权
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config

    (5)验证安装结果
        [root@master ~]# kubectl get nodes
        NAME     STATUS     ROLES           AGE   VERSION
        master   NotReady   control-plane   19s   v1.29.2

    #config配置文件修改的部分
    localAPIEndpoint:
      advertiseAddress: 192.168.88.50 --
      bindPort: 6443 --
    nodeRegistration:
      criSocket: unix:///run/containerd/containerd.sock --
      imagePullPolicy: IfNotPresent
      name: master --
      taints: null
    
    imageRepository: harbor:443/k8s --
    kind: ClusterConfiguration
    kubernetesVersion: 1.29.2  --#kubeadm version查看版本
    
    networking:
      dnsDomain: cluster.local #域名 --
      podSubnet: 10.244.0.0/16  #pod的子网 --
      serviceSubnet: 10.245.0.0/16 #服务的子网 --
    
    ---
    kind: KubeProxyConfiguration   --
    apiVersion: kubeproxy.config.k8s.io/v1alpha1 --
    mode: ipvs --
    ipvs: -- 
      strictARP: true --
    ---
    kind: KubeletConfiguration --
    apiVersion: kubelet.config.k8s.io/v1beta1 --
    cgroupDriver: systemd --

二.安装网络插件calico:让容器可以跨节点通信,也可以设置访问策略

    1.上传镜像
        rsync -av kubernetes/plugins 192.168.88.50:/root/
        [root@master ~]# cd plugins/calico
        [root@master calico]# docker load -i calico.tar.xz
        [root@master calico]# docker images|while read i t _;do
            [[ "${t}" == "TAG" ]] && continue
            [[ "${i}" =~ ^"harbor:443/".+ ]] && continue
            docker tag ${i}:${t} harbor:443/plugins/${i##*/}:${t}
            docker push harbor:443/plugins/${i##*/}:${t}
            docker rmi ${i}:${t} harbor:443/plugins/${i##*/}:${t}
        done
    2.安装 calico
        (1)修改配置文件的docker仓库
            sed -ri 's,^(\s*image: )(.*/)?(.+),\1harbor:443/plugins/\3,' calico.yaml
        (2)启动
            [root@master calico]# kubectl apply -f calico.yaml   
            [root@master calico]# kubectl get nodes  和 ifconfig

三.安装计算节点

1、获取凭证
    (1)查看,删除,创建 token
        kubeadm token list
        kubeadm token delete abcdef.0123456789abcdef
        kubeadm token create --ttl=0 --print-join-command
            #ttl:token的生命周期,#print-join-command:打印如何使用token
    也可以计算hash值
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt |openssl rsa -pubin -outform der |openssl dgst -sha256 -hex

    (2)node加入control plan组成k8s集群
        [root@node ~]#每台机器操作 控制节点 的2,3,4步骤
    
        kubeadm join 192.168.88.50:6443 --token cdo4jl.9qmtqvhvti54k8vo --discovery-token-ca-cert-hash sha256:c2d96fc0ef5b813058eb51cf3ad805edfc5170415e5399d5f1c0083f3f36e14f  #执行命令加入集群

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

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

相关文章

计算机网络 (33)传输控制协议TCP概述

一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层&#xff0c;即传输层&#xff0c;为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议&#xff0c;但两者在设计上有明显的不同&…

JuiceFS 2024:开源与商业并进,迈向 AI 原生时代

即将过去的 2024 年&#xff0c;是 JuiceFS 开源版本推出的第 4 年&#xff0c;企业版的第 8 个年头。回顾过去这一年&#xff0c;JuiceFS 社区版依旧保持着快速成长的势头&#xff0c;GitHub 星标突破 11.1K&#xff0c;各项使用指标增长均超过 100%&#xff0c;其中文件系统总…

4、SDH为基础的多业务传送-MSTP

1、SDH&#xff08;Synchronous Digital Hierarchy&#xff0c;同步数字体系&#xff09; SDH 就像是一条超级高速公路&#xff0c;它的规则很严格&#xff0c;所有的车辆&#xff08;数据信号&#xff09;都要按照它规定的速度和车道&#xff08;标准的传输体制&#xff09;行…

初级前端面试题 - js

前言&#xff1a;众所周知&#xff0c;HTML,CSS,JS是学习前端所必备的。js的基础学好了&#xff0c;框架类的vue,react等都会接受的很快&#xff0c;因此js是前端很总要的一个部分&#xff0c;这篇文章将会结合面试题&#xff0c;对js的知识点进行总结 号外号外&#xff0c;这是…

使用 Maxwell 计算母线的电动势

三相短路事件的动力学 三相短路事件在电气系统中至关重要&#xff0c;因为三相之间的意外连接会导致电流大幅激增。如果管理不当&#xff0c;这些事件可能会造成损坏&#xff0c;因为它们会对电气元件&#xff08;尤其是母线&#xff09;产生极大的力和热效应。 短路时&#x…

Unity自定义编辑器:基于枚举类型动态显示属性

1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…

利用 Python 脚本批量创建空白 Markdown 笔记

文章目录 利用 Python 脚本批量创建空白 Markdown 笔记1 背景介绍2 需求描述3 明确思路4 具体实现4.1. 遍历 toc.md 文件&#xff0c;收集文件名和对应的文件内容4.2. 实现文件批量生成逻辑4.3. 补全缺失的工具函数4.4. 进一步补全工具函数中的工具函数 5 脚本运行6 注意事项 利…

Apache XMLBeans 一个强大的 XML 数据处理框架

Apache XMLBeans 是一个用于处理 XML 数据的 Java 框架&#xff0c;它提供了一种方式将 XML Schema (XSD) 映射到 Java 类&#xff0c;从而使得开发者可以通过强类型化的 Java 对象来访问和操作 XML 文档。下面将以一个简单的案例说明如何使用 Apache XMLBeans 来解析、生成和验…

计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

2024-2029年中国毛绒玩具行业市场分析及发展前景预测报告

引言&#xff1a;重要性及市场增长趋势 在快节奏的现代生活中&#xff0c;毛绒玩具以其柔软触感和温馨陪伴&#xff0c;成为了许多人心灵的慰藉。它们不仅是儿童的忠实玩伴&#xff0c;更是成人世界里不可或缺的情感寄托。近年来&#xff0c;随着消费者情感需求的日益增长和个…

安装vue脚手架出现的一系列问题

安装vue脚手架出现的一系列问题 前言使用 npm 安装 vue/cli2.权限问题及解决方法一&#xff1a;可以使用管理员权限进行安装。方法二&#xff1a;更改npm全局安装路径 前言 由于已有较长时间未进行 vue 项目开发&#xff0c;今日着手准备开发一个新的 vue 项目时&#xff0c;在…

YARN WebUI 服务

一、WebUI 使用 与HDFS一样&#xff0c;YARN也提供了一个WebUI服务&#xff0c;可以使用YARN Web用户界面监视群集、队列、应用程序、服务、流活动和节点信息。还可以查看集群详细配置的信息&#xff0c;检查各种应用程序和服务的日志。 1.1 首页 浏览器输入http://node2.itc…

JavaSE——网络编程

一、InetAddress类 InetAddress是Java中用于封装IP地址的类。 获取本机的InetAddress对象&#xff1a; InetAddress localHost InetAddress.getLocalHost();根据指定的主机名获取InetAddress对象&#xff08;比如说域名&#xff09; InetAddress host InetAddress.getByNa…

互联网全景消息(10)之Kafka深度剖析(中)

一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

G1原理—3.G1是如何提升垃圾回收效率

大纲 1.G1为了提升GC的效率设计了哪些核心机制 2.G1中的记忆集是什么 3.G1中的位图和卡表 4.记忆集和卡表有什么关系 5.RSet记忆集是怎么更新的 6.DCQ机制的底层原理是怎样的 7.DCQS机制及GC线程对DCQ的处理 提升G1垃圾回收器GC效率的黑科技 G1设计了一套TLAB机制 快速…

Elastic-Job相关

文档参考视频&#xff1a;09_SpringBoot案例演示_哔哩哔哩_bilibili 一、Elastic-Job介绍 Elastic-Job 是一个轻量级、分布式的任务调度框架&#xff0c;旨在解决分布式环境下的定时任务调度问题。 1.1. Elastic-Job 的核心组件 Elastic-Job 是由多个核心组件构成的&#x…

【Linux】设备驱动中的ioctl详解

在Linux设备驱动开发中&#xff0c;ioctl&#xff08;输入输出控制&#xff09;是一个非常重要的接口&#xff0c;用于用户空间应用程序与内核空间设备驱动之间进行通信。通过ioctl&#xff0c;应用程序可以发送命令给设备驱动&#xff0c;控制设备的行为或获取设备的状态信息。…

再次梳理ISP的大致流程

前言&#xff1a; 随着智能手机的普及&#xff0c;相机与我们的生活越来越紧密相关。在日常生活中&#xff0c;我们只需要轻轻按下手机上的拍照按钮&#xff0c;就能记录下美好时刻。那么问题来了&#xff1a;从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…

基于R语言森林生态系统的结构、功能与稳定性

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

nacos学习笔记(一)

1.前言 何为nacos&#xff0c;nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。可以说集注册中心&#xff0c;配置中心&#xff0c;服务管理于一起的平台。注册中心&#xff1a;相当于我们可以把服务注册到注册中心上&#xff0c;我们以后可以通过服…