Rancher 2.4.3 - HA 部署高可用k8s集群-程序员宅基地

一、概述

对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server。当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kubernetes 调度实现高可用。

为确保高可用,本文所部署的 Kubernetes 集群将专用于运行 Rancher ,Rancher 运行起来后,可再创建或导入集群以运行具体的工作负载。

 

推荐架构

  • Rancher的DNS 应解析到 4层(TCP) 负载均衡上。
  • 负载均衡应将端口 TCP/80 和 TCP/443 转发到 Kubernetes 集群中的所有3个节点。
  • Ingress-controller 将 HTTP 重定向到HTTPS并终止端口 TCP/443 上的 SSL/TLS(SSL数字证书在这里部署)。
  • Ingress-controller 将流量转发到 pod 的 TCP/80 端口。

下面是一张从官网拉过来的图片,更直观一些。

 

二、准备工作

服务器准备

  • 1台 Linux服务器,配置不用很高,用于四层负载均衡
  • 3台 Linux服务器,Rancker-server-node 节点
  • n台 Linux服务器,Rancker-agent-node 节点(n<=50)

节点服务器的硬件配置,可根据实际情况依据该表自行选择。

规模 集群 节点 CPU 内存
最多5个 高达50 2 8 GB
最多15个 最多200 4 16 GB
高达50 最多500个 8 32 GB
超大 最多100个 高达1000 32 128 GB
更大规模 100+ 1000+ 联系 Rancher 联系 Rancher

 

 

 

 

 

 

 

 

环境说明

服务器使用本地的EXSI,虚拟机具体配置如下:

主机名称 系统版本 内网ip 配置
rancher-01 CentOS 7.6 10.212.22.32 2核3g
rancher-02 CentOS 7.6 10.212.22.23 2核3g
rancher-03 CentOS 7.6 10.212.20.97 2核3g
rancher-slb CentOS 7.6 10.212.20.213 1核1g

 

 

 

 

 

 

 

注意:如果云服务器,比如阿里云,腾讯云,AWS等等。不需要rancher-slb服务器,直接TCP转发到rancher后端即可。

 

centos7 永久修改主机名,使用命令:

hostnamectl set-hostname xxx

其中xxx表示你要设置的主机名,执行完成之后,退出,重新登录一次,就可以了。

 

docker安装

关于docker安装,请参考链接:

https://www.cnblogs.com/xiao987334176/p/11771657.html

 

安装RKE 

Rancher Kubernetes Engine(RKE)是一款轻量级Kubernetes安装程序,支持在裸机和虚拟化服务器上安装Kubernetes。 RKE解决了Kubernettes社区中的一个常见问题,比如:安装复杂性。RKE支持多种平台运行,比如MacOS,linux,windows。

这里在rancher-01上安装rke:

 

1、下载二进制文件

https://github.com/rancher/rke/releases/latest

目前稳定版本为v1.0.8

 

 

下载文件

 

 下载安装

wget https://github.com/rancher/rke/releases/download/v1.0.8/rke_linux-amd64
chmod +x rke_linux-amd64
mv rke_linux-amd64 /usr/bin/
rke_linux-amd64 --version

 

注意:此文件安装的k8s版本为v1.17.5

 

安装kubectl

kubectl是一个CLI命令行工具,用于运行Kubernetes集群的命令。Rancher 2.x中的许多维护和管理都需要它。

这里在rancher-01上安装kubectl:

https://storage.googleapis.com/kubernetes-release/release/v1.17.0/kubernetes-client-linux-amd64.tar.gz

注意:此链接必须在访问谷歌的电脑上面才行下载。

我已经上传到百度网盘了,下载链接如下:

链接:https://pan.baidu.com/s/1WbuaTIJGBSNP5CgRIq75Bw
提取码:f77i

 

解压,并放到path路径下

tar zxvf kubernetes-client-linux-amd64.tar.gz -C /usr/src/
cp /usr/src/kubernetes/client/bin/kubectl /usr/bin/kubectl
chmod +x /usr/bin/kubectl

 

配置kubectl的shell补全

CentOS Linux上,您可能需要安装默认情况下未安装的bash-completion软件包。

yum install bash-completion -y

运行source <(kubectl completion bash)可将kubectl自动补全添加到当前shell,要使kubectl自动补全命令自动加载:

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

退出,重新登录一下即可。

 

三、使用 RKE 安装 kubernetes

下面使用 RKE(Kubernetes Engine) 安装高可用的 Kubernetes。

NODE-SERVER 之间建立 ssh 信任

我们目前有三台服务器用作 local 集群,首先要确保我们主机能够通过 ssh 访问到另外两台主机并执行相关操作。

创建用户rancher

注意:使用rke安装kubernetes时,不能以root用户执行。必须是一个普通用户才行!!!

rancher-01,rancher-02,rancher-02执行以下命令:

useradd rancher
passwd rancher

 

授权docker权限

rancher-01,rancher-02,rancher-02执行以下命令:

使用root账号登录

#将登陆用户develop加入到docker用户组中
gpasswd -a rancher docker
#更新用户组
newgrp docker

 

切换到rancher用户进行测试

su rancher
docker ps

输出正常,则表示成功了。

 

ssh信任

rancher-01,rancher-02,rancher-02执行以下命令:

# su rancher
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

 

复制公钥

rancher-01上执行

注意:以rancher用户执行。

$ ssh-copy-id 10.212.22.32
$ ssh-copy-id 10.212.22.23
$ ssh-copy-id 10.212.20.97

 

测试ssh免密

rancher-01上执行

注意:以rancher用户执行。

$ ssh 10.212.22.32
$ ssh 10.212.22.23
$ ssh 10.212.20.97

 

编写 rancher-cluster.yml 文件

这里需要注意,这个文件没有明确配置rsa文件名,默认会使用 $HOME/.ssh/id_rsa 建立连接。内容如下

rancher-01上执行

注意:以rancher用户执行。

$ vi rancher-cluster.yml

内容如下:

nodes:
  - address: 10.212.22.32
    internal_address: 10.212.22.32
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: rancher-01
  - address: 10.212.22.23
    internal_address: 10.212.22.23
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: rancher-02
  - address: 10.212.20.97
    internal_address: 10.212.20.97
    user: rancher
    role: [controlplane,worker,etcd]
    hostname_override: rancher-03

services:
  etcd:
    backup_config:
        enabled: true
        interval_hours: 6
        retention: 60
View Code

备注:
address 公共域名或IP地址
user 可以运行docker命令的用户
role 分配给节点的Kubernetes角色列表
internal_address 内部集群通信的私有域名或IP地址
开启了etcd的备份机制,每隔6小时备份一次,保存60天数据

 

运行 RKE 构建 kubernetes 集群

rancher-01上执行

注意:以rancher用户执行。

$ rke_linux-amd64 up --config ./rancher-cluster.yml

输出如下:

INFO[0000] Running RKE version: v1.0.8                  
INFO[0000] Initiating Kubernetes cluster                
INFO[0000] [dialer] Setup tunnel for host [10.212.20.97] 
INFO[0000] [dialer] Setup tunnel for host [10.212.22.32] 
INFO[0000] [dialer] Setup tunnel for host [10.212.22.23] 
INFO[0000] Checking if container [cluster-state-deployer] is running on host [10.212.22.32], try #1 
INFO[0000] Image [rancher/rke-tools:v0.1.56] exists on host [10.212.22.32] 
...
INFO[0128] [ingress] ingress controller nginx deployed successfully 
INFO[0128] [addons] Setting up user addons              
INFO[0128] [addons] no user addons defined              
INFO[0128] Finished building Kubernetes cluster successfully 
View Code

以上输出,表示安装成功了。

 

执行成功会在当前目录生成2个文件,分别是rancher-cluster.rkestate和kube_config_rancher-cluster.yml

文件说明

rancher-cluster.yml:RKE集群配置文件。
kube_config_rancher-cluster.yml:群集的Kubeconfig文件,此文件包含完全访问群集的凭据。
rancher-cluster.rkestate:Kubernetes群集状态文件,此文件包含完全访问群集的凭据。

 

错误集锦

WARN[0000] Failed to set up SSH tunneling for host [10.212.20.97]: Can't retrieve Docker Info: error during connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info: Unable to access node with address [10.212.20.97:22] using SSH. Please check if you are able to SSH to the node using the specified SSH Private Key and if you have configured the correct SSH username. Error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain 

ssh信任没有做好,请确保是普通用户执行rke_linux-amd64。不能是root用户

 

Failed to get job complete status for job rke-network-plugin-deploy-job in namespace kube-system

重新执行一遍 rke_linux-amd64 up --config ./rancher-cluster.yml即可。

 

设置环境变量

rancher-01上执行

注意:以rancher用户执行。

mkdir ~/.kube
cp kube_config_rancher-cluster.yml ~/.kube/config
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml

 

查看node

$ kubectl get nodes
NAME         STATUS   ROLES                      AGE   VERSION
rancher-01   Ready    controlplane,etcd,worker   43m   v1.17.5
rancher-02   Ready    controlplane,etcd,worker   43m   v1.17.5
rancher-03   Ready    controlplane,etcd,worker   43m   v1.17.5

 

如果需要root用户执行kubectl,切换到root用户,执行以下命令

mkdir ~/.kube
cp /home/rancher/kube_config_rancher-cluster.yml ~/.kube/config
export KUBECONFIG=~/.kube/config

 

测试kubectl命令

# kubectl get pods
No resources found in default namespace.
[root@rancher-master-01 ~]# kubectl get pods -A
NAMESPACE       NAME                                      READY   STATUS      RESTARTS   AGE
ingress-nginx   default-http-backend-67cf578fc4-r4cgs     1/1     Running     0          41m
ingress-nginx   nginx-ingress-controller-8ck28            1/1     Running     0          41m
ingress-nginx   nginx-ingress-controller-crw7r            1/1     Running     0          41m
ingress-nginx   nginx-ingress-controller-s5zkp            1/1     Running     0          41m
kube-system     canal-5fhpj                               2/2     Running     0          42m
kube-system     canal-m5ww5                               2/2     Running     0          42m
kube-system     canal-mzqkg                               2/2     Running     0          42m
kube-system     coredns-7c5566588d-89ztq                  1/1     Running     0          42m
kube-system     coredns-7c5566588d-xdwg6                  1/1     Running     0          40m
kube-system     coredns-autoscaler-65bfc8d47d-pbc5t       1/1     Running     0          42m
kube-system     metrics-server-6b55c64f86-bfrcb           1/1     Running     0          41m
kube-system     rke-coredns-addon-deploy-job-npdcf        0/1     Completed   0          42m
kube-system     rke-ingress-controller-deploy-job-pqkpl   0/1     Completed   0          41m
kube-system     rke-metrics-addon-deploy-job-5nd4r        0/1     Completed   0          42m
kube-system     rke-network-plugin-deploy-job-cvxnv       0/1     Completed   0          42m
View Code

 

四、安装和配置Helm

Helm是Kubernetes首选的包管理工具。Helmcharts为Kubernetes YAML清单文档提供模板语法。使用Helm,可以创建可配置的部署,而不仅仅是使用静态文件。Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。

配置Helm客户端访问权限

rancher-01上执行,下面提到的所有命令,都可以在root用户执行了。

 

kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller \
--clusterrole cluster-admin --serviceaccount=kube-system:tiller

备注:在kube-system命名空间中创建ServiceAccount;创建ClusterRoleBinding以授予tiller帐户对集群的访问权限;helm初始化tiller服务

 

安装Helm客户端

wget https://get.helm.sh/helm-v2.16.6-linux-amd64.tar.gz
tar zxvf helm-v2.16.6-linux-amd64.tar.gz -C /usr/src/
cp /usr/src/linux-amd64/helm /usr/local/bin/

 

安装Helm服务端(Tiller)

helm_version=`helm version |grep Client | awk -F""\" '{print $2}'`
helm init  \
--service-account tiller --skip-refresh \
--tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:$helm_version 

备注:
1、RKE默认启用RBAC,所以在安装tiller时需要指定ServiceAccount。
2、helm init在缺省配置下,会去谷歌镜像仓库拉取gcr.io/kubernetes-helm/tiller镜像,在Kubernetes集群上安装配置Tiller;由于在国内可能无法访问gcr.io、storage.googleapis.com等域名,可以通过--tiller-image指定私有镜像仓库镜像。 
3、helm init在缺省配置下,会利用https://kubernetes-charts.storage.googleapis.com作为缺省的stable repository地址,并去更新相关索引文件。在国内可能无法访问storage.googleapis.com地址, 可以通过--stable-repo-url指定chart国内加速镜像地址。 
4、如果您是离线安装Tiller, 假如没有内部的chart仓库, 可通过添加--skip-refresh参数禁止Tiller更新索引。

 

Helm安装Rancher

添加Chart仓库地址

helm repo add rancher-stable \
https://releases.rancher.com/server-charts/stable

 

配置SSL

注意:rancher默认使用https访问,因此,需要有一个公网的SSL才行。我在阿里云上面买了一个通配符的SSL证书。

将证书上传到rancher-01

rancher-01上执行

创建secret

kubectl create ns cattle-system
kubectl -n cattle-system create secret tls tls-rancher-ingress --cert=./214563317320547.pem --key=./214563317320547.key

 

通过helm安装rancher

helm install rancher-stable/rancher   --name rancher   --namespace cattle-system   --set hostname=rancher.baidu.com   --set ingress.tls.source=secret 

注意:这里指定了hostname=rancher.baidu.com,必须使用域名访问才行。

 

查看pod,确保运行正常

# kubectl get pods -A
NAMESPACE       NAME                                      READY   STATUS      RESTARTS   AGE
cattle-system   rancher-66b5cfc7f5-6wbhq                  0/1     Running     1          100s
cattle-system   rancher-66b5cfc7f5-9p98v                  1/1     Running     0          100s
cattle-system   rancher-66b5cfc7f5-zs7qc                  0/1     Running     1          100s
ingress-nginx   default-http-backend-67cf578fc4-r4cgs     1/1     Running     0          71m
ingress-nginx   nginx-ingress-controller-8ck28            1/1     Running     0          71m
ingress-nginx   nginx-ingress-controller-crw7r            1/1     Running     0          71m
ingress-nginx   nginx-ingress-controller-s5zkp            1/1     Running     0          71m
kube-system     canal-5fhpj                               2/2     Running     0          71m
kube-system     canal-m5ww5                               2/2     Running     0          71m
kube-system     canal-mzqkg                               2/2     Running     0          71m
kube-system     coredns-7c5566588d-89ztq                  1/1     Running     0          71m
kube-system     coredns-7c5566588d-xdwg6                  1/1     Running     0          70m
kube-system     coredns-autoscaler-65bfc8d47d-pbc5t       1/1     Running     0          71m
kube-system     metrics-server-6b55c64f86-bfrcb           1/1     Running     0          71m
kube-system     rke-coredns-addon-deploy-job-npdcf        0/1     Completed   0          71m
kube-system     rke-ingress-controller-deploy-job-pqkpl   0/1     Completed   0          71m
kube-system     rke-metrics-addon-deploy-job-5nd4r        0/1     Completed   0          71m
kube-system     rke-network-plugin-deploy-job-cvxnv       0/1     Completed   0          71m
kube-system     tiller-deploy-9d74c75cf-7blmd             1/1     Running     0          18m
View Code

 

访问页面

由于没有DNS服务器,这里直接在windows10添加一条记录。

10.212.22.32  rancher.baidu.com

注意:这里ip地址rancher-01地址,其实,设置为rancher-02或者rancher-03都是能访问的。

 

访问页面

https://rancher.baidu.com

效果如下:

设置一个强密码

 

 

确定访问地址

 

 

设置中文

 

 

查看local集群

 

 

查看主机

 

 

五、负载均衡配置

登录rancher-slb节点,安装nginx

yum install -y nginx

 

修改nginx.conf

vi /etc/nginx/nginx.conf

完整内容如下:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 8192;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    server {
        listen         80;
        return 301 https://$host$request_uri;
    }
}
stream {
    upstream rancher_servers {
        least_conn;
        server 10.212.22.32:443 max_fails=3 fail_timeout=5s;
        server 10.212.22.23:443 max_fails=3 fail_timeout=5s;
        server 10.212.20.97:443 max_fails=3 fail_timeout=5s;
    }
    server {
        listen     443;
        proxy_pass rancher_servers;
    }
}

上面红色部分,就是核心配置。

 

重新加载

nginx
nginx -s reload

 

修改windows10的hosts记录,指向为rancher-slb节点ip

10.212.20.213  rancher.baidu.com

 

刷新页面,能正常访问,说明成功了。

 

 

本文参考链接:

https://blog.51cto.com/bilibili/2440304

https://blog.51cto.com/liuzhengwei521/2398244

https://www.cnblogs.com/xzkzzz/p/9995956.html

https://www.cnblogs.com/kelsen/p/10836332.html

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shykevin/article/details/106417622

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文