Centos7使用kubeadm搭建k8s集群(一主两从)----(mac版)

news2024/11/29 12:41:56

一、环境准备

1、下载centos7镜像

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

下载地址: centos安装包下载_开源镜像站-阿里云

选择对应的版本即可,我下载的:CentOS-7-x86_64-DVD-2207-02.iso

2、使用VirtualBox安装centos

选择新建,然后选择对应的iso镜像一直 下一步即可。内存推荐4G,磁盘40G,CPU:2

设置网络为桥接模式

 等待系统安装,然后配置网络 cd /etc/sysconfig/network-scripts

编辑网卡配置文件

重启网络服务 重启命令:systemctl restart network或者service network restart

检查网络是否联通:ping www.baidu.com或者curl -i www.baidu.com

按照上面的步骤,部署三台机器,master、node1、node2 

二、kubernetes集群准备

1、master节点

        k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入口。拥有Etcd存储服务(可选),运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。

API Server
        提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,只有API Server与存储通信,其他模块通过API Server访问集群状态。

Scheduler
        新建立的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。

Controller
        负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。

Cluster state store
        Kubernetes默认使用etcd作为集群整体存储,当然也可以使用其它的技术。etcd是一个简单的、分布式的、一致的key-value存储,主要被用来共享配置和服务发现。etcd提供了一个CRUD操作的REST API,以及提供了作为注册的接口,以监控指定的Node。集群的所有状态都存储在etcd实例中,并具有监控的能力,因此当etcd中的信息发生变化时,就能够快速的通知集群中相关的组件。

2、Node节点

        Node节点是工作节点监听API Server发送过来的新的工作分配;他们会执行分配给他们的工作,然后将结果报告给Kubernetes主节点。

Kubelet
        负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。

Container Runtime
        每一个Node都会运行一个Container Runtime,其负责下载镜像和运行容器。Kubernetes本身并不提供容器运行时环境,但提供了接口,可以插入所选择的容器运行时环境。kubelet使用Unix socket之上的gRPC框架与容器运行时进行通信,kubelet作为客户端,而CRI shim作为服务器。

kube proxy
        基于一种公共访问策略(例如:负载均衡),服务提供了一种访问一群pod的途径。此方式通过创建一个虚拟的IP来实现,客户端能够访问此IP,并能够将服务透明的代理至Pod。每一个Node都会运行一个kube-proxy,kube proxy通过iptables规则引导访问至服务IP,并将重定向至正确的后端应用,通过这种方式kube-proxy提供了一个高可用的负载均衡解决方案。服务发现主要通过DNS实现。
  在Kubernetes中,kube proxy负责为Pod创建代理服务;引到访问至服务;并实现服务到Pod的路由和转发,以及通过应用的负载均衡。

Pod
        运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址,同一个Pod中,端口不能重复,否则报错,能够通过localhost进行通信。Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。
  Pod其实有两种类型:普通Pod和静态Pod,后者比较特殊,它并不存在Kubernetes的etcd存储中,而是存放在某个具体的Node上的一个具体文件中,并且只在此Node上启动。普通Pod一旦被创建,就会被放入etcd存储中,随后会被Kubernetes Master调度到摸个具体的Node上进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组相关的Docker容器并启动起来。在默认情况下,当Pod里的某个容器停止时,Kubernetes会自动检测到这个问起并且重启这个Pod(重启Pod里的所有容器),如果Pod所在的Node宕机,则会将这个Node上的所有Pod重新调度到其他节点上。

3、kubectl

        集群管理命令行工具集,通过客户端的kubectl命令集操作,API Server响应对应的命令结果,从而达到对kubernetes集群的管理。

4、kubeadm

        Kubeadm是一个工具,它提供了kubeadm init以及kubeadm join这两个命令作为快速创建kubernetes 集群的最佳实践。

  kubeadm通过执行必要的操作来启动和运行一个最小可用的集群。kubeadm只关心启动集群,而不关心其他工作,如部署前的节点准备工作、安装各种Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不属于kubeadm关注范围。

5、kubeadm功能

kubeadm init 启动/初始化一个 Kubernetes 主节点;
kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群;
kubeadm upgrade 更新一个 Kubernetes 集群到新版本;
kubeadm config 如果使用 v1.7.x 或者更低版本的 kubeadm 初始化集群,您需要对集群做一些配置以便使用 kubeadm upgrade 命令;
kubeadm token 管理 kubeadm join 使用的令牌;
kubeadm reset 还原 kubeadm init 或者 kubeadm join 对主机所做的任何更改;
kubeadm version 打印 kubeadm 版本;
kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈。

6、准备工作(所有节点都要做同样的操作)

 1)关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

2)关闭selinux

临时关闭selinux(沙河)如需永久关闭selinux需要修改为sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

#临时关闭selinux
setenforce 0

#永久关闭selinux
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3)关闭交换分区

#临时关闭所有的交换分区
swapoff -a

#永久关闭所有的交换分区
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

4)修改三台集群的主机名:(每个主机限一条命令)

[root@k8s-master1 ~]# hostnamectl set-hostname k8s-master
[root@k8s-node1 ~]# hostnamectl set-hostname k8s-node1
[root@k8s-node2 ~]# hostnamectl set-hostname k8s-node2

5)所有节点都添加集群ip与主机名到hosts中:

cat >> /etc/hosts << EOF 
172.16.11.221 k8s-master
172.16.11.222 k8s-node1
172.16.11.223 k8s-node2
EOF

注意:ip一定要改成自己的ip,不要直接复制粘贴

6)三台机器进行时间同步

#安裝同步时间命令
yum install ntpdate -y

#同步时间
ntpdate cn.pool.ntp.org

#设置定时任务每五分钟同步一次时间
echo "*/5 * * * * root /usr/sbin/ntpdate cn.pool.ntp.org &>/dev/null" >> /etc/crontab

特殊说明:

如果是克隆虚拟机建议执行rm -rf /etc/udev/* 保证网卡UUID不同

7)三台都安装需要的一些命令:

a.添加centos源并将下载地址更换为阿里云地址
#添加centos源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

#将下载地址更换为阿里云地址
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
b.添加epel扩展源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
c.清除缓存
yum clean all
d.重新加载源缓存
yum makecache
e.升级yum并安装一些会用到的命令
yum -y update && yum -y install lrzsz wget conntrack ipvsadm ipset jq psmisc sysstat curl iptables net-tools libseccomp gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2 bash-completion

等待安装完成即可。

7、部署docker(所有节点都需要部署)

#安装docker所需的依赖包
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2	

#添加阿里云的docker镜像地址
[root@docker ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
&&#或者(二选一即可)
[root@docker ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

#更新缓存,只处理新添加的yum源缓存
[root@docker ~]# yum makecache fast

#部署docker,默认安装最新版本
[root@docker ~]# yum install -y docker-ce-20.10.14 docker-ce-cli-20.10.14 containerd.io

#查看安装docker版本
[root@docker ~]# docker --version(或者使用docker version)
Docker version 20.10.14, build a224086

#加载docker配置
[root@docker ~]# systemctl daemon-reload
#启动docker服务
[root@docker ~]# systemctl start docker
#设置docker服务开机自启
[root@docker ~]# systemctl enable docker

#查看docker可以安装的版本,也可以自己安装指定版本,yum -y install docker-ce-19.03.12.el7
[root@docker ~]# yum list docker-ce --showduplicates | sort -r

给docker添加镜像加速器及cgroup并重启docker服务

[root@docker ~]# mkdir -p /etc/docker
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mrlmpasq.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#由于新版kubelet建议使用systemd,所以可以把docker的CgroupDriver改成systemd

#重新加载docker配置
[root@docker ~]# systemctl daemon-reload
#重新启动docker服务
[root@docker ~]# systemctl restart docker

8、部署 kubernetes(所有节点都要部署)

1)配置相关的内核参数,将桥接的IPv4 流量传递到iptables 的链

[root@docker ~]# cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#让其生效
sysctl --system

2)添加 k8s yum源

[root@docker ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#重新加载缓存
yum makecache fast

3)安装 kubeadm kubelet kubectl

注:安装这几个版本不要用最新的,容易出问题

yum install -y kubeadm-1.20.0-0 kubelet-1.20.0-0 kubectl-1.20.0-0

#查看kubeadm版本
kubeadm version

4)启动kubelet并设置开机自启

systemctl enable kubelet && systemctl start kubelet

5)kubernetes强化tab(安装之后会tab可以补全命令及参数)

echo 'source  <(kubectl  completion  bash)' >> ~/.bashrc

1、退出连接,重新连接;
2、或者bash更新环境就可以使用了。

6)查看镜像 

kubeadm config images list

三、master节点

1、初始化master节点

        如果执行kubeadm init初始化k8s集群失败了,在下一次执行kubeadm init初始化语句之前,可以先执行kubeadm reset命令。这个命令的作用是重置节点,大家可以把这个命令理解为:上一次kubeadm init初始化集群操作失败了,该命令清理了之前的失败环境。

        此命令只在master节点执行,192.168.124.41替换为自己的master节点IP,192.168.124.41/24替换为自己的pod网段。

kubeadm init --kubernetes-version=1.20.15 --apiserver-advertise-address=192.168.124.41 --pod-network-cidr=192.168.124.41/24

如遇初始化报错可根据systemctl status kubelet 或者 journalctl -xeu kubelet 查看报错信息来解决。

  • 根据成功提示先执行下面内容
    这些是成功图中提示的那些,要给他创建一下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

#查看nodes节点
kubectl get nodes

#这个时候master是处于NotReady状态的。

四、node节点的加入

1、完成之后将刚刚初始化master节点成功后的kubeadm join信息复制到其他node节点进行加入。在node1和node2执行下面的命令,加入到集群。

kubeadm join 192.168.124.41:6443 --token m78dvx.83p9lw44ecii40iz     --discovery-token-ca-cert-hash sha256:0248cbd2b963cf50aedab435115ab4cb649a78031be90cbbad208b527ee8b68c  --certificate-key 16891256f89462aff74c8453092eca40b51d53148b39d8ca86dbdd606e4909a7

问题:token和密钥如何生成?

2、在 kubeadm 初始话集群成功后会返回 join 命令, 里面有 token,discovery-token-ca-cert-hash等参数, 但ta们是有过期时间的. token 的过期时间是24小时, certificate-key 过期时间是2小时。

$ kubeadm token list
TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION   EXTRA GROUPS
1ugnpn.7qwbt58paanfov8a   <invalid>   2019-07-19T11:17:01+08:00   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token

如下生成worker节点的join命令:

$ kubeadm token create --print-join-command
kubeadm join k8s-master-7-13:8443 --token fw6ywo.1sfp61ddwlg1we27     --discovery-token-ca-cert-hash sha256:52cab6e89be9881e2e423149ecb00e610619ba0fd85f2eccc3137adffa77bb04
kubeadm token create --ttl 0 --print-join-command   #可以创建一个永不过期的token.

要添加master节点, 还要执行如下命令, 得到certificate-key

kubeadm init phase upload-certs --upload-certs  --v=999
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
70f399e275cabef0bb2794ea76303da0220574f59e994e755378a359edb5a233

这样我们上面的加入命令的  token和 secret就生成好了,替换即可。

node节点显示这样就是加载成功;加载成功之后返回master节点查看集群

[root@k8s-master ~]# kubectl get nodes

现在的集群状态都是NotReady表示不可达;这是因为还没有安装网络插件,下面我们来安装一下网络插件(caclico)

五、网络安装

1、给master节点安装Pod网络插件(calico)

选择网络插件:https://kubernetes.io/docs/concepts/cluster-administration/addons/
快速开始配置:https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/clis/calicoctl/install
calico网络插件:https://docs.projectcalico.org/v3.9/getting-started/kubernetes/

kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
  • 确认一下calico是否安装成功
kubectl get pods --all-namespaces -w
kubectl get pods -n kube-system -w

查看节点连接状态 安装完成之后,再次返回master节点查看集群,在主节点执行命令看集群是否成功

六、测试

1、写一个nginx的yaml文件

cat > pod_nginx_rs.yaml <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx
  labels:
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      name: nginx
      labels:
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
EOF
  • 根据pod_nginx_rs.yml文件创建pod
kubectl apply -f pod_nginx_rs.yaml

查看pod

#查看所有的pod
kubectl get pods
#查看所有的pod详细信息
kubectl get pods -o wide
#查看所有的pod超级详细信息
kubectl describe pod nginx

  • 通过rs将pod扩容为5个nginx服务
#将nginx服务由3个扩容为5个
kubectl scale rs nginx --replicas=5
#查看所有的pod
kubectl get pods -o wide
  • 光有ReplicaSet是不行的,ReplicaSet不会提供服务的,需要一个Service。将它应用到集群里面去。
cat > pod_nginx_rs_svc.yaml <<EOF
apiVersion: v1
kind: Service              # 类型是service
metadata:                  
  name: nginx              # 这个service的全局唯一名称
spec:
  type: NodePort
  ports:
    - port: 80             # service提供服务的端口号
      nodePort: 30000      # 想要对外的端口
  selector:
    tier: frontend         # 把拥有{tier:labels}或者{app:labels}这个标签的pod应用到这个服务里面
EOF

如果不加nodePort也就是不指定nodeport,默认会随机输出端口,可以通过kubectl get svc查看;

如果需要修改端口范围,如果是按照我的方式部署的,可在:vim /etc/kubernetes/manifests/kube-apiserver.yaml 的第17行进行修改,默认范围是30000-32767。

根据 pod_nginx_rs_svc.yml 文件创建services,需对外访问

kubectl apply -f pod_nginx_rs_svc.yaml
  • 查看services
kubectl get svc
kubectl get services

kubectl get svc 中的 type 。

  • Cluster IP 为服务器内部使用
  • Node Port 为服务器内部外部都可以使用,可以指定端口也可以随机端口。
  • 启动services之后,查看端口

ip+30000  master的ip、node1的 ip、node2的ip都可以 

  • 删除serviecs和pod
#删除serviecs
kubectl delete -f pod_nginx_rs_svc.yaml

#删除pod
kubectl delete -f pod_nginx_rs.yaml

附录:参考文献

【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介_kubeadm 主主-CSDN博客

kubeadm join 集群中加入新的master与worker节点_kubeadm join master-CSDN博客

centos7-设置桥接网络-CSDN博客

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

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

相关文章

【读论文】Gaussian Grouping: Segment and Edit Anything in 3D Scenes

Gaussian Grouping: Segment and Edit Anything in 3D Scenes 文章目录 Gaussian Grouping: Segment and Edit Anything in 3D Scenes1. What2. Why3. How3.1 Anything Mask Input and Consistency3.2 3D Gaussian Rendering and Grouping3.3 Downstream: Local Gaussian Editi…

用手势掌控PPT,玩转演示新姿势

推荐运行环境 使用anaconda创建环境&#xff0c;以免污染原来的python开发环境conda install python3.9pip install -q mediapipe0.10.0pip install pyautoguiPython: version 3.8 - 3.11PIP: version 20.3 请注意以下的坑 以下为我测试过程中的大坑&#xff0c;请及时避开&am…

【嵌入式开发实验】外部中断 按键 LED灯;定时中断;检测直流电机的转速 液晶屏显示;(附实验代码+注释+实验简析)| 附:步进电机/循迹小车相关

“永远不要停止思考,永远不认输。” 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主🏅 �

4. Python的深拷贝、浅拷贝

文章目录 0、先说结论1、浅拷贝修改元素值2、深拷贝修改元素值学习链接 0、先说结论 无论深拷贝还是浅拷贝都会为新对象分配一块新的内存&#xff0c;因此新老对象id不相同。 对于浅拷贝&#xff0c;新老对象内部的可变and不可变元素id都是相同的(在没修改元素值之前)。 对于深…

【限时免费,手慢无】Unity 怪物资源包,MONSTER 动作超丰富,不领后悔!

Unity 怪物资源包&#xff0c;MONSTER 动作超丰富 前言资源包内容领取兑换码 前言 &#x1f47e; 突破想象&#xff01;惊艳众人的怪物模型登场 &#x1f47e; 今天要向大家介绍一款令人瞩目的游戏怪物模型&#xff01;这个看似丑陋的小怪物&#xff0c;却有着巨大的潜力&…

JavaWeb之过滤器(Filter)与监听器(Listener)

前言 过滤器(Filter) 1.什么是过滤器 2.过滤器的语法格式 3.使用场景 3.1.如何防止用户未登录就执行后续操作 3.2.设置编码方式--统一设置编码 3.3.加密解密(密码的加密和解密) 3.4.非法文字筛选 3.5.下载资源的限制 监听器(Listener) 1.什么是监听器 2.监听器分类…

目标检测——色素性皮肤病变数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

如何理解VMware中的网络模式(NAT、桥接、仅主机)

目录 Ⅰ.NAT模式 Ⅱ.仅主机模式 Ⅲ.桥接模式 Ⅰ.NAT模式 NAT模式&#xff1a;将物理机的网卡作为虚拟交换机的上线链路&#xff0c;将vmware的私有网络转成可以上网的地址进行网络访问&#xff0c;因此在NAT模式下虚拟机是可以访问外部网络的&#xff08;图一&#xff09; …

电路板维修【一】

最近喜欢上了电路板维修&#xff0c;经常看很多博主的维修视频&#xff0c;觉得还是颇有收获的&#xff08;维修板子原来有方法可循&#xff09;&#xff0c;于是做笔记如下&#xff1a; 一.【修了半天也没找到问题&#xff0c;原来是检查方向错了&#xff0c;变频油烟机板维修…

基于SSM的“医院院内物资管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“医院院内物资管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 功能模块图 系统登录页面 用户管理功能模块 模板列表管…

CSS---复合选择器、元素显示模式和背景(三)

一、CSS的复合选择器 1.1 什么是复合选择器 在CSS中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形成的。 复合选择器是由两个或多个基础选择器连写组成&#xff0c;它…

监控异地组网怎么组网?

监控异地组网是指在不同地域的网络环境下&#xff0c;实现对监控设备的远程访问和管理。在传统的网络环境下&#xff0c;由于网络限制和设备配置等问题&#xff0c;监控设备的远程访问往往受到一定的限制和困扰。为了解决这个问题&#xff0c;引入了天联组网技术&#xff0c;实…

LLM大语言模型(十五):LangChain的Agent中使用自定义的ChatGLM,且底层调用的是remote的ChatGLM3-6B的HTTP服务

背景 本文搭建了一个完整的LangChain的Agent&#xff0c;调用本地启动的ChatGLM3-6B的HTTP server。 为后续的RAG做好了准备。 增加服务端role&#xff1a;observation ChatGLM3的官方demo&#xff1a;openai_api_demo目录 api_server.py文件 class ChatMessage(BaseModel…

英语学习笔记9——How are you today?

How are you today? 你好吗&#xff1f; 词汇 Vocabulary well adj. 好的 n. 井 fine adj. 美好的 两个方面&#xff1a;天气、身体。 搭配&#xff1a;a fine day 晴朗的一天    It’s a fine day today. 今天很晴朗。 good adj. 好的 口语偏多 搭配&#xff1a;Good jo…

【Python技术】使用akshare、pandas高效复盘每日涨停板行业分析

作为一个程序员宝爸&#xff0c;每天的时间很宝贵&#xff0c;工作之余除了辅导孩子作业&#xff0c;就是补充睡眠。 怎么快速高效的进行当天A股涨停板的复盘&#xff0c;便于第二天的跟踪。这里简单写个示例&#xff0c; 获取当天连涨数排序&#xff0c;以及所属行业排序。 …

服务器数据恢复—RAID5磁盘阵列两块盘离线的数据恢复过程

服务器故障&#xff1a; 服务器中有一组由多块硬盘组建的raid5磁盘阵列&#xff0c;服务器阵列中2块硬盘先后掉线导致服务器崩溃。 服务器数据恢复过程&#xff1a; 1、将故障服务器中所有磁盘编号后取出&#xff0c;由硬件工程师对掉线的两块磁盘进行物理故障检测&#xff0c…

AGI 时代,Rust与Python谁是未来的语言?

随着 Rust 在开发者社区中越来越受欢迎&#xff0c;有必要问一下&#xff0c;Rust 会取代 Python 吗&#xff1f;哪一款最适合您&#xff1f;而且&#xff0c;你应该开始学习 Rust 吗&#xff1f;本文将对 Rust 与 Python 进行全面比较。读完本文后&#xff0c;你将对是否要开始…

uniapp:抖音PK进度条(nvue)

nvue中,仿抖音PK进度条效果, <template><view class="index" :style="{width:windowWidth+px,height:index_windowHeight+px,paddingTop:windowTop+px}"><view class="pk"><text class="pk_jindu_left_val fsz-24 …

基于SSM框架弹幕视频网站

采用技术 基于SSM框架弹幕视频网站的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 前台首页 首页 登录 视频信息 商品信息 个人信息 用户模块 我…

ntfs文件系统的优势 NTFS文件系统的特性有哪些 ntfs和fat32有什么区别 苹果电脑怎么管理硬盘

对于数码科技宅在新购得磁盘之后&#xff0c;出于某种原因会在新的磁盘安装操作系统。在安装操作系统时&#xff0c;首先要对磁盘进行分区和格式化&#xff0c;而在此过程中&#xff0c;操作者们需要选择文件系统。文件系统也决定了之后操作的流程程度&#xff0c;一般文件系统…