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

news2024/11/24 1:05:46

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

文章目录

  • Kubernetes简介
    • 1 kubernetes架构
      • 1.1master节点
      • 1.2 Node节点
      • 1.3 kubectl
    • 2 kubeadm
      • 2.1 kubeadm功能
  • Kubernetes集群部署
  • 准备工作(所有节点都要做同样的操作)
    • 服务器配置
    • 关闭防火墙
    • 关闭selinux
    • 关闭交换分区
    • 修改三台集群的主机名:(每个主机限一条命令)
    • 所有节点都添加集群ip与主机名到hosts中:
    • 三台机器进行时间同步
    • 特殊说明:
    • 三台都安装需要的一些命令:
  • 部署 docker(所有节点都需要部署)
    • 给docker添加镜像加速器及cgroup并重启docker服务
    • docker部署完成
  • 部署 kubernetes(所有节点都要部署)
    • 配置相关的内核参数
    • 添加 k8s yum源
    • 安装 kubeadm kubelet kubectl
    • kubernetes强化tab(安装之后会tab可以补全命令及参数)
    • 查看kubeadm使用的镜像
  • master节点
    • 初始化master节点
    • node节点的加入
    • 给master节点安装Pod网络插件(calico)
    • 查看节点连接状态
  • 测试
  • 完结⭕

Kubernetes简介

  Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。

官网地址: https://kubernetes.io

1 kubernetes架构

  Kubernetes具有去中心化的架构,不会线性处理任务。它基于声明性模型运行并实现"所需状态"的概念。下面这些步骤说明了Kubernetes的基本过程:

  • 管理员创建应用程序的所需状态并将其放入清单文件manifest.yml中。
  • 使用CLI或提供的用户界面将清单文件提供给Kubernetes API Server。 Kubernetes的默认命令行工具称为kubectl。
  • Kubernetes将清单文件(描述了应用程序的期望状态)存储在称为键值存储(etcd)的数据库中。
  • Kubernetes随后在集群内的所有相关应用程序上实现所需的状态。
  • Kubernetes持续监控集群的元素,以确保应用程序的当前状态不会与所需状态有所不同。

在这里插入图片描述

1.1master节点

  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中的信息发生变化时,就能够快速的通知集群中相关的组件。

控制器说明
Replication Controller管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数
Node Controller管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。
Namespace Controller管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。
Service Controller管理维护Service,提供负载以及服务代理。
EndPoints Controller管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。
Service Account Controller管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
Persistent Volume Controller管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
DaemonSet Controller管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
Deployment Controller管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和Pod的更新。
Job Controller管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目
Pod Autoscaler Controller实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。

1.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重新调度到其他节点上。

1.3 kubectl

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

2 kubeadm

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

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

2.1 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 预览一组可用的新功能以便从社区搜集反馈。

Kubernetes集群部署

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

服务器配置

集群(一主两从)ip地址主机名配置
172.16.11.221k8s-master2C/2G/50G
172.16.11.222k8s-node12C/2G/50G
172.16.11.223k8s-node22C/2G/50G

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

如果在线上服务器之类的不能关闭防火墙,那就需要开启几个端口;(这里说的是k8所用到的端口)

  • master节点:
规则端口范围作用使用者
TCP6443*Kubernetes API serverAll
TCP2379-2380etcd server client APIkube-apiserver, etcd
TCP10250Kubelet APISelf, Control plane
TCP10251kube-schedulerSelf
TCP10252kube-controller-managerSelf
  • node节点:
规则端口范围作用使用者
TCP10252Kubelet APISelf, Control plane
TCP30000-32767NodePort Services**All

关闭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

关闭交换分区

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

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

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

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

所有节点都添加集群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,不要直接复制粘贴

三台机器进行时间同步

#安裝同步时间命令
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不同

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

  • 添加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
  • 添加epel扩展源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • 清除缓存
yum clean all
  • 重新加载源缓存
yum makecache
  • 升级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

安装需要一些时间,就等待安装即可;

部署 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

docker部署完成

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

配置相关的内核参数

将桥接的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

添加 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

安装 kubeadm kubelet kubectl

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

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

#查看kubeadm版本
kubeadm version
  • 启动kubelet并设置开机自启
systemctl enable kubelet && systemctl start kubelet

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

  • 配置环境
echo 'source  <(kubectl  completion  bash)' >> ~/.bashrc

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

查看kubeadm使用的镜像

kubeadm config images list

可以发现这里都是国外的镜像

k8s.gcr.io/kube-apiserver:v1.20.15
k8s.gcr.io/kube-controller-manager:v1.20.15
k8s.gcr.io/kube-scheduler:v1.20.15
k8s.gcr.io/kube-proxy:v1.20.15
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0

  • 解决国外镜像不能访问的问题,执行kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像;
wget -O kubeadm.sh https://files.rundreams.net/sh/kubeadm.sh && sh kubeadm.sh

等待拉取完成。

如果感觉拉取比较费劲,可以下载kubeadm所需的镜像和脚本:kubeadm所需镜像包及脚本v1.20.15版本

拉取完成查看镜像;

docker images

在这里插入图片描述

master节点

初始化master节点

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

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

kubeadm init --kubernetes-version=1.20.15 --apiserver-advertise-address=172.16.11.221 --pod-network-cidr=172.17.10.1/18

初始化成功图为下:

在这里插入图片描述

如遇初始化报错可根据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节点的加入

  • 完成之后将刚刚初始化master节点成功后的kubeadm join信息复制到其他node节点进行加入。
node1:
	kubeadm join 172.16.11.221:6443 --token ckgdsy.xa5x21lsjqak2zmr \
    --discovery-token-ca-cert-hash sha256:3bc8dd07b7e88a5f7b0efa81b4ae4918abb440f93f4940c72f9b4a842d6c872b 
node2:
	kubeadm join 172.16.11.221:6443 --token ckgdsy.xa5x21lsjqak2zmr \
    --discovery-token-ca-cert-hash sha256:3bc8dd07b7e88a5f7b0efa81b4ae4918abb440f93f4940c72f9b4a842d6c872b 

在这里插入图片描述

node节点显示这样就是加载成功;

加载成功之后返回master节点查看集群

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

在这里插入图片描述

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

给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/

  • 在master节点安装calico
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节点查看集群,在主节点执行命令看集群是否成功

kubectl get nodes
#或者使用加-o wide查看详细
kubectl get nodes -o wide

STATUS 状态为Ready则连接成功。

在这里插入图片描述

在这里插入图片描述

测试

  • 写一个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之后,查看端口

在这里插入图片描述

端口为30000,页面访问,节点的ip+30000;

节点的ip可以为主节点的ip,也可以为从节点的ip。

在这里插入图片描述

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

#删除pod
kubectl delete -f pod_nginx_rs.yaml

完结⭕

内容主要参考与:【云原生-K8s】kubeadm搭建k8s集群【不成功手把手教学】

感谢大家的观看!!!

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

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

相关文章

清凉一夏小风扇-React版

这里写目录标题 前言 一、效果二、代码分享三、总结 前言 本片文章主要是做一个小练习&#xff0c;通过react来制作一个风扇练习css动画。 vue3实现部分看这里–> 一、效果 二、代码分享 1、主体框架 “react”: “^18.2.0” “sass”: “^1.62.1” 2、主要技术点 使用事…

企业上云容灾如何实现碳中和?

随着能源成本的增加和数据消费的激增&#xff0c;“电耗”和“碳排放”成为今年世界移动通信大会热议的话题。目前&#xff0c;ICT行业耗电量约占全球用电量的7%。预计到2040年&#xff0c;ICT行业碳排放量占全球排放量的比例将上升至14%。 容灾是企业为了在灾难时保证业务继续…

基于html+css的图展示99

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Log4j2 - JNDI 注入漏洞复现(CVE-2021-44228)

文章目录 Apache Log4j简介漏洞介绍影响版本漏洞编号影响组件应用 环境准备靶场搭建漏洞利用利用工具使用方式 反弹shell操作 漏洞修复建议 Apache Log4j简介 Apache log4j 是 Apache 的一个开源项目&#xff0c; Apache log4j2 是一个 Java 的日志记录工具。该工具重写了 log4…

03.hadoop上课笔记之hdfs环境的搭建和使用

1.启动网络 在windows任务管理器启动服务vm Dhcp #由动态ip变为静态 #启动网卡ifup ens33#修改网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTSTRAPstaticIPADDR192.168.202.101NETMASK255.255.255.0GATEWAY192.168.202.2DNS1192.168.202.2#重启网络 servic…

Vue动态路由在实际项目中的应用(包含前后台细节)

背景 近期做一个公司的门户网站&#xff0c;在产品和新闻这一块需要用到动态路由。本节博客以产品板块为例说一下动态路由的应用。 另外如果路由相关的基础知识有问题&#xff0c;可以查看我的这篇博客&#xff1a; Vue2路由的详细讲解 另外&#xff0c;这篇博客也会涉及到一…

macOS visual studio code 没有读写权限 检查更新报错

问题描述 visual studio code 检查更新&#xff0c;报错&#xff0c;visual studio code没有磁盘读写权限。&#xff08;可能会导致插件安装报错&#xff1f;&#xff09; 报错&#xff1a;The application is on a read-only volume. Please move the application and try a…

网络安全人员需要考的几本(含金量高)的证书!

网络安全行业含金量最高的当属CISSP——注册信息系统安全专家。但这个认证也是大家公认比较难考的证书. 含金量次之的CISP——国家注册信息安全专业人员&#xff0c;包含CISE&#xff08;工程师&#xff09;、CISO&#xff08;管理&#xff09;、CISA&#xff08;外审&#xf…

面试前15天刷完这个笔记,拿下字节测开岗offer....

面试&#xff0c;跳槽&#xff0c;每天都在发生&#xff0c;跳槽&#xff0c;更是很常见的&#xff0c;对于每个人来说&#xff0c;跳槽的意义也各不相同&#xff0c;可能是一个人更向往一个更大的平台&#xff0c;更好的地方&#xff0c;可以通过换一个环境改变自己的现状。而…

基于OpenCV [c++]——形态学操作(分析和应用)

摘要&#xff1a; 形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学&#xff08;也称图像代数&#xff09;表示以形态为基础对图像进行分析的数学工具。 基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。 形…

这篇文章把MOS管的基础知识讲透了

MOS管&#xff08;Metal-Oxide-Semiconductor field-effect transistor&#xff09;是一种常见的半导体器件&#xff0c;它在数字电路、模拟电路、功率电子等领域都有广泛的应用。本文将从MOS管的基本结构、工作原理、参数特性等方面讲解MOS管的基础知识。 一、MOS管的基本结构…

MediaPlayer error(-38, 0) 异常处理

文章目录 1、参考资料2、业务背景3、解决方案 1、参考资料 Media Player called in state 0, error (-38,0) MediaPlayer的使用 2、业务背景 对时长超过 5s 的音频提供裁剪、试听功能&#xff0c;裁剪、试听最大时长均为 5s。当视频长度在 5s ~ 6s 之间&#xff0c;试听暂停…

Flink on yarn任务日志怎么看

1、jobmanager日志 在yarn上可以直接看 2、taskmanager日志 在flink的webui中可以看&#xff0c;但是flink任务失败后&#xff0c;webui就不存在了&#xff0c;那怎么看&#xff1f; 这是jobmanager的地址 hadoop02:19888/jobhistory/logs/hadoop02:45454/container_e03_16844…

Apache应用和配置

目录 构建虚拟 Web 主机基于域名的虚拟主机基于IP地址的虚拟主机基于端口的虚拟主机 Apache 连接保持构建Web虚拟目录与用户授权限制Apache 日志分割 构建虚拟 Web 主机 虚拟Web主机指的是在同一台服务器中运行多个Web站点&#xff0c;其中每一个站点实际上并不独立占用整个服务…

【发电机、输变电JDL-5400A 电流继电器 报警信号切除故障JOSEF约瑟】

名称&#xff1a;电流继电器&#xff1b;品牌&#xff1a;JOSEF约瑟&#xff1b;型号&#xff1a;JDL-5400A&#xff1b;触点容量&#xff1a;250V2A&#xff1b;返回时间&#xff1a;≤35ms&#xff1b;整定范围&#xff1a;0.03-19.9A&#xff1b;特点&#xff1a;返回系数高…

应用案例 | 升级OPC Classic到OPC UA,实现安全高效的数据通信

一 背景 OPC&#xff08;OLE for Process Control&#xff0c;用于过程控制的OLE&#xff09;是工业自动化领域中常见的通信协议。它提供了一种标准化的方式&#xff0c;使得不同厂商的设备和软件可互相通信和交换数据。OPC Classic是旧版OPC规范&#xff0c;通过使用COM&…

LabVIEWCompactRIO 开发指南第六章42

LabVIEWCompactRIO 开发指南第六章42 要使用用户控制的I/O示例方法进行编程&#xff0c;请按照以下步骤操作&#xff0c;这些步骤引用了图6.9中的示例程序。 初始化进程 1.调用重置I/O函数。此调用完成后&#xff0c;模块已准备好使用用户控制的I/O采样函数执行采集。必须首…

财务共享五大价值助力央企构建世界一流财务管理体系

如果说小微企业是我国市场经济的毛细血管的话&#xff0c;那么央企就是承载着我国市场发展的主动脉。以规模为导向来看&#xff0c;央企完成了第一次长征&#xff0c;但央企在盈利能力、市场份额、行业地位、专利技术与优势、品牌影响力、市值管理、标准和规则制定话语权等软实…

从1万张模板中找的运营知识图谱,超级牛!

运营现在是时下大家都很熟悉的一个行业&#xff0c;我们熟知的有内容运营、用户运营、产品运营、新媒体运营、活动运营 社群运营、电商运营、品牌运营等多种运营方式。 想要做好运营&#xff0c;其实是需要很丰富的知识体系的&#xff0c;今天就给大家分享一些厉害的运营图谱。…

英伟达曝光超级芯片 黄仁勋:AI已重塑计算机产业

5月29日&#xff0c;英伟达再曝新品“NVIDIA DGX™超级计算机”&#xff0c;为生成式AI语言应用、推荐系统和数据分析工作负载的巨型模型提供硬件支持。 该计算机的核心组件是已经全面投产的英伟达Grace Hopper超级芯片——2000 亿个晶体管&#xff0c;在同一封装内集成了72核…