k8s自动化安装脚本(kubeadm-1.23.7)

news2024/9/24 9:24:12

文章目录

  • 介绍
    • 软件架构
    • 版本介绍
    • 更新内容
      • 2023-02-19
      • 2023-02-15
      • 2023-02-14
      • 2023-02-10
      • 2022-10-20
      • 2022-08-06
        • 准备部署包
  • 操作步骤
    • 环境准备
      • 结构
        • 备注
    • 解压部署包
    • 修改host文件
    • 脚本使用方式
    • 初始化环境
      • 验证ansible配置
    • 安装k8s集群
      • 登录master的节点
      • 添加node节点
        • master节点状态检查
  • 组件安装
    • 安装方式
      • 访问prometheus
      • 访问grafana
        • 添加node-exporter面板
      • ingress-nginx
      • kuboard的安装
        • 访问kuboard
          • 纳管集群
    • 证书查看
      • kubeadm 命令查看
      • openssl 命令查看
      • kuboard界面查看
      • 更新证书
        • 验证证书有效期
      • 部署包地址
    • 总结

介绍

  1. 以1.21.1的脚本模板,重构k8s的部署方式(v1.23.7),添加私有仓库的部署及相关离线安装包的方式
  2. 通过kubeadm进行一键式部署k8s集群,根据不同的启动方式,可部署单节点、一主多从、多主多从高可用的k8s集群
  3. 通过ansible快速部署k8s的基础组件(nfs、helm、ingress、monitoring【联网|离线镜像】、kuboard【联网】)

软件架构

  1. 通过部署包中的run.sh进行统一入口,进行初始化环境(部署节点)
  2. ansible+shell实现自动获取host文件中的相关信息进行自动化部署

版本介绍

  1. 需要提前准备多台主机,根据准备机器的多少,修改host文件,本环境是为了开发环境中快速部署k8s集群
  2. 采用kubeadn安装,采用本地yum仓库,版本是:1.23.7
  3. 安装docker的yum源是基于Centos7.5/7.6,版本是:23.0.1
  4. 安装ansible时,使用离线安装,版本: 2.9.27
  5. 安装helm时,使用离线安装,版本: v3.8.1
  6. 高可用安装时:采用haproxy(1.5.18-9)+keepalived(1.3.5-19)
  7. 添加kuboard:v3面板的安装(ansible)主机:单节点、单容器

更新内容

2023-02-19

  1. 修改k8s版本及docker的版本,优化后续修改源镜像的操作
  2. 去除dashboard面板,添加kuboard:v3面板的安装

2023-02-15

  1. 离线安装helm,同时repo add 仓库(联网)
  2. 默认不安装,控制按钮在host文件中的k8s_helm_enable参数
  3. 添加metrics-server组件,用于实现kubectl top pod(离线安装)
  4. 默认安装,控制按钮在host文件中的metrics_server_enable参数

2023-02-14

  1. 优化监控组件,通过github上找到的yaml,结合ansible进行自动化的部署到k8s集群上
  2. k8s master节点的第一台机器上/opt/deploy/grafana/node_export.json文件可以导入到grafana平台上,用于监控物理机的机器资源信息
  3. prometheus-k8s服务是statefulsets的服务,且有资源限制,内存400Mi,过低会导致服务无法启动
  4. 安装监控组件时,需要确定服务的基础设施是否符合预期

2023-02-10

  1. 处理内核参数有几率加载失败的情况
  2. 重构初始化环境的脚本,减少初始化时出现的错误
    • 如果失败,重新执行即可
  3. 重写设置主机名的角色,默认删除后覆盖/etc/hosts文件
  4. 新增nfs服务的安装,可以通过storageClassName: nfs-storage字段添加pvc
    • nfs目前只支持单节点部署,不支持自动化对应外部nfs
    • 对接外部nfs需要手动修改对应的yaml即可,后续详细介绍

2022-10-20

  1. 添加kubeadm自动部署高可用版本,新增haproxy+keepalived
  2. 修复dashboard权限问题,添加ingress的部署方式(默认安装,通过)
  3. 部署包已更新至下述链接

2022-08-06

  1. 时间太久,忘记了。。。

准备部署包

https://download.csdn.net/download/qq_44246980/85695007

新版本未成功上传

操作步骤

环境准备

作用IP地址操作系统配置
k8s-master01192.168.1.21CentOS7最低配置2C2G
k8s-master02192.168.1.22CentOS7最低配置2C2G
k8s-master02192.168.1.23CentOS7最低配置2C2G
k8s-node01192.168.1.31CentOS7最低配置2C2G
ansible192.168.1.31CentOS7最低配置1C1G

结构

在这里插入图片描述

  1. node节点可以填写多个,根据实际情况确认,但是不能超出单master节点的限制
  2. master节点至少是三个少一个都不是高可用版本
  3. 高可用版本keepalived需要提前确认好vip
  4. 建议机器处于同一网段中,或者同一局域网内

备注

  1. 建议单独找一台机器用于部署ansible服务,可以不接受
  2. 但是需要确保机器资源充足,且相关的端口不会冲突(38081【yum】、38082【registry】)
  3. 相关的网络关系需要提前确认
  4. 三台master节点,可以是2n+1台,目前因本地环境,只测试了三台master其他节点尚未涉及

解压部署包

#上传部署包(xshell)
cd /opt                      #目录随意
yum -y install lrzsz 
rz install_k8s_kubeadm_v1.23.7_20230219.tar.gz
#解压
tar -xvf install_k8s_kubeadm_v1.23.7_20230219.tar.gz

修改host文件

#部署机器,初始脚本、安装包镜像
[deploy_server]
192.168.1.31 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 

#多主多从
[kubernetes_master]
192.168.1.21 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.22 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master02"
192.168.1.23 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master03"

[kubernetes_node]
#192.168.1.23 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node01"
#192.168.1.24 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node02"

#脚本导致添加必须是master01节点
[nfs]
#192.168.1.21 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22

#双节点
[haproxy_keepalived]
192.168.1.21 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.22 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master02"


#不填写,则不安装镜像仓库
[docker_repositry]
#192.168.1.136 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node01"

[nodes:children]
kubernetes_master
kubernetes_node


[all:vars]
#脚本解析主机信息,层级默认只能添加3个,即3个master,3个node
Number="3"
master_vip="192.168.1.120"               #keepalived使用的vip
add_node_hosts="no"                      #添加主机信息(yes=合并,no=删除后新建[覆盖])

######################################################################################
#布尔值true or false
Basic_enable="true"                       #安装基础软件包
set_host_enable="true"                    #设置主机名注入/etc/hosts文件
metrics_server_enable="true"              #安装metrics_server,kubectl top pod 
######################################################################################
#可选组件
######################################################################################
ingress_enable="false"                    #安装ingress服务
k8s_nfs_enable="false"                    #安装nfs-client服务,上述的地址必须填写,否则nfs客户端会启动失败
k8s_helm_enable="false"                   #k8s master节点安装helm客户端(在线)
######################################################################################
#监控组件、k8s v1.23.7版本以上(在线)
#监控组件的镜像采用在线的模式,需要联网自动下载,减少离线安装包的大小
#git clone https://github.com/prometheus-operator/kube-prometheus.git
monitoring_enable="false"                  #是否安装监控组件,默认不安装
clean_monitoring="false"                   #是否清理当前已安装的监控组件,注意,修改前需要确认监控组件已经部署完成后需要清理
#监控组件服务  
nodeExporter_enable="true"                 #采集器node_export
prometheus_enable="true"                   #安装Prometheus服务
grafana_enable="true"                      #是否安装grafana服务
ControlPlane_enable="true"                 #部署k8s ControlPlane,控制面板,里面有很多的设置放在一起的,用来设置规则
prometheusAdapter_enable="true"            #prometheusAdapter
prometheusOperator_enable="true"           #prometheusOperator
  
kube_state_metrics_enable="false"          #kube_state_metrics
alertmanager_enalbe="false"                #是否安装alertmanager服务
blackboxExporter_enalbe="false"            #是否安装blackboxExporter服务
  1. 一主多从需要把kubernetes_master里只添加一个地址
  2. 多主多从需要把kubernetes_master里添加三个地址,脚本只支持添加三个master节点
  3. 多主多从同时需要把haproxy_keepalived角色填写

脚本使用方式

[root@registry]# cd /opt/deploy_install_k8s
[root@registry]# ls 
host  images  init  playbook  README.md  run.sh  yum
[root@ansible install_k8s_kubeadm]# sh run.sh 
 【registry 2023-02-19 03:01:55】 sh run.sh init            初始化环境 
----------------------------------------------------------------------------
 【registry 2023-02-19 03:01:55】 sh run.sh online          在线安装(kuboard、monitoring组件) 
 【registry 2023-02-19 03:01:55】 sh run.sh offline         离线安装k8s(1.23.7) 
----------------------------------------------------------------------------
 【registry 2023-02-19 03:01:55】 sh run.sh ping            验证ansible的主机清单信息(ping) 
 【registry 2023-02-19 03:01:55】 sh run.sh install         通过host文件进行组件的单独安装 
----------------------------------------------------------------------------
 【registry 2023-02-19 03:01:55】 sh run.sh load offline    保存离线镜像包(monitoring组件) 
 【registry 2023-02-19 03:01:55】 sh run.sh load warehouse  导入上面保存的组件 
 【registry 2023-02-19 03:01:55】 sh run.sh load help       帮助信息 

#1. 执行run.sh脚本,获取脚本的执行帮助信息
#2. sh run.sh init    初始化ansible机器,初始化环境章节详细介绍
#3. sh run.sh online  在线安装(kuboard、monitoring组件) ,相关组件的镜像未合并到registry镜像里(减少安装包的大小)
#4. sh run.sh online  离线安装(kuboard、monitoring组件),通过脚本在线下载并保存离线镜像包,然后配合脚本导入离线环境的机器中使用
#5. sh run.sh ping    验证ansible的网络是否正常通信
#6. sh run.sh install 默认在线安装基础组件(monitoring组件),其他的组件则存放在本地的registry镜像仓库里
#7. sh run.sh load offline 虚拟机解压安装包后,执行初始化环境,联网状态下下载(monitoring组件)的离线镜像并打包,存放/tmp
#8. sh run.sh load warehouse 拷贝离线包,到执行目录(执行后提示/tmp/offline/)

初始化环境

[root@registry install_k8s_kubeadm]# sh run.sh online  
Online(在线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.23.7)
3) 安装k8s集群[多主多从](1.23.7)
4) 添加k8s node节点(1.23.7) 
5) 更新k8s certs,续费10年(1.23.7) 
----------------------------------------------------------------------------
6) docker安装kuboard(v3)[在线安装]
7) k8s安装其他组件(nfs、monitoring、ingress)[在线安装]
----------------------------------------------------------------------------
请输入对应的数字编号:1
请输入部署机的地址(192.168.1.31):
 【registry 2023-02-19 03:01:24】  docker-ce-23.0.1-1.el7.x86_64已安装,不需要重新部署 
 【registry 2023-02-19 03:01:24】  docker服务已正常启动!!! 
 【registry 2023-02-19 03:01:24】 /var/images/deploy Ready to complete 
-----------------------------------------------------------------------------------------  
Loaded image: registry.bcbx.com:38082/bcbx_registry:v1.0.0
 【repositry.tar】 load repository success  
-----------------------------------------------------------------------------------------  
 【registry 2023-02-19 03:01:25】 /var/images/repositry Ready to complete 
 【registry 2023-02-19 03:01:25】 clear /var/images/repositry,please wait!!! 
-----------------------------------------------------------------------------------------  
 【registry 2023-02-19 03:01:25】 registry rm success 
 【registry 2023-02-19 03:01:25】 start the image registry success 
-----------------------------------------------------------------------------------------  
 【registry 2023-02-19 03:01:27】 yum_repo rm success 
 【registry 2023-02-19 03:01:27】 start the image yum_repo success 
-----------------------------------------------------------------------------------------  
 【registry 2023-02-19 03:01:29】  ansible-2.9.27-1.el7.noarch已安装,不需要重新部署 
 【registry 2023-02-19 03:01:29】  Ansible.cfg配置文件修改成功 
#部署机的地址,通过脚本过去的地址,确认无误后直接回车即可

出现上述错误,则重新执行一下
结果如下

请添加图片描述

  1. 安装docker服务
  2. 安装ansible服务,修改配置文件
  3. 准备离线yum仓库
  4. 准备离线registry仓库,相关挂载点是:/var/images/

验证ansible配置

sh run.sh ping

请添加图片描述

安装k8s集群

[root@registry install_k8s_kubeadm]# sh run.sh online
Online(在线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.23.7)
3) 安装k8s集群[多主多从](1.23.7)
4) 添加k8s node节点(1.23.7) 
5) 更新k8s certs,续费10年(1.23.7) 
----------------------------------------------------------------------------
6) docker安装kuboard(v3)[在线安装]
7) k8s安装其他组件(nfs、monitoring、ingress)[在线安装]
----------------------------------------------------------------------------
请输入对应的数字编号:3
#host文件需要提前修改
#确认host中用户名、密码、ip正确且网络连接正常后,回车,等待执行脚本结束

执行结果如下:
请添加图片描述

登录master的节点

请添加图片描述

添加node节点

  1. 在host文件下的kubernetes_node分组下添加新增的需要新增的节点,并把之前已添加的节点删除
  2. 修改后执行 sh run.sh online脚本,选择4,添加node节点
  3. 脚本正常执行完毕后,检查各个节点的/etc/hosts文件,如果确认对应的域名解析,需要手动添加对应的主机关系
  4. 注意:每次添加node节点时,需要把已填入集群的节点手动删除,否则会出现重复加入的操作导致剧本执行失败
 sh run.sh online

请添加图片描述

master节点状态检查

请添加图片描述

组件安装

请添加图片描述

  1. 默认不安装,手动修改后安装,可以在按照k8s集群后进行安装使用
  2. 也可以在安装集群的是否安装

安装方式

[root@k8s-node01 install_k8s_kubeadm]# sh run.sh  install
  1. 需要前修改上述图片中的布尔值,改为true时,开始执行安装
  2. 因本地环境资源不足,不做演示截图

访问prometheus

访问地址: http://k8s-ip:30090/请添加图片描述

访问grafana

访问地址: http://k8s-ip:30000/
登陆密码: admin/admin

添加node-exporter面板

  1. 下载k8s master节点的第一台机器上/opt/deploy/grafana/node_export.json文件
  2. 通过浏览器登陆grafana平台,通过Dashboards按钮,鼠标停放,选择import
  3. 出现导入界面,选择upload json file按钮,选择下载到本地的文件
  4. 其他都是自动填充的,最后一个选择prometheus data source数据源后点击导入即可

ingress-nginx

请添加图片描述

使用方式,自行百度

kuboard的安装

#在线下载,网速较慢的情况下建议使用云主机下载
docker pull  swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
docker save  swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 -i kuboard.tar.gz
docker load -i kuboard.tar.gz
[root@registry ~]# docker load -i kuboard.tar.gz 
2d8252e11370: Loading layer [==================================================>]  3.072kB/3.072kB
22d9813f1d6a: Loading layer [==================================================>]  9.216kB/9.216kB
331120fa4807: Loading layer [==================================================>]  23.75MB/23.75MB
b6e875ecbb12: Loading layer [==================================================>]  18.77MB/18.77MB
9b6a33d74d53: Loading layer [==================================================>]  42.52MB/42.52MB
87405db6d205: Loading layer [==================================================>]  2.024MB/2.024MB
c502deb85597: Loading layer [==================================================>]  28.67kB/28.67kB
f062a9dd21ed: Loading layer [==================================================>]  61.95kB/61.95kB
20f6f032efed: Loading layer [==================================================>]  42.06MB/42.06MB
ba47fe085ef6: Loading layer [==================================================>]  13.32MB/13.32MB
Loaded image: swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3

#网速ok,则无需上述操作,直接执行即可
[root@registry install_k8s_kubeadm]# sh run.sh online

请添加图片描述

访问kuboard

http://ansible-ip:18080

纳管集群

请添加图片描述

  1. 详细功能请查看kuboard的官方
  2. https://www.kuboard.cn/

证书查看

kubeadm 命令查看

#可以通过 kubeadm alpha certs check-expiration 命令查看相关证书是否过期。
#注:该命令仅在 v.15 之后的版本可用
kubeadm alpha certs check-expiration
# k8s v1.23.7
kubeadm certs  check-expiration

请添加图片描述

openssl 命令查看

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '

请添加图片描述

kuboard界面查看

请添加图片描述

更新证书

Kubenetes通过脚本自动更新证书有效期脚本来源

[root@registry install_k8s_kubeadm]# sh run.sh online
Online(在线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.23.7)
3) 安装k8s集群[多主多从](1.23.7)
4) 添加k8s node节点(1.23.7) 
5) 更新k8s certs,续费10年(1.23.7) 
----------------------------------------------------------------------------
6) docker安装kuboard(v3)[在线安装]
7) k8s安装其他组件(nfs、monitoring、ingress)[在线安装]
----------------------------------------------------------------------------
请输入对应的数字编号:5

请添加图片描述

验证证书有效期

请添加图片描述

部署包地址

链接:https://pan.baidu.com/s/1Q31dwjvQJVZOZWxbR4Uv7w?pwd=bcbx
提取码:bcbx

总结

  1. 上述则是当前部署中可运行正常的服务
  2. 执行sh Run.sh init,则可以调试脚本,对应的启动文件,修改,则可以进行调试
  3. 执行sh Run.sh install,修改host文件,则可以进行安装组件

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

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

相关文章

高精度算法一

目录 1. 基础知识 2. 大整数 大整数 3. 大整数 - 大整数 1. 基础知识 利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了&#xff0c…

大数据之---Nifi-处理器类别_详细了解各种处理器的含义用途---大数据之Nifi工作笔记0007

处理器有很多类这里主要分了,数据转换的可以看到上面的这些是数据转换常用的 然后: 这里这个controlrate,用来控制流的速率,来保护作用,防止崩掉 distributeLoad用来负载均衡,减轻压力 这里的路由是,根据是否满足对应的条件,来执行是否把数据路由到某个地方. 然后来看数据库…

数据库技术-函数依赖、键与约束、范式

一、函数依赖 给定一个x,能唯一确定一个Y,就称x确定Y,或者说Y依赖于x,例如YX*X函数。 函数依赖又可扩展以下两种规则: 部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C&a…

Spring Cloud Nacos实战(一)- 下载和安装

Spring Cloud Alibaba Nacos下载和安装 Nacos介绍 ​ Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序 ​ 服务发现是微服务架构中的关键组件之一。Nacos 致力于帮助您发现…

使用nginx单独部署Vben应用

前言 本文主要介绍Vben使用nginx单独部署的方式,其实前端发展到现在已经不是当年的jsp,asp必须要和后端一起部署了。单独部署调试的工具也很多,比如vue-cli-service 和 Vben中用到的vite ,当然这些我们一般用在开发的工程中。正式…

SpringCloud(三)Hystrix断路器服务降级、服务熔断、服务监控案例详解

七、Hystrix断路器 7.1 简介 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微…

C# chart绘图 鼠标响应

1、图形自动滚动设置 chart1.ChartAreas[0].AxisX.Maximum 横坐标显示区域最大值 chart1.ChartAreas[0].AxisX.Minimum 横坐标显示区域最小值 显示宽度 chart1.ChartAreas[0].AxisX.Maximum - chart1.ChartAreas[0].AxisX.Minimum chart1.ChartAreas[0].AxisX.Maximum x_d…

ChatGPT从业影响之个人浅见

文章目录前言ChatGPT简介AI简介ChatGPT对从业者的影响参考资料前言 ChatGRT最近很火,网上有一些观点,他会取代很多职业,让产业产生颠覆性的变化。今天聊聊自己的想法,他的出现,是否会让我(程序员&#xff…

qmt api 接口文档

http://qmt.ptradeapi.com 用户自行安装 Python 三方库 对于有经验的 Python 开发者来说,平台提供了自行安装第三方库的方式。为了引入额外的第三方库,用户需要做如下一些操作: 安装前注意事项: 三方库的安装有可能会引起系统错误…

JVM学习篇对象创建与内存分配机制深度剖析

1. 对象的创建 对象创建的主要流程: 1.1 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相…

【Java 面试合集】内存中为什么要区分栈和堆

内存中为什么要区分栈和堆 1. 概述 嗨,大家好Java 面试合集又来了,今天我们分享的主题很大众化以及普通。无论是Java 语言本身还是别的语言都会有所涉及,但是今天我们从Java角度来讲下 2. 分析 今天我们会从多个方向来分享这个话题 2.1 栈是…

ETCD本地多成员集群部署

目录安装部署etcdctl 操作etcd使用http请求操作etcd本地多成员集群搭建python获取成员信息参考安装部署 按照官网文档,安装release版本 https://etcd.io/docs/v3.4/install/ [rootVM-33-162-centos /usr/local/bin]# etcd --version etcd Version: 3.4.16 Git SH…

点云配准方法原理(NDT、ICP)

配准是点云处理中的一个基础问题,众多学者此问题进行了广泛而深入的研究,也出现了一系列优秀成熟的算法,在三维建模、自动驾驶等领域发挥着重要的作用。 本文主要介绍粗配准NDT (Normal Distribution Transform) 与 精配准ICP (Iterative Cl…

最新最全中小微企业研究数据:海量创业公司信息与获取投资信息(1985-2021年)

一、企业获取投资名单&资方信息 数据来源:搜企网、企查查、天眼查 时间跨度:1985年8月-2021年9月 区域范围:全国范围 数据字段:企业名称、时间、获得投资金额以及投资方信息 部分数据: DateCompany_nameUnit…

摄影师没了?!生成式人工智能即将降维打击摄影行业

本文是Mixlab无界社区成员的投稿:滚石deepfacelab和deepfacelive项目组成员摄影师失业了??怎么说?##你还以为AI绘画影响的只是插画师行业吗?错了,摄影行业也即将面临技术洗牌。话不多说,先看一下…

java并发编程原理2 (AQS, ReentrantLock,线程池)

一、AQS: 1.1 AQS是什么? AQS就是一个抽象队列同步器,abstract queued sychronizer,本质就是一个抽象类。 AQS中有一个核心属性state,其次还有一个双向链表以及一个单项链表。 首先state是基于volatile修饰&#x…

分享113个HTML艺术时尚模板,总有一款适合您

分享113个HTML艺术时尚模板,总有一款适合您 113个HTML艺术时尚模板下载链接:https://pan.baidu.com/s/1ReoPNIRjkYov-SjsPo0vhg?pwdjk4a 提取码:jk4a Python采集代码下载链接:采集代码.zip - 蓝奏云 女性化妆用品网页模板 粉…

【Linux】用户分类+权限管理+umask+粘滞位说明

目录 1.用户分类 su指令 2.认识Linux权限 2.1 文件访问者的分类 2.2 文件类型和访问权限 a. 文件类型 file指令 b. 访问权限 2.3 文件权值的表示方法 a. 字母表示法 b. 八进制表示法 3.如何修改文件访问者的权限及相关指令 1. chmod指令 2. chown指令 3. chgrp指…

Python语言零基础入门教程(二十七)

Python OS 文件/目录方法 Python语言零基础入门教程(二十六) 61、Python os.utime() 方法 概述 os.utime() 方法用于设置指定路径文件最后的修改和访问时间。 在Unix,Windows中有效。 语法 utime()方法语法格式如下: os.uti…

SortableJS/Sortable拖拽组件,使用详细(Sortablejs安装使用)

简述 作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,支持Vue和React,下面是SortableJS的使用详细; 这个是sortableJS中文官方文档&…