Ceph集群的部署

news2024/11/19 17:23:10

一、Ceph集群的部署

1、集群环境

1.1 集群架构

主机名业务IP存储IP服务器配置系统类型集群角色
ceph-mon1-deploy172.17.10.61/16192.168.10.61/242C/4GUbuntu1804mon+deploy(部署节点)
ceph-mon2172.17.10.62/16192.168.10.62/242C/4GUbuntu1804mon(监控节点)
ceph-mon3172.17.10.63/16192.168.10.63/242C/4GUbuntu1804mon
ceph-mgr1172.17.10.64/16192.168.10.64/242C/4GUbuntu1804mgr(管理节点)
ceph-mgr2172.17.10.65/16192.168.10.65/242C/4GUbuntu1804mgr
ceph-node1172.17.10.66/16192.168.10.66/242C/4GUbuntu1804node(存储节点)
ceph-node2172.17.10.67/16192.168.10.67/242C/4GUbuntu1804node
ceph-node3172.17.10.68/16192.168.10.68/242C/4GUbuntu1804node

1.2 环境初始化—网络

  • 业务网络:puplic network (千兆)-----172.17.10.0/16
  • 存储网络:cluster network (万兆)----192.168.10.0/24

1.2.1 网络配置

root@ceph-mon1:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  version: 2
  ethernets:
    eth0:    #业务网络
      dhcp4: no
      dhcp6: no
      addresses: [172.17.10.61/16]
      gateway4: 172.17.1.2
      nameservers:
        addresses: [114.114.114.114]
    eth1:  #存储网络
      dhcp4: no
      dhcp6: no
      addresses: [192.168.10.61/24]
      nameservers:
        addresses: [114.114.114.114]
  version: 2
  
  #其他主机依此配置业务IP和存储IP

1.3 创建普通用户—cephadmnin(每个节点都需要配置)

#创建普通用户的目的
推荐使用指定的普通用户部署和运行 ceph 集群,普通用户只要能以非交互方式执行 sudo
命令执行一些特权命令即可,新版的 ceph-deploy 可以指定包含 root 的在内只要可以执行
sudo 命令的用户,不过仍然推荐使用普通用户,安装完成 ceph 会自动创建 ceph 用户, 因
此 推 荐 使 用 除了 了 ceph 用 户 之 外 的 比如 如 cephuser 、cephadmin 这 样 的 普 通 用 户 去 部 署 和
管理 理 ceph 集 群 。
cephadmin 仅在 在 ceph-deploy 用 于 部 署 和 管理 理 ceph 集 群, , 比 如 首 次 初 始 化 集 群 和 部 署 集
群 、 添 加 节 点 、 删 除 节 点 等 ,ceph 集 群在 在 node 节 点 、mgr 节 点 等 会 使用 用 ceph 用 户 启 动
服 务 进 程

root@ceph-mon1:~# groupadd -r -g 2088 cephadmin && useradd -r -m -s /bin/bash -u 2088 -g 2088 cephadmin && echo cephadmin:root123 | chpasswd

#各服务器允许 cephadmin 用户以 sudo 执行特权命令
root@ceph-mon1:~# echo "cephadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

#切换到cephadmin用户
root@ceph-mon1:~#su - cephadmin

1.4 环境初始化–免密登录

#生成服务器的公钥和私钥
cephadmin@ceph-mon1:~$~#ssh-keygen
#免密登录
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.61
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.62
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.63
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.64
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.65
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.66
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.67
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.68
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.69

1.5 环境初始化–设置主机名

#设置主机名
root@ceph-mon1:~# hostnamectl set-hostname ceph-mon1   
#配置/etc/hosts文件
cephadmin@ceph-mon1:~$ cat /etc/hosts
172.17.10.61 ceph-mon1.example.local ceph-mon1
172.17.10.62 ceph-mon2.example.local ceph-mon2
172.17.10.63 ceph-mon3.example.local ceph-mon3
172.17.10.64 ceph-mgr1.example.local ceph-mgr1
172.17.10.65 ceph-mgr2.example.local ceph-mgr2
172.17.10.66 ceph-node1.example.local ceph-node1
172.17.10.67 ceph-node2.example.local ceph-node2
172.17.10.68 ceph-node3.example.local ceph-node3
172.17.10.69 ceph-node4.example.local ceph-node4
#把/etc/hosts文件拷贝到其他节点
cephadmin@ceph-mon1:~$ for i in {62..69};do scp /etc/hosts 172.17.10.$i:/etc/hosts;done

1.6 环境初始化–配置apt源(每个节点都必须执行)

root@ceph-mon1:~# cat /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse

#配置ceph源
root@ceph-mon1:~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list

#下载安装包
root@ceph-mon1:~#apt-get -y install python apt-transport-https ca-certificates curl software-properties-common
#更新apt源
root@ceph-mon1:~# apt update

1.7 环境初始化–时间同步

root@ceph-mon1:~# */5 * * * * /usr/sbin/ntpdate time1.aliyun.com &> /dev/null && hwclock -w &> /dev/null

1.8 环境初始化—下载安装ceph的部署工具

cephadmin@ceph-mon1:~$ apt install -y python-pip
cephadmin@ceph-mon1:~$ pip install ceph-deploy
cephadmin@ceph-mon1:~$ pip install ceph-deploy==2.0.1 -i https://mirrors.aliyun.com/pypi/simple
cephadmin@ceph-mon1:~$ ceph-deploy --version
2.0.1

2、部署ceph集群中的mon角色

2.1 在部署节点(ceph-mon1)上初始化mon节点

cephadmin@ceph-mon1:~$ mkdir ceph-cluster
cephadmin@ceph-mon1:~$ cd ceph-cluster
 
#ceph-deploy命令的介绍
cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy --help
new:开始部署一个新的 ceph 存储集群,并生成 CLUSTER.conf 集群配置文件和 keyring
认证文件。
install: 在远程主机上安装 ceph 相关的软件包, 可以通过--release 指定安装的版本。
rgw:管理 RGW 守护程序(RADOSGW,对象存储网关)。
mgr:管理 MGR 守护程序(ceph-mgr,Ceph Manager DaemonCeph 管理器守护程序)。
mds:管理 MDS 守护程序(Ceph Metadata Server,ceph 源数据服务器)。
mon:管理 MON 守护程序(ceph-mon,ceph 监视器)。
gatherkeys:从指定获取提供新节点的验证 keys,这些 keys 会在添加新的 MON/OSD/MD
加入的时候使用。
disk:管理远程主机磁盘。
osd:在远程主机准备数据磁盘,即将指定远程主机的指定磁盘添加到 ceph 集群作为 osd
使用。
repo: 远程主机仓库管理。
admin:推送 ceph 集群配置文件和 client.admin 认证文件到远程主机。
config:将 ceph.conf 配置文件推送到远程主机或从远程主机拷贝。
uninstall:从远端主机删除安装包。
purgedata:从/var/lib/ceph 删除 ceph 数据,会删除/etc/ceph 下的内容。
purge: 删除远端主机的安装包和所有数据。
forgetkeys:从本地主机删除所有的验证 keyring, 包括 client.admin, monitor, bootstrap 等
认证文件。
pkg: 管理远端主机的安装包。
calamari:安装并配置一个 calamari web 节点,calamari 是一个 web 监控平台。

#初始化mon节点---生成集群配置文件
cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy new --cluster-network 192.168.10.0/24 --public-network 172.17.0.0/16 ceph-mon1
cephadmin@ceph-mon1:ceph-cluster$ ll
-rw-r--r--  1 root root    264 Jul  4 21:33 ceph.conf   #ceph配置文件
-rw-r--r--  1 root root 371488 Jul  4 23:06 ceph-deploy-ceph.log  #初始化日志
-rw-------  1 root root     73 Jul  4 21:33 ceph.mon.keyring  #用于ceph mon节点内部通讯认证的秘钥环文件

2.2 初始化node节点

cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3

#注意:
–no-adjust-repos  #不同步仓库文件
–nogpgcheck       #不检查校验

2.3 在mon节点上安装ceph-mon

root@ceph-mon1:~# apt install -y ceph-mon
root@ceph-mon1:~# ceph --version
ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

安装过程会出现以下截图
在这里插入图片描述
在这里插入图片描述

2.4 在部署节点上初始化ceph-mon

注意:在初始化前一定先看ceph的配置文件ceph.conf,因为初始化mon节点取决于mon节点

root@ceph-mon1:~/ceph-cluster# cat ceph.conf
[global]
fsid = 0d2fd27a-4347-46fd-ac27-29f11ef10982
public_network = 172.17.0.0/16
cluster_network = 192.168.10.0/24
mon_initial_members = ceph-mon1
mon_host = 172.17.10.61
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

#检查完配置文件后,初始化mon节点
cephadmin@ceph-mon1:~$ ceph-deploy  mon create-initial

#注意:初始化完后ceph-mon1节点上就会启动ceph-mon的进程
root@ceph-mon1:~ ps -ef|grep mon1
ceph       1009      1  0 03:42 ?        00:00:31 /usr/bin/ceph-mon -f --cluster ceph --id ceph-mon1 --setuser ceph --setgroup ceph
daemon     1039      1  0 03:42 ?        00:00:00 /usr/sbin/atd -f
message+   1042      1  0 03:42 ?        00:00:02 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root       1111      1  0 03:42 ?        00:00:00 /usr/lib/accountsservice/accounts-daemon
root      57538  57505  0 04:55 pts/0    00:00:00 grep --color=auto mon

2.5 秘钥的分发

在ceph-deploy节点把配置文件和admin秘钥拷贝至ceph集群需要执行ceph管理命令的节点.从而不需要后期通过ceph命令对ceph集群进行管理配置的时候每次都需要指定ceph-mon节点地址和ceph.client.admin.keyring文件,另外各ceph-mon节点也需要同步ceph的集群配置文件和认证文件
1、在所有需要管理ceph的节点上安装ceph-common软件包(如:ceph-mgr1,ceph-mgr2等)
root@ceph-mon1:~ apt install ceph-common -y

2、分发秘钥
cephadmin@ceph-mon1 ceph-cluster$ ceph-deploy admin  ceph-mon1 ceph-mgr1 ceph-mgr2 ceph-node1 ceph-node2 ceph-node3 

#注意:
认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,如果需要 cephadmin用户也能执行 ceph 命令,那么就需要对 cephadmin 用户进行授权
cephadmin@ceph-mon1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-mgr1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-mgr2 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node2 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node3 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

3、验证秘钥是否分发成功
root@ceph-mgr1:~# ssh ceph-node1 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpHUGujm
root@ceph-mgr1:~# ssh ceph-node2 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpZ4VQ0R
root@ceph-mgr1:~# ssh ceph-node3 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpx9fb5U
root@ceph-mgr1:~# ssh ceph-mon1 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpAkZh_I
root@ceph-mgr1:~# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpYNJpSF

3、部署ceph集群中的mgr角色

3.1 在ceph-mgr节点上安装ceph-mgr包

root@ceph-mgr1:~# apt install ceph-mgr -y
root@ceph-mgr2:~# apt install ceph-mgr -y

3.2 在部署节点ceph-mon1上初始化ceph-mgr

#初始化mgr节点
cephadmin@ceph-mon1:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr1
cephadmin@ceph-mon1:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr2

#验证mgr是否安装完毕
root@ceph-mon1:~/ceph-cluster# ceph -s
  cluster:
    id:     0d2fd27a-4347-46fd-ac27-29f11ef10982
    health: HEALTH_WARN
            client is using insecure global_id reclaim
            mon is allowing insecure global_id reclaim
 
  services:
    mon: 1 daemons, quorum ceph-mon1 (age 92m)
    mgr: ceph-mgr1(active, since 91m), standbys: ceph-mgr2
    osd: 9 osds: 9 up (since 91m), 9 in (since 30h)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   9.0 GiB used, 1.7 TiB / 1.8 TiB avail
    pgs:     

4、部署ceph集群中的OSD

4.1 在部署节点给node节点安装环境

#部署OSD
ceph-deploy install ceph-node01 ceph-node02 ceph-node03 ceph-node04
#查看node节点的磁盘信息
ceph-deploy disk list ceph-node01
#擦除node节点上磁盘数据
ceph-deploy disk zap ceph-node1 /dev/sdb ,/dev/sdc,/dev/sdd
ceph-deploy disk zap ceph-node2 /dev/sdb ,/dev/sdc,/dev/sdd
ceph-deploy disk zap ceph-node3 /dev/sdb ,/dev/sdc,/dev/sdd

4.2 添加OSD

数据的分类:

类型含义
Dataceph保存的对象数据
Blockrocks DB数据即元数据
block-wal数据库的wal日志

4.2.1 元数据和数据全放一起

ceph-deploy osd create ceph-node01 --data /dev/sdb

4.2.2 数据分开放

一般会将wal放到nvme上,如果都是ssd就没必要拆开放了.
预写日志和数据日志分开,这个用的稍微多一点,

ceph-deploy osd create ceph-node01 --data /dev/sdc --block-wal /dev/sdb
#数据日志和元数据分开
ceph-deploy osd create ceph-node01 --data /dev/sdc --block-db /dev/sdd
#全部分开放
ceph-deploy osd create ceph-node01 --data /dev/sdc --block-db /dev/sdd --block-wal /dev/sdb

二、ceph集群的高可用

2.1 mon节点的高可用

2.1.1 在新加节点先安装ceph-mon包

apt install ceph-mon -y

2.1.2 在ceph-deploy上加入新节点

ceph-deploy mon add ceph-mon02
ceph-deploy mon add ceph-mon03

2.2 mgr节点的高可用

2.2.1 在新的节点安装ceph-mgr包

sudo apt install ceph-mgr -y

2.2.2 在ceph-deploy上加入新节点

eph-deploy mgr create ceph-mgr02

2.2.3 cehp-mgr主从关系

可以看到ceph-mgr01是主,ceph-mgr02是standbys
ceph -s
   mgr: ceph-mgr01(active, since 52m), standbys: ceph-mgr02

入新节点

ceph-deploy mon add ceph-mon02
ceph-deploy mon add ceph-mon03

2.2 mgr节点的高可用

2.2.1 在新的节点安装ceph-mgr包

sudo apt install ceph-mgr -y

2.2.2 在ceph-deploy上加入新节点

eph-deploy mgr create ceph-mgr02

2.2.3 cehp-mgr主从关系

可以看到ceph-mgr01是主,ceph-mgr02是standbys
ceph -s
   mgr: ceph-mgr01(active, since 52m), standbys: ceph-mgr02

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

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

相关文章

fun函数方法体=返回值,kotlin

fun函数方法体返回值&#xff0c;kotlin var str: String "fly"fun main(args: Array<String>) {println(getMyString())println(getMyInt())str "phil"println(getMyString())println(getMyInt()) }fun getMyInt(): Int {return if (str.equals(&…

javaweb学习4

作业 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript">//动态绑定表单提交window.onloadfunction (){//得到form2的dom对象var fo…

多元分类预测 | Matlab基于北方苍鹰优化深度置信网络(NGO-DBN)的分类预测,多输入模型,NGO-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于北方苍鹰优化深度置信网络(NGO-DBN)的分类预测,多输入模型,NGO-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可…

在IDEA中如何查看svn版本提交历史记录

1.查看svn版本历史记录方法一 2.查看svn版本历史记录方法二 ①拉取远程库代码 ②提交本地代码到远程 ③查看历史记录 ④回退代码 3.查看历史版本记录的提交 4.选择上图中某次提交记录再次选图中序号4

python接口自动化(十九)--Json 数据处理---实战(详解)

简介 上一篇说了关于json数据处理&#xff0c;是为了断言方便&#xff0c;这篇就带各位小伙伴实战一下。首先捋一下思路&#xff0c;然后根据思路一步一步的去实现和实战&#xff0c;不要一开始就盲目的动手和无头苍蝇一样到处乱撞&#xff0c;撞得头破血流后而放弃了。不仅什么…

模块联邦实践

在聊模块联邦之前&#xff0c;我们先了解下在多个项目下&#xff0c;前端模块如何复用的 跨项目模块复用方案 1、npm 包包管理工具对于前端应用来说不可或缺&#xff0c;我们可以将模块上传到 npm 包&#xff0c;在需要的项目中引入&#xff0c;以此来复用一些公用模块。 2、mo…

基于CANN的AI推理最佳实践丨多路极致性能目标检测应用设计解密

当前人工智能领域&#xff0c;最热门的无疑是以ChatGPT为代表的各种“新贵”大模型&#xff0c;它们高高在上&#xff0c;让你无法触及。但在人们的日常生活中&#xff0c;实际应用需求最大的还是以Yolo模型为代表的目标检测“豪强”&#xff0c;它们每天都在以各种方式落地、应…

javascript匿名函数之立即调用函数

今天在看youtube的前端代码时发现了一个很奇怪的写法&#xff0c;从来没见过&#xff0c;代码如下&#xff1a; (function(e, c, l, f, g, h, k) {var d window;d.getInitialData function() {var b window;b.ytcsi && b.ytcsi.tick("pr", null, "&…

TensorFlow基础和入门案例

TensorFlow简介 TensorFlow是目前主流深度学习框架之一&#xff0c;其库中几乎包含了所有机器学习和深度学习相关的辅助函数和封装类&#xff0c;官方文档如下图所示。在其框架下做各种神经网络算法的开发可以极大减轻工作量&#xff0c;在入门阶段可以不需要深入理解相关优化…

spring拦截器参数及多拦截器执行顺序讲解

1.拦截器中的参数 2.多拦截器执行顺序 如果全部返回true&#xff0c;则按照流程全部执行 如果3返回false&#xff0c;123的preHandler会执行&#xff0c;123的postHandler都不会执行&#xff0c;但是return为true的2和1的after会执行 如果2返回false 12的preHandler会执行 pos…

sql 模糊查询与查询时间范围 起止时间

上代码 <select id"page" resultType"com.sky.entity.Orders">select * from orders<where><if test"number!null and number!">and number like concat(%,#{number},%)</if><if test"phone!null and phone!&q…

选择排序、归并排序、快速排序

1.选择排序 选择排序算法的实现思路有点类似插入排序&#xff0c;也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素&#xff0c;将其放到已排序区间的末尾。 Java代码实现如下。 ps&#xff1a;选择排序的最好情况时间复杂度、最坏情况和平均情况…

vue子组件监听不到父组件数据变化;子组件获取不到父组件的异步数据

当父子组件嵌套使用时created 和mounted 生命周期的执行顺序是父created -> 子created -> 子mounted -> 父mounted&#xff0c;但是这只是针对同步代码&#xff0c;当生命周期中有异步接口时&#xff0c;那么就会变成父created未执行完 -> 子created -> 子mount…

web安全php基础_魔术常量__FUNCTION__与__METHOD__的区别

PHP 魔术常量 PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的&#xff0c;只有在加载了这些扩展库时才会出现&#xff0c;或者动态加载后&#xff0c;或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改…

安装Pytorch及配置Pycharm

PyTorch是一个基于Torch的Python开源机器学习库&#xff0c;用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发&#xff0c;不仅能够 实现强大的GPU加速&#xff0c;同时还支持动态神经网络&#xff0c;这一点是现在很多主流框架如TensorFlow都不支持的。 本文…

Service Computing Frontier Technology Experiment

任务说明 实验算法 空间数据索引RTree&#xff08;R树&#xff09;完全解析及Java实现 - 佳佳牛 - 博客园 (cnblogs.com) SFS 打开堆文件 t相当于一个指针 当指针指到不为空的时候 如果窗口未被占用那么 如果窗口是满的话那么代表完成 如果窗口没有满的话 把他加到窗口上&a…

k8s 第一篇 基础知识

一 k8s 1.1 概念 k8s 是一个能让应用部署到容器中&#xff0c;实现自动部署和管理更加高效 自能化的平台。 也就是说通过k8s&#xff0c;能够进行应用的自动化部署和扩容。 1.2 集群的架构流程 1.3 k8s的核心概念 1.4 k8s 集群规划 从第6集开始看

【分立元件】理解电阻

如果强行将某电压加在电子器件上&#xff0c;那么器件上被迫流过的电流是不可控的&#xff0c;电流具体是多少&#xff0c;是由器件本身的性质决定的。 比如同样的电压加载在导体和绝缘体两端&#xff0c;那么一般流过导体的电流会是大于流过绝缘体的。但要是超高电压下绝缘体…

单点登录SSO==MAXKEY

1-下载安装包安装启动 2-打开教程&#xff0c;里面说的很详细了 3- 测试 不想从这点进去也可以直接匿名打开个窗口直接访问 http://oauth.demo.maxkey.top:9521/demo-oauth/oauth20index.jsp 也会跳转到登录页面&#xff0c;输入账号密码后登录成功 乱输密码的话登录不成功还…

【算法设计与分析】素数测试问题——设计一个拉斯维加斯算法,对于给定的正整数,判断其是否为素数。

目录 一、问题描述二、分析三、运行结果四、代码 一、问题描述 试设计一个素数测试的偏真蒙特卡罗算法&#xff0c;对于测试的整数n&#xff0c;所述算法是一个关于logn的多项式时间算法。结合教材中素数测试的偏假蒙特卡罗算法&#xff0c;设计一个素数测试的拉斯维加斯算法。…