云原生虚拟化kubevirt安装

news2024/9/24 8:11:21

kubevirt 介绍

Kubevirt 是 Redhat 开源的一套以容器方式运行虚拟机的项目,通过 kubernetes 云原生方式来管理虚拟机生命周期。它通过使用自定义资源(CRD)和其它 Kubernetes 功能来无缝扩展现有的集群,以提供一组可用于管理虚拟机的虚拟化API。

在这里插入图片描述

利用 KubeVirt 和 Kubernetes 可以管理不便于容器化且适合虚拟机的应用,将已有的虚拟化工作负载与新容器化的工作负载相结合共存于同一个平台,并支持在容器中与已有的虚拟化应用有交互的新微服务应用的开发。

在这里插入图片描述

KubeVirt 项目于 2016 年底在红帽启动,由Red Hat、IBM、Google、Intel、SUSE等公司和组织共同推动和贡献。提出的问题是:虚拟机 (VM) 可以在容器中运行并由 Kubernetes 部署吗?事实证明,它不仅是可行的,而且很快就成为容器时代虚拟机未来的一个有前景的解决方案。

KubeVirt 于 2019 年 9 月作为沙箱项目加入CNCF,并于 2022 年 4 月作为孵化项目加入 CNCF。经过7年的不懈努力,KubeVirt于2023年7月发布v1.0.0,标志着其已达到生产就绪水平并拥有健康的社区。

云原生虚拟化介绍

参考:https://www.redhat.com/zh/engage/container-virtualisation-2024

云原生虚拟化(Cloud Native Virtualization)是指将虚拟化技术与云原生生态系统相结合,以更高效地管理虚拟机(VM)和容器化的工作负载。它将虚拟机作为云原生架构中的一部分,与容器工作负载一起运行、管理和编排,从而提供更强的灵活性和资源利用率。

传统虚拟化将多个虚拟机运行在物理服务器上,而云原生虚拟化则以云原生的方式进行虚拟机管理,集成了容器、微服务架构和现代 DevOps 实践。其主要目标是使虚拟机和容器能够无缝共存,并利用 Kubernetes 等编排工具来管理所有工作负载。

如何选择合适的虚拟化技术路线,云原生2.0时代,虚拟化技术发展路线。

在这里插入图片描述
在当今的企业环境中,虚拟化建设已经成为常态,而部分企业更是迈入了云原生时代,我们将其称为云原生1.0时代。随着业务和产品的不断演进,例如虚拟化产品的升级和新业务的涌现,企业迫切需要一个更加灵活、高效和简洁的核心平台,这标志着云原生2.0时代的到来。

kubevirt 安装

官方文档:https://kubevirt.io/user-guide/cluster_admin/installation/

环境信息

3个kubernetes节点,操作系统为Ubuntu 22.04.2 LTS,CPU内存磁盘4C/16G/100G,kubernetes版本v1.29.3

root@node40:~# kubectl get nodes -o wide
NAME     STATUS   ROLES           AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
node40   Ready    control-plane   154d   v1.29.3   192.168.72.40   <none>        Ubuntu 22.04.2 LTS   5.15.0-105-generic   containerd://1.7.15
node41   Ready    <none>          154d   v1.29.3   192.168.72.41   <none>        Ubuntu 22.04.2 LTS   5.15.0-76-generic    containerd://1.7.15
node42   Ready    <none>          154d   v1.29.3   192.168.72.42   <none>        Ubuntu 22.04.2 LTS   5.15.0-122-generic   containerd://1.7.15

前置要求

在开始之前需要满足一些要求:

  • Kubernetes集群或衍生产品(例如OpenShift)基于 KubeVirt 版本发布时发布的最新三个 Kubernetes 版本之一。
  • Kubernetes apiserver 必须具有--allow-privileged=true才能运行 KubeVirt 的特权 DaemonSet。
  • kubectl客户端实用程序

版本支持矩阵

官方参考:https://github.com/kubevirt/sig-release/blob/main/releases/k8s-support-matrix.md

kubevirt与kubernetes版本兼容性如下表所示:

KubeVirt版本1.301.291.281.27EOL1.26EOL1.25EOL
1.3---
1.2-EOL--
1.1--EOLEOL-
1.0---EOLEOLEOL
0.59----EOLEOL

注意: EOL表示 Kubernetes 版本受 KubeVirt 支持,但已达到生命周期终点。

容器运行时支持

目前以下容器运行时支持 KubeVirt:

  • containerd
  • crio (with runv)

其他不使用虚拟化功能的容器运行时也应该可以工作。然而,上述那些是主要目标。

验证硬件虚拟化支持

建议使用支持虚拟化的硬件。您可以使用 virt-host-validate 确保您的主机能够运行虚拟化工作负载:

$ apt install libvirt-clients -y
$ virt-host-validate qemu
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
...

kubevirt 安装流程

KubeVirt 可以使用 KubeVirt operator安装,该operator管理所有 KubeVirt 核心组件的生命周期。以下是如何使用官方版本安装 KubeVirt 的示例。

下载yaml文件

export RELEASE=v1.3.0
wget https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
wget https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml

运行yaml文件

kubectl apply -f kubevirt-operator.yaml
kubectl apply -f kubevirt-cr.yaml

等待组件完全启动

 kubectl -n kubevirt wait kv kubevirt --for condition=Available

查看运行的pods

root@node40:~# kubectl -n kubevirt get pods 

NAME                               READY   STATUS    RESTARTS        AGE
virt-api-f97fbdff-twmw9            1/1     Running   0               4d17h
virt-api-f97fbdff-vmnlg            1/1     Running   0               4d17h
virt-controller-6bf9f4477f-4lzgg   1/1     Running   3 (3d20h ago)   4d17h
virt-controller-6bf9f4477f-dr6dw   1/1     Running   2 (3d20h ago)   4d17h
virt-handler-86zh6                 1/1     Running   0               4d17h
virt-handler-mhdqq                 1/1     Running   0               4d17h
virt-handler-xcp7k                 1/1     Running   0               4d17h
virt-operator-59f5558dcd-5txb8     1/1     Running   3 (3d20h ago)   4d17h
virt-operator-59f5558dcd-hzvw6     1/1     Running   2 (3d20h ago)   4d17h

如果硬件虚拟化不可用,则可以通过在 KubeVirt CR 中设置来启用软件模拟回退,将 spec.configuration.developerConfiguration.useEmulation 设置为true如下:

$ kubectl edit -n kubevirt kubevirt kubevirt

将以下内容添加到kubevirt.yaml文件中

spec:
    ...
    configuration:
    developerConfiguration:
        useEmulation: true

virtctl 客户端工具安装

基本的 VirtualMachineInstance 操作可以使用 stock kubectl实用程序执行。但是,需要virtctl二进制实用程序才能使用高级功能,例如:

  • 串行和图形控制台访问
  • 启动和停止 VirtualMachineInstances
  • 实时迁移 VirtualMachineInstances 和取消实时迁移
  • 上传虚拟机磁盘镜像

可以从官方发布页面检索该工具的最新版本。

下载安装示例如下:

export VERSION=v1.3.0
curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
chmod +x virtctl
sudo install virtctl /usr/local/bin

kubevirt 创建虚拟机

kubevirt支持多种方式导入虚拟机镜像,常用的有containerDiskdataVolumepersistentVolumeClaim (PVC)等。

具体参考官方文档:https://kubevirt.io/user-guide/storage/disks_and_volumes/

下面以containerDisk为例,介绍如何创建和管理虚拟机。

官方container-disk镜像地址:https://github.com/kubevirt/containerdisks

NameImage
CentOS Streamquay.io/containerdisks/centos-stream:9
Fedoraquay.io/containerdisks/fedora:40
Ubuntuquay.io/containerdisks/ubuntu:22.04

创建cirros虚拟机

下载官方示例yaml文件

wget https://kubevirt.io/labs/manifests/vm.yaml

查看yaml文件内容

root@node40:~# cat vm.yaml 
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: testvm
spec:
  running: false
  template:
    metadata:
      labels:
        kubevirt.io/size: small
        kubevirt.io/domain: testvm
    spec:
      domain:
        devices:
          disks:
            - name: containerdisk
              disk:
                bus: virtio
            - name: cloudinitdisk
              disk:
                bus: virtio
          interfaces:
          - name: default
            masquerade: {}
        resources:
          requests:
            memory: 64M
      networks:
      - name: default
        pod: {}
      volumes:
        - name: containerdisk
          containerDisk:
            image: quay.io/kubevirt/cirros-container-disk-demo
        - name: cloudinitdisk
          cloudInitNoCloud:
            userDataBase64: SGkuXG4=

应用yaml文件

kubectl apply -f vm.yaml

查看创建的虚拟机,默认虚拟机未启动

root@node40:~# kubectl get vm
NAME                   AGE     STATUS    READY
testvm                 4s      Stopped   False

启动虚拟机

root@node40:~# virtctl start testvm
VM testvm was scheduled to start

查看虚拟机运行状态为Running

root@node40:~# kubectl get vm
NAME                   AGE     STATUS    READY
testvm                 3m19s   Running   True

通过控制台访问虚拟机

root@node40:~# virtctl console testvm
Successfully connected to testvm console. The escape sequence is ^]

login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
testvm login: cirros
Password: 
$ 
$ cat /etc/os-release 
NAME=Buildroot
VERSION=2015.05-g31af4e3-dirty
ID=buildroot
VERSION_ID=2015.05
PRETTY_NAME="Buildroot 2015.05"
$ 

通过nodeport service 暴露虚拟机SSH端口

virtctl expose virtualmachine  testvm --name vmiservice-node --target-port 22 --port 24 --type NodePort

查看创建的service

root@node40:~# kubectl get svc
NAME              TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes        ClusterIP   10.96.0.1    <none>        443/TCP        154d
vmiservice-node   NodePort    10.96.3.81   <none>        24:32310/TCP   2m42s

通过SSH远程访问虚拟机

root@node40:~# ssh -p 32310 cirros@192.168.72.40
cirros@192.168.72.40's password: 
$ 
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
    link/ether 3e:01:5a:08:21:5b brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.2/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3c01:5aff:fe08:215b/64 scope link 
       valid_lft forever preferred_lft forever
$ 

创建CentOS虚拟机

示例yaml如下

root@node40:~# cat centos_vm.yaml 
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  creationTimestamp: null
  name: centos-stream
spec:
  runStrategy: Always
  template:
    metadata:
      creationTimestamp: null
    spec:
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: containerdisk
          - disk:
              bus: virtio
            name: cloudinit
          rng: {}
        resources:
          requests:
            memory: 1Gi
      terminationGracePeriodSeconds: 180
      volumes:
      - containerDisk:
          image: quay.io/containerdisks/centos-stream:9
        name: containerdisk
      - cloudInitNoCloud:
          userData: |-
            #cloud-config
            # The default username is: cloud-user
            password: cloud-password
            chpasswd: { expire: False }
        name: cloudinit
status: {}

创建虚拟机

kubectl apply -f centos_vm.yaml

访问虚拟机,默认用户为cloud-user,密码为cloudInitNoCloud中设定的密码cloud-password

root@node40:~# kubectl get vm
NAME            AGE   STATUS    READY
centos-stream   19m   Running   True
testvm          69m   Running   True
root@node40:~# 
root@node40:~# virtctl console centos-stream
Successfully connected to centos-stream console. The escape sequence is ^]

centos-stream login: cloud-user
Password: 
Last login: Sun Sep 22 22:06:45 on ttyS0
[cloud-user@centos-stream ~]$ cat /etc/os-release 
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
[cloud-user@centos-stream ~]$ 

创建Fedora虚拟机

示例yaml如下

root@node40:~# cat fedora_vm.yaml 
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  creationTimestamp: null
  name: fedora
spec:
  runStrategy: Always
  template:
    metadata:
      creationTimestamp: null
    spec:
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: containerdisk
          - disk:
              bus: virtio
            name: cloudinit
          rng: {}
        features:
          acpi: {}
          smm:
            enabled: true
        firmware:
          bootloader:
            efi:
              secureBoot: true
        resources:
          requests:
            memory: 1Gi
      terminationGracePeriodSeconds: 180
      volumes:
      - containerDisk:
          image: quay.io/containerdisks/fedora:40
        name: containerdisk
      - cloudInitNoCloud:
          userData: |-
            #cloud-config
            # The default username is: fedora
            password: fedora
            chpasswd: { expire: False }
        name: cloudinit
status: {}

访问虚拟机,默认用户为fedora,密码为cloudInitNoCloud中设定的密码fedora

root@node40:~# kubectl get vm
NAME            AGE     STATUS    READY
centos-stream   10m     Running   True
fedora          5m31s   Running   True
testvm          60m     Running   True
root@node40:~#
root@node40:~# virtctl console fedora
Successfully connected to fedora console. The escape sequence is ^]

fedora login: fedora
Password: 
[fedora@fedora ~]$ cat /etc/os-release 
NAME="Fedora Linux"
VERSION="40 (Cloud Edition)"
ID=fedora
VERSION_ID=40
VERSION_CODENAME=""
PLATFORM_ID="platform:f40"
PRETTY_NAME="Fedora Linux 40 (Cloud Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:40"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f40/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=40
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=40
SUPPORT_END=2025-05-13
VARIANT="Cloud Edition"
VARIANT_ID=cloud
[fedora@fedora ~]$ 

创建Ubuntu虚拟机

示例yaml如下

root@node40:~# cat ubuntu_vm.yaml 
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  creationTimestamp: null
  name: ubuntu
spec:
  runStrategy: Always
  template:
    metadata:
      creationTimestamp: null
    spec:
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: containerdisk
          - disk:
              bus: virtio
            name: cloudinit
          rng: {}
        resources:
          requests:
            memory: 1Gi
      terminationGracePeriodSeconds: 180
      volumes:
      - containerDisk:
          image: quay.io/containerdisks/ubuntu:22.04
        name: containerdisk
      - cloudInitNoCloud:
          userData: |-
            #cloud-config
            # The default username is: ubuntu
            password: ubuntu
            chpasswd: { expire: False }
        name: cloudinit
status: {}

访问虚拟机,默认用户为ubuntu,密码为cloudInitNoCloud中设定的密码ubuntu

root@node40:~# kubectl get vm
NAME            AGE   STATUS    READY
centos-stream   19m   Running   True
fedora          14m   Running   True
testvm          69m   Running   True
ubuntu          86s   Running   True
root@node40:~# 
root@node40:~# virtctl console ubuntu
Successfully connected to ubuntu console. The escape sequence is ^]

ubuntu login: ubuntu
Password: 
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-119-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information disabled due to load higher than 1.0

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ubuntu:~$ 
ubuntu@ubuntu:~$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
ubuntu@ubuntu:~$ 

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

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

相关文章

9.23作业

仿照string类&#xff0c;自己手动实现 My_string 代码如下 MyString.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; …

socket.io-client实现实前后端时通信功能

这里我使用的后端 基于node.js的koa框架 前端使用的是vite {"name": "hou","version": "1.0.0","description": "","main": "app.js","scripts": {"test": "echo …

Pointnet++改进59:全网首发MogaBlock(2024最新模块)|用于在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入MogaBlock,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.…

GreenPlum与PostgreSQL数据库

*** Greenplum*** 是一款开源数据仓库。基于开源的PostgreSQL改造&#xff0c;主要用来处理大规模数据分析任务&#xff0c;相比Hadoop&#xff0c;Greenplum更适合做大数据的存储、计算和分析引擎 它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数…

微软宣布弃用面向企业的WSUS更新服务 仍然保留该服务但不再添加任何新功能

Windows Server Update Services 是微软面向企业推出的一项更新服务&#xff0c;该服务已经存在很多年&#xff0c;允许 IT 管理员控制内网设备的更新节奏。今年早些时候微软宣布将在 2025 年 4 月 18 日开始弃用 WSUS 驱动程序同步功能&#xff0c;因为大约只有 1/3 的 IT 管理…

生成PPT时支持上传本地的PPT模板了!

制作 PPT 时想要使用特定的 PPT 模板&#xff1f; 现在&#xff0c;歌者 PPT 的「自定义模板功能」已全面升级&#xff01;你可以轻松上传自己的本地 PPT 模板&#xff0c;无论是公司统一风格的模板&#xff0c;还是带有个人设计风格的模板&#xff0c;都能无缝导入歌者 PPT。…

单链表:学生信息管理系统

一、头文件 #ifndef __LINK_H__ #define __LINK_H__ #include <myhead.h> #define MAX 30 // 建立学生结构体 typedef struct student {int id; //学号char name[20]; //姓名float score; //分数 }stu;typedef struct node {union{int len;stu data;};struct node * nex…

玄机--哥斯拉流量

1、黑客的ip 过滤http&#xff0c;观察哪个ip一直在发送请求包 2、什么漏洞 因为是哥斯拉&#xff0c;那么黑客在连接成功之前一定上传这个木马文件到服务端 hello.jsp是木马文件&#xff0c;过滤http contains “hello.jsp” 最早是PUT这个方法 3、文件名 hello.jsp 保存…

让AI激发创作力:OpenAI分享5位专业作家利用ChatGPT写作的案例技巧

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

GPU硬件如何实现光栅化?

版权声明 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明文章内容不得删减、修改、演绎本文视频版本&#xff1a;见文末 引言 大家好&#xff0c;我是老雷&#xff0c;今天我想从GPU硬件原理出发&#xff0c;给大家分享在图形渲…

JS防抖和节流函数

节流和防抖函数的定义 防抖&#xff1a;只有在最后一次事件发生后的一定时间间隔内没有新的事件触发时&#xff0c;才执行相应的处理函数。节流&#xff1a;在规定的时间间隔内最多只能执行一次相应的处理函数。 效果图 示例图 示例图运行结果如下&#xff1a; 代码 &l…

远程升级,你成功了吗?

最近又遇到了远程升级失败的情况&#xff0c;而且是不明原因的多次接连失败。。。 事情是这样的&#xff1a;最近有客户反馈在乡村里频繁出现掉线的情况。通过换货、换SIM卡对比排查测试&#xff0c;发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况&#xf…

【深度学习】03-神经网络3-1梯度下降网络优化方法

每一条线是一个权重&#xff0c;每个神经元由一个加权和还有一个 激活函数组成。每一层可以理解是一个函数&#xff0c;最终形成一个复合函数&#xff0c;因此求梯度的时候&#xff0c;是一层一层的求解&#xff0c;所以叫做反向传播。 只会考虑当前数据之前的数据&#xff0c;…

潮玩宇宙大逃杀宝石游戏搭建开发

潮玩宇宙大逃杀的开发主要涉及以下方面&#xff1a; 1. 游戏概念和设计&#xff1a; 核心概念定义&#xff1a;确定以潮玩为主题的宇宙背景、游戏的基本规则和目标。例如&#xff0c;玩家在宇宙场景中参与大逃杀竞技&#xff0c;目标是成为最后存活的玩家。 玩法模式设计&a…

k8s上安装prometheus

一、下载对应的kube-prometheus源码 github地址&#xff1a;GitHub - prometheus-operator/kube-prometheus: Use Prometheus to monitor Kubernetes and applications running on Kubernetes 1&#xff09;进入目录 [rootk8s-master ~]# cd kube-prometheus [rootk8s-master…

商城小程序源码搭建部署,商城购物小程序开发流程(php框架)

关于商城小程序 商城小程序作为一种基于移动互联网的在线购物平台&#xff0c;商家可以上架所销售的产品&#xff0c;定价&#xff0c;以及营运营的在线售货平台。买家无需下载应用&#xff0c;在小程序搜索打开即可浏览下单商品。 技术栈 前端: vue uniapp 后端&#xff1a…

嵌入式Linux学习笔记(7)-Socket网络编程

一、什么是Socket网络编程 Socket是一种抽象的编程接口&#xff0c;可以用于在不同主机之间进行数据通信。Socket API提供了一系列函数来创建、连接、发送和接收数据等操作。嵌入式 Linux 系统中的 Socket 网络编程是指在嵌入式系统中使用 Socket API 进行网络通信。 Socket 网…

HTTP协议1.1请求头和keep-alive

请求头分类 End-to-end&#xff08;端对端&#xff09; 必须全部带给目标服务器&#xff0c;不会被中途变化或去掉 Hop-by-hop&#xff08;逐跳头&#xff09; 比如客户端发请求&#xff0c;要路过代理(例如Nginx)&#xff0c;头可以被自动删掉&#xff0c;来到真正服务器上…

vue/配置axios(前后端数据连通/api接口的调用)

1.创建apis文件 2.写入调用的api地址且暴露出去。 import httpInstance from /utils/http;export function getHomeNav() {return httpInstance({url: http://10.0.11.91:91/dailyreport/getdailyreportall,}) }3.创建文件编写拦截器 代码部分 //axios基础封装 import axio…

Thinkphp5x远程命令执行 靶场攻略

环境配置 靶场&#xff1a;vulhub/thinkphp/5-rce docker-compose up -d #启动环境 漏洞复现 1.访问靶场&#xff1a;http://172.16.1.198:8080/ 2.远程命令执⾏ POC&#xff1a; ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system…