云原生之容器编排实践-OpenEuler23.09离线安装Kubernetes与KubeSphere
背景
有互联网的日子确实美好,不过有时候,仅仅是有时候,你可能会面临离线部署 Kubernetes
与 KubeSphere
集群的要求。。
我们借助由青云开源的容器平台, KubeSphere
来进行可视化的服务部署。 KubeSphere
是在 Kubernetes
之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT
自动化运维能力;
接下来使用 KubeKey
完成 Kubernetes
与 KubeSphere
的一键安装。另外,由于 CentOS7
在2024年即将停服,实际部署不建议采用;本次的部署环境采用 OpenEuler
社区创新版 23.09
。
Note:如果是生产环境部署,建议使用更稳定的 LTS
版本的操作系统,eg: OpenEuler 22.03 SP3
。另外,所谓的离线安装,前提是有一台能联网的机器,用于制作离线安装包,说白了整个安装过程就是先在一台联网环境下的机器上下载好搭建集群的所需要的镜像,然后在离线环境下将这些镜像推送到私有镜像仓库,当搭建集群需要用到镜像时,从这个私有镜像仓库拉取即可完成安装, KubeKey
就是干了这样一个活儿。
虚机资源
共用到了三台虚机:
- 1台是之前进行在线安装
Kubernetes
与KubeSphere
的主节点,在本次实践过程中的用途仅仅是制作离线包; - 1台
Master
节点 - 1台
Worker
节点
主机名 | IP | 说明 |
---|---|---|
k1 | 192.168.44.162 | 可联网,用于制作离线包 |
ksp1 | 192.168.44.165 | 主节点 |
ksp2 | 192.168.44.166 | 工作节点 |
即将安装的 KubeSphere
和 Kubernetes
版本信息如下:
- KubeSphere版本:v3.3.2(我们指定了版本:–with-kubesphere v3.3.2)
- Kubernetes版本:v1.23.10(kubectl get node)
系统环境
[root@ksp1 ~]# uname -a
Linux ksp1 6.4.0-10.1.0.20.oe2309.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Sep 25 19:01:14 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@ksp1 ~]# cat /proc/version
Linux version 6.4.0-10.1.0.20.oe2309.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 12.3.1 (openEuler 12.3.1-16.oe2309), GNU ld (GNU Binutils) 2.40) #1 SMP PREEMPT_DYNAMIC Mon Sep 25 19:01:14 CST 2023
制作离线包
Note:这部分操作是在联网环境下的主机 k1
上进行。
- 生成离线包配置
# 创建配置文件
[root@k1 ~]# ./kk create manifest
Generate KubeKey manifest file successfully# 修改配置:放开了habor和docker-compose;修改了拉取镜像时的前缀
[root@k1 ~]# vi manifest-sample.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:name: sample
spec:arches:- amd64operatingSystems:- arch: amd64type: linuxid: openeulerversion: "2309"osImage: openEuler 23.09repository:iso:localPath: /root/centos7-rpms-amd64.isourl: kubernetesDistributions:- type: kubernetesversion: v1.23.10components:helm: version: v3.9.0cni: version: v0.9.1etcd: version: v3.4.13containerRuntimes:- type: dockerversion: 20.10.8crictl: version: v1.24.0## # docker-registry:# version: "2"harbor:version: v2.4.1docker-compose:version: v2.2.2images:- registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.23.2- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers:v3.23.2- registry.cn-beijing.aliyuncs.com/kubesphereio/node:v3.23.2- registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol:v3.23.2- registry.cn-beijing.aliyuncs.com/kubesphereio/coredns:1.8.6- registry.cn-beijing.aliyuncs.com/kubesphereio/snapshot-controller:v4.0.0- registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache:1.15.12- registry.cn-beijing.aliyuncs.com/kubesphereio/ks-apiserver:v3.3.2- registry.cn-beijing.aliyuncs.com/kubesphereio/ks-console:v3.3.2- registry.cn-beijing.aliyuncs.com/kubesphereio/ks-controller-manager:v3.3.2- registry.cn-beijing.aliyuncs.com/kubesphereio/ks-installer:v3.3.2- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.23.10- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.23.10- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.23.10- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy:v0.11.0- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy:v0.8.0- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.23.10- registry.cn-beijing.aliyuncs.com/kubesphereio/kube-state-metrics:v2.5.0- registry.cn-beijing.aliyuncs.com/kubesphereio/kubectl:v1.22.0- registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager-operator:v1.4.0- registry.cn-beijing.aliyuncs.com/kubesphereio/notification-manager:v1.4.0- registry.cn-beijing.aliyuncs.com/kubesphereio/notification-tenant-sidecar:v3.2.0- registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.6- registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-config-reloader:v0.55.1- registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus-operator:v0.55.1- registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4- registry.cn-beijing.aliyuncs.com/kubesphereio/linux-utils:3.3.0- registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv:3.3.0- registry.cn-beijing.aliyuncs.com/kubesphereio/alertmanager:v0.23.0- registry.cn-beijing.aliyuncs.com/kubesphereio/node-exporter:v1.3.1- registry.cn-beijing.aliyuncs.com/kubesphereio/prometheus:v2.34.0registry:auths: {}
Note:
- 上述修改配置主要是放开了私有镜像仓库的配置:habor和docker-compose;
- 修改了拉取镜像时的前缀:全部改为阿里云registry.cn-beijing.aliyuncs.com/kubesphereio。
- 生成离线包:kubesphere.tar.gz
[root@k1 ~]# ./kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz
Note:
0. export KKZONE=cn
- CPU过高,修改虚拟机配置;
- 个别软件包下载失败,可以手动下载后,放到对应目录中。
- 生成的kubesphere.tar.gz通过本地上传到ksp1主机,用于离线安装。
接下来的操作全部在离线环境进行。
依赖组件
我这里使用的 OpenEuler
操作系统,采用最小化安装,没有自带压缩/解压缩的软件,以及后续安装需要的 conntrack
与 socat
依赖。从之前在线环境下通过yum安装这些组件的过程中,可以找到下载离线安装的 rpm
包。
- tar conntrack socat
# 下面是在线环境下通过yum安装时的记录
Downloading Packages:
(1/6): libnetfilter_queue-1.0.5-2.oe2309.x86_64.rpm 257 kB/s | 25 kB 00:00
(2/6): tar-1.35-2.oe2309.x86_64.rpm 3.2 MB/s | 756 kB 00:00
(3/6): libnetfilter_cttimeout-1.0.1-1.oe2309.x86_64.rpm 31 kB/s | 21 kB 00:00
(4/6): libnetfilter_cthelper-1.0.1-1.oe2309.x86_64.rpm 22 kB/s | 20 kB 00:00
(5/6): conntrack-tools-1.4.7-1.oe2309.x86_64.rpm 168 kB/s | 177 kB 00:01
(6/6): socat-1.7.4.4-1.oe2309.x86_64.rpm ===========================================================================================================================================================Package Architecture Version Repository Size
===========================================================================================================================================================
Installing:tar x86_64 2:1.35-2.oe2309 OS 756 kconntrack-tools x86_64 1.4.7-1.oe2309 everything 177 ksocat x86_64 1.7.4.4-1.oe2309 everything 165 k
Installing dependencies:libnetfilter_cthelper x86_64 1.0.1-1.oe2309 everything 20 klibnetfilter_cttimeout x86_64 1.0.1-1.oe2309 everything 21 klibnetfilter_queue x86_64 1.0.5-2.oe2309 OS 25 kTransaction Summary
===========================================================================================================================================================
Install 6 Packages
结合 yum
源配置,找到 http://repo.openeuler.org/openEuler-23.09/everything/x86_64/Packages/
,分别下载下列 rpm
安装包。
http://repo.openeuler.org/openEuler-23.09/OS/x86_64/Packages/tar-1.35-2.oe2309.x86_64.rpm
http://repo.openeuler.org/openEuler-23.09/OS/x86_64/Packages/libnetfilter_queue-1.0.5-2.oe2309.x86_64.rpm
http://repo.openeuler.org/openEuler-23.09/everything/x86_64/Packages/libnetfilter_cthelper-1.0.1-1.oe2309.x86_64.rpm
http://repo.openeuler.org/openEuler-23.09/everything/x86_64/Packages/libnetfilter_cttimeout-1.0.1-1.oe2309.x86_64.rpm
http://repo.openeuler.org/openEuler-23.09/everything/x86_64/Packages/conntrack-tools-1.4.7-1.oe2309.x86_64.rpm
http://repo.openeuler.org/openEuler-23.09/everything/x86_64/Packages/socat-1.7.4.4-1.oe2309.x86_64.rpm
本地上传 tar
, conntrack
, socat
等依赖的 rpm
包到 ksp1
和 ksp2
主机(即所有集群主机都需要安装)。
rpm -ivh tar-1.35-2.oe2309.x86_64.rpm
rpm -ivh libnetfilter_queue-1.0.5-2.oe2309.x86_64.rpm
rpm -ivh libnetfilter_cthelper-1.0.1-1.oe2309.x86_64.rpm
rpm -ivh libnetfilter_cttimeout-1.0.1-1.oe2309.x86_64.rpm
rpm -ivh conntrack-tools-1.4.7-1.oe2309.x86_64.rpm
rpm -ivh socat-1.7.4.4-1.oe2309.x86_64.rpm
配置准备工作
# 设置2台虚机的主机名
[root@ksp1 ~]# hostnamectl set-hostname ksp1
[root@ksp2 ~]# hostnamectl set-hostname ksp2# 本地上传kubekey的可执行文件kk到ksp1主机,并给执行权限
[root@ksp1 ~]# chmod +x kk# 本地上传config-sample.yaml
# 修改主机、镜像仓库配置信息
[root@ksp1 ~]# vi config-sample.yaml
# 修改了主机信息,控制平面与ETCD的安装节点、工作节点信息
spec:hosts:- {name: ksp1, address: 192.168.44.165, internalAddress: 192.168.44.165, user: root, password: "CloudNative"}- {name: ksp2, address: 192.168.44.166, internalAddress: 192.168.44.166, user: root, password: "CloudNative"}roleGroups:etcd:- ksp1control-plane: - ksp1worker:- ksp2# 设置使用 kk 自动部署镜像仓库的节点registry:- ksp1
初始化本地镜像仓库Harbor
Note:以下内容只需要在主节点上(这里是 ksp1
)执行。
[root@ksp1 ~]# ./kk init registry -f config-sample.yaml -a kubesphere.tar.gz# 查看下Harbor的访问地址:是在ksp1主机的4443端口
[root@ksp1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c0bed2219e6 goharbor/harbor-jobservice:v2.5.3 "/harbor/entrypoint.…" 2 minutes ago Up 2 minutes (healthy) harbor-jobservice
5ef38f5f747b goharbor/nginx-photon:v2.5.3 "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:4443->4443/tcp, :::4443->4443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp nginx
ada4d791a0a5 goharbor/notary-server-photon:v2.5.3 "/bin/sh -c 'migrate…" 2 minutes ago Up 2 minutes notary-server
910ec9c7a994 goharbor/harbor-core:v2.5.3 "/harbor/entrypoint.…" 2 minutes ago Up 2 minutes (healthy) harbor-core
2c587ec2d12e goharbor/trivy-adapter-photon:v2.5.3 "/home/scanner/entry…" 2 minutes ago Up 2 minutes (healthy) trivy-adapter
355a77d9e869 goharbor/notary-signer-photon:v2.5.3 "/bin/sh -c 'migrate…" 2 minutes ago Up 2 minutes notary-signer
26a7772a6668 goharbor/registry-photon:v2.5.3 "/home/harbor/entryp…" 2 minutes ago Up 2 minutes (healthy) registry
75791cb60298 goharbor/harbor-registryctl:v2.5.3 "/home/harbor/start.…" 2 minutes ago Up 2 minutes (healthy) registryctl
4c5d871ba667 goharbor/harbor-portal:v2.5.3 "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes (healthy) harbor-portal
5619f2eb8ce8 goharbor/chartmuseum-photon:v2.5.3 "./docker-entrypoint…" 2 minutes ago Up 2 minutes (healthy) chartmuseum
766b7b856761 goharbor/harbor-db:v2.5.3 "/docker-entrypoint.…" 2 minutes ago Up 2 minutes (healthy) harbor-db
d1c846dba273 goharbor/redis-photon:v2.5.3 "redis-server /etc/r…" 2 minutes ago Up 2 minutes (healthy) redis
e9ade07ea3c3 goharbor/harbor-log:v2.5.3 "/bin/sh -c /usr/loc…" 2 minutes ago Up 2 minutes (healthy) 127.0.0.1:1514->10514/tcp harbor-log
当看到: Local image registry created successfully. Address: dockerhub.kubekey.local
,表示本地镜像仓库初始化成功~,可通过浏览器访问: https://192.168.44.165:4443
验证。
创建Harbor仓库
# 创建以下脚本,用于循环创建Harbor仓库中项目名称(其实,因为用了阿里云镜像,实际只需要场景一个kubesphereio即可)
[root@ksp1 ~]# vi create_project_harbor.sh
#!/usr/bin/env bash
# Copyright 2018 The KubeSphere Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
url="https://dockerhub.kubekey.local" #修改url的值为https://dockerhub.kubekey.local
user="admin"
passwd="Harbor12345"
harbor_projects=(librarykubesphereiokubesphereargoprojcalicocorednsopenebscsipluginminiomirrorgooglecontainersosixiapromthanosiojimmidysongrafanaelasticistiojaegertracingjenkinsweaveworksopenpitrixjoosthofmannginxdemosfluentkubeedgeopenpolicyagent
)
for project in "${harbor_projects[@]}"; doecho "creating $project"curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json" "${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k #curl命令末尾加上 -k
done# 赋予执行权限
[root@ksp1 ~]# chmod +x create_project_harbor.sh# 执行Harbor仓库创建项目的脚本
[root@ksp1 ~]# sh ./create_project_harbor.sh
creating library
{"errors":[{"code":"CONFLICT","message":"The project named library already exists"}]}
creating kubesphereio
creating kubesphere
creating argoproj
creating calico
creating coredns
creating openebs
creating csiplugin
creating minio
creating mirrorgooglecontainers
creating osixia
creating prom
creating thanosio
creating jimmidyson
creating grafana
creating elastic
creating istio
creating jaegertracing
creating jenkins
creating weaveworks
creating openpitrix
creating joosthofman
creating nginxdemos
creating fluent
creating kubeedge
creating openpolicyagent
安装K8S集群与KubeSphere
本地私有镜像仓库 Harbor
成功运行并创建好了项目后,就可以进行离线安装 Kubernetes
与 KubeSphere
集群了。
# 再次编辑config-sample.yaml,配置Harbor的认证信息
[root@ksp1 ~]# vi config-sample.yamlauths:"dockerhub.kubekey.local":username: adminpassword: Harbor12345privateRegistry: "dockerhub.kubekey.local"namespaceOverride: "kubesphereio"# 安装K8S集群与KubeSphere
[root@ksp1 ~]# ./kk create cluster -f config-sample.yaml -a kubesphere.tar.gz
这个过程取决于硬件配置,我花了大概半个小时。
验证集群
- KubeSphere安装成功
- 查看启动了哪些pod
由于 KubeSphere
暴露的服务端口,我们可以在浏览器中直接访问验证:
Console: http://192.168.44.165:30880
Account: admin
Password: P@88w0rd
- KubeSphere资源概览
小总结
本文介绍了如何在 OpenEuler 23.09
操作系统上离线安装 Kubernetes
和 KubeSphere
。首先,需要在一台联网的机器上下载所需的镜像和软件包,制作成离线安装包。然后,在离线环境的虚拟机上,通过配置和安装依赖组件,准备安装环境。接着,使用 KubeKey
工具初始化本地镜像仓库 Harbor
,并创建所需的 Harbor
项目。最后,通过 KubeKey
配置文件,指定 Harbor
认证信息和私有镜像仓库地址,完成 Kubernetes
集群和 KubeSphere
的离线安装。安装成功后,可以通过 KubeSphere
的控制台进行资源管理和操作。本文提供了详细的步骤和脚本,帮助用户在离线环境下顺利部署 Kubernetes
和 KubeSphere
。
Reference
-
https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/introduction/air-gapped-installation/
-
https://github.com/kubesphere/kubekey/releases/tag/v3.0.7
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!
相关文章:
云原生之容器编排实践-OpenEuler23.09离线安装Kubernetes与KubeSphere
背景 有互联网的日子确实美好,不过有时候,仅仅是有时候,你可能会面临离线部署 Kubernetes 与 KubeSphere 集群的要求。。 我们借助由青云开源的容器平台, KubeSphere 来进行可视化的服务部署。 KubeSphere 是在 Kubernetes 之上…...
构建企业数字化转型的战略基石——TOGAF框架的深度解析
数字化时代的企业变革需求 在全球范围内,数字化转型已成为企业提高竞争力、优化运营流程、提升客户体验的核心战略。数字技术的迅猛发展,不仅改变了传统行业的运作模式,也迫使企业重新思考其业务架构和技术基础设施。TOGAF(The O…...
docker -私有镜像仓库 - harbor安装
文章目录 1、镜像仓库简介2、Harbor简介3、下载与安装3.1、下载3.2、安装3.2.1、上传harbor-offline-installer-v2.8.2.tgz到虚拟机中解压并修改配置文件3.2.2、解压tgz包3.2.3、切换到解压缩后的目录下3.2.4、准备配置文件3.2.5、修改配置文件 4、启动Harbor5、启动关闭命令6、…...
头号积木玩家——软件工程专业职业生涯规划报告
说明:本报告为博主在浙江科技学院(现浙江科技大学)就读软件工程本科专业时,在必修课程《计算机导论》中撰写的报告。(报告主体2021年11月定稿,有删改) 标题说明:在电影《头号玩家》…...
Redis(初步认识和安装)
初识Redis 认识NoSQLSQL结构化:structure关联的:RelationalSQL查询ACID NoSQL非结构化无关联的非SQLBASE 认识Redis安装Redis 认识NoSQL SQL和NoSQL比较 SQL 结构化:structure 数据库中表的字段都有固定的结构 关联的:Relati…...
计算机网络:计算机网络概述:网络、互联网与因特网的区别
文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络,若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…...
网络编程套接字TCP
前集回顾 上一篇博客中我们写了一个UDP的echo server,是一个回显服务器:请求是啥,响应就是啥 一个正常的服务器,要做三个事情: 读取请求并解析根据请求,计算响应把响应写回到客户端 DatagramPacket res…...
Git
Git-2.34.1-64-bitGit-2.34.1-64-bitTortoiseGit-2.4.0.2-64bitTortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN 下载Git-2.34.1-64-bit、TortoiseGit-2.4.0.2-64bit、TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN,依次安装。 # 配置本地Git的用户名与邮箱 git c…...
【日常记录】现在遇到的Y7000P亮度无法调节问题,无需改动注册表进行调整的方法。
1、winR 2、输入:services.msc 3、找到下面红框内的服务 4、右键后,点击重启任务,重启任务后,再次按热键即可恢复亮度调节。...
ubuntu20.04.6 触摸屏一体机,外接视频流盒子开机输入登录密码触屏失灵问题解决方法
1. 首先直接运行xrandr命令,查看设备的相关信息: 运行之后会显示当前连接设备的屏幕信息,如下图,LVDS和VGA-0,而HDMI屏幕为disconnect,意为没有连接: 2. 设置开机主屏幕显示: xrand…...
师生健康信息管理:SpringBoot技术指南
第3章 系统分析 3.1 需求分析 师生健康信息管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,…...
手机/平板端 Wallpaper 动态壁纸文件获取及白嫖使用指南
Wallpaper 动态壁纸文件获取及使用指南 目录 壁纸文件获取手机 / 平板使用手机 / 平板效果预览注意事项PC/Mac 使用 1. 壁纸文件获取链接 链接:夸克网盘分享 复制链接到浏览器打开并转存下载即可。 (主页往期视频的 4K 原图和 mpkg 动态壁纸文件…...
【软件工程】模块化思想概述
一、定义 模块化(modularization),也称为模组化,是产品设计以及项目管理中被广泛使用的一种设计理念。 模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部…...
解决方案:机器学习中,出现欠拟合和过拟合,这两种情况分别如何解决
文章目录 一、现象二、解决方案欠拟合(Underfitting)过拟合(Overfitting) 一、现象 在工作中,在机器学习中,出现欠拟合和过拟合的时候,需要有对应的解决方法,所以整理一下 二、解决…...
腾讯 25 届秋招算法工程师面经
最近已有不少大厂都在秋招宣讲了,也有一些在 Offer 发放阶段。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…...
MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置 目录 MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置一、MySQL 软件的下载二、安装 MySQL三、配置 MySQL1、配置环境变量2、安装并启动 MySQL 服务3、设置 MySQL 字符集4、为 root 用户设置登录密码 一…...
开源黑科技!Fish Speech TTS模型完美支持8种语言
开源黑科技!Fish Speech TTS模型完美支持8种语言 Fish Speech是一款神奇的AI语音克隆工具🎤,可快速模仿用户声音,支持八种语言🌍,简单易用,适合所有人👶。它在客服、新闻播报和在线…...
算法知识点————数论和链表
1、n数和 2数和 有序(递增):头尾相加,和目标值比较无序:哈希表(target - cur) 多数和: 先排序 拿一个数(检测 i 和i-1 重复的不选择) 2数和问题 &am…...
NASA:ATLAS/ICESat-2 L3B 每日和每月网格极地海面高度异常 V003
目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Daily and Monthly Gridded Polar Sea Surface Height Anomaly V003 ATLAS/ICESat-2 L3B 每日和每月网格极地海面高度异常 V003 简介 ATLAS/ICESat-2 L3B Daily and Monthly G…...
Java类设计模式
1、单例模式 核心:保证一个类只有一个对象,并且提供一个访问该实例的全局访问点 五种单例模式:主要:饿汉式:线程安全,调用效率高,不能延时加载懒汉式:线程安全,调用效率…...
Valhalla实现 使用Docker部署利用OSM(Mapbox)地图实现路径规划详细步骤
一. Valhalla基本概念 1. 背景介绍: 官网介绍文档:https://valhalla.github.io/valhalla/ Valhalla是一个开源的路由引擎,能够实现实时路径规划,处理大量请求返回最优路径。 基于 OSM 数据,结合灵活的多模式交通方式…...
blender解决缩放到某个距离就不能继续缩放
threejs中也存在同样的问题,原因相同,都是因为相机位置和相机观察点距离太近导致的。 threejs解决缩放到某个距离就不能继续缩放-CSDN博客 blender中的解决方案 1、视图中心->视图锁定->选择你想看的物体...
2022浙江省赛G I M
G - Easy Glide 题意 思路 由于数据范围比较小(1e3),把所有的移动的时间转化为图论上的边权就可以了,再用dijkstra解决,注意如果用的是邻接表存的话要建双向边 代码 #include <map> #include <set> #include <queue> #include <…...
数据链路层 ——MAC
目录 MAC帧协议 mac地址 以太网帧格式 ARP协议 ARP报文格式编辑 RARP 其他的网络服务或者协议 DNS ICMP协议 ping traceroute NAT技术 代理服务器 网络层负责规划转发路线,而链路层负责在网络节点之间的转发,也就是"一跳"的具体传输…...
在java中都是如何实现这些锁的?或者说都有哪些具体的结构实现
在Java中,多种锁机制的实现依赖于不同的类和接口。以下是一些常见的锁机制及其在Java中的具体实现: 1. 互斥锁(Mutex) 实现方式:Java中的互斥锁可以通过synchronized关键字或ReentrantLock类来实现。synchronized关键…...
用CSS创造三角形案例
6.3.2 用CSS创造三角形 用div来创建,角上是平分的,所以要是内部宽高为0,其他边透明,正好是三角形。 代码 div {border: 12px solid;width: 0;height: 0;border-color: transparent red transparent transparent; } 与伪元素aft…...
matlab-对比两张图片的Ycbcr分量的差值并形成直方图
%对比两张图片的Ycbcr分量的差值并形成直方图,改个路径就能用,图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); ycbcr1 rgb2ycbcr(I1); ycbcr2 rgb2ycbcr(I2); % …...
Chromium 使用安全 DNS功能源码分析c++
一、选项页安全dns选项如下图: 二、那么如何自定义安全dns功能呢? 1、先看前端部分代码调用 shared.rollup.jsclass PrivacyPageBrowserProxyImpl {.................................................................getSecureDnsResolverList() {re…...
10.1 刷题
C语言 C...
车辆重识别(2021ICML改进的去噪扩散概率模型)论文阅读2024/9/29
所谓改进的去噪扩散概率模型主要改进在哪些方面: ①对数似然值的改进 通过对噪声的那个方差和T进行调参,来实现改进。 ②学习 这个参数也就是后验概率的方差。通过数据分析,发现在T非常大的情况下对样本质量几乎没有影响,也就是说…...
在线手机网站制作/沧州网站推广优化
一个bug解决: 有时在Vue工程中写es6语法代码会报regeneratorRuntime is not defined的错误,此时可通过下面方式解决: 下载npm install --save-dev babel-polyfill在webpack.config.js中写var babelpolyfill require("babel-polyfill&qu…...
做网站可以申请专利吗/各大网站推广平台
目录 模块 模块的使用 if __name__ "__main__": 包 模块 当代码量很大的时候,我们不可能把所有的代码写在一个文件中,所以这时候就需要分多个.py文件进行写代码。一个.py文件就是一个模块。如文件名为main.py,那么模块名就为…...
做伊瑞尔竞技场的网站/网络营销的概述
解决方案: 1、尝试用绝对函数方法调用: 如 local a A.a or {}; function a:Max(pa, pb) end--使用方法: A.a:Max(1,2); 2.那就还说明一个问题,该函数没注册上,看看是不是写函数时头文件未包含,又或者敲代…...
承德做网站设计的/百度云资源链接分享群组
实现的思想: 1、当鼠标放在图片上面的时候触发mouseover mouseenter两个事件(图片变得透明)2、当鼠标离开图片的时候触发mouseleave mouseout两个事件(图片变为不透明) <!DOCTYPE html PUBLIC "-//W3C//DTD …...
苏州公司建站/网络推广需要多少钱
Http1.0 、Http1.1 、Http2.0区别 长连接和短链接 在解释区别之前,我们要先理解TCP的长连接和短链接: **短链接:**你朋友给你发信息拉你打游戏(发送连接请求),你说行(应答)…...
建设网站的企业邮箱网站建设服务/新闻头条 今天
HTML5提供了许多新接口,其中最令人振奋的无疑是Websocket。正是它的存在令网络双向交互得以实现。使用Websocket对于客户端来说无疑十分简单。websocket提供了三个简单的函数,onopen,onclose以及onmessage,顾名思义,他们分别监听s…...