Kubernetes(K8S)学习笔记
K8S介绍什么是K8S? 它是一个为 容器化 应用提供集群部署和管理的开源工具,由 Google 开发。Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。
主要特性:
高可用,不宕机,自动灾难恢复
灰度更新,不影响业务正常运转
一键回滚到历史版本
方便的伸缩扩展(应用伸缩,机器加减)、提供负载均衡
有一个完善的生态
不同的应用部署方案
传统部署方式:应用直接在物理机上部署,机器资源分配不好控制,出现Bug时,可能机器的大部分资源被某个应用占用,导致其他应用无法正常运行,无法做到应用隔离。
虚拟机部署:在单个物理机上运行多个虚拟机,每个虚拟机都是完整独立的系统,性能损耗大。
容器部署:所有容器共享主机的系统,轻量级的虚拟机,性能损耗小,资源隔离,CPU和内存可按需分配。
什么时候需要 Kubernetes?
当你的应用只是跑在一台机器,直接一个 docker + docker-compose 就够了,方便轻松;
当你的应用需要跑在 3, ...
Yolov5-部署踩坑
路径问题
Windows系统和Linux系统中的路径符不同,尽量使用Python自带的库来连接路径。如:
1os.path.join(sourceFile, file)
parse_opt问题
原代码,部署到Linux后可能出现程序卡住的问题(会有问题)
12345678910111213141516171819202122232425262728293031def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path(s)') parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/di ...
Git实战样例
VSCode普通提交初始页面
提交到本地
点击提交后,提交到本地暂存区
提交到远程
创建分支并发布创建分支
点击当前分支,并创建分支
开发分支
发布分支
基于其他分支开发创建
命名
开发并发布分支
合并其他分支到当前分支
开发中,突然有人产生了新的分支,但自己还没开发完成,则需要将他人的开发合并到自己的当前分支中
一个新分支
他人产生了一个新分支,包含一个新文件
合并该新分支到我的分支
当前我开发的分支
合并分支(可多次合并)
成功
分支重命名
ctrl+shift+p打开面板,并输入rename
冲突解决被合并分支
合并分支(发生冲突)
提交更改,发现冲突
解决,并加入暂存区
PyCharm普通提交
功能展示
其中,rebase为变基。”变基(rebaseQ)”是一个Git操作,它可以将当前分支的修改应用到另一个分支上。具体来说,变基操作会把当前分支的修改,按照提交时间顺序依次应用到指定的目标分支上,从而将两个分支上的修改整合成一个新的提交历史。
例如,假设您有一个本地分支 ...
离线安装Docker与部署项目.
离线安装Docker下载离线安装包
前往https://download.docker.com/linux/static/stable/x86_64/下载(在系统输入`arch`命令,显示`x86_64`则为`amd`,否则为`arm`),可直接[点击下载](https://download.docker.com/linux/static/stable/x86_64/docker-20.10.16.tgz)
拷贝到linux下的某个文件夹下,如/home/xlh/docker-20.10.16.tgz,然后输入以下命令解压:
1tar -zxvf docker-20.10.16.tgz
输入以下命令将解压后的文件拷贝到系统目录下:
1cp -p docker/* /usr/bin
注册系统服务
在/etc/systemd/system/目录下,创建docker.service文件
编辑该文件,添加如下内容:
12345678910111213141516171819202122[Unit]Description=Docker Application Container En ...
Docker部署Vue项目
类型一 由于本项目默认使用yarn(和npm类似都是包管理工具),因此需要先安装yarn(npm install -g yarn)
Build
打包前,保证项目包安装好了,且能运行
首先执行build指令,编译出dist文件夹内容,本项目指令为:
1yarn build
编写Dockerfile
12345678910111213141516# 使用官方的 Node.js 镜像作为基础镜像FROM nodeRUN mkdir /app# 设置工作目录WORKDIR /app# 复制 dist 文件夹到工作目录COPY dist/ .# 暴露端口(如果需要的话)# EXPOSE 3000# 定义容器启动命令,使用 yarn serve 启动项目CMD ["yarn", "serve"]
将dist目录和Dockerfile文件拷贝到linux对应目录下,如下
12root@ubuntu:/home/xlh/estimate_web# lsdist Dockerfile
编译生成镜像
1docker build -t esti ...
Docker部署Neo4j
拉取镜像
如果使用java1.8,最好使用neo4j 3.5以下版本
1docker pull neo4j:3.4.9
创建示例
1docker run -d --name estimate_neo4j -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/root neo4j:3.4.9
-d 表示在后台运行容器。
--name myneo4j 指定容器的名称为 myneo4j。
-p 7474:7474 -p 7687:7687 将 Neo4j 的 HTTP 和 Bolt 协议端口映射到主机的对应端口,使得可以通过主机访问 Neo4j 服务。
-e NEO4J_AUTH=neo4j/<your_password> 设置 Neo4j 的认证信息。将 <your_password> 替换为实际的密码。
neo4j:4.3 指定使用的 Neo4j 镜像版本。
防火墙问题
若其他网络的主机无法访问相关接口,使用如下命令:
1iptables -A INPUT -p tcp --dport <your_por ...
Docker部署Maven项目
打包maven项目
如下图所示操作,打包项目为jar文件
查看jar包如下,在目录下执行java -jar demo-0.0.1-SNAPSHOT.jar命令进行测试
开始
编写Dockerfile,如下
123456789101112131415FROM openjdk:8-jreRUN mkdir /appRUN mkdir /home/spider_resultWORKDIR /appCOPY demo-0.0.1-SNAPSHOT.jar /app/app.jar# 暴露容器的端口,Spring Boot 默认端口为 9090EXPOSE 9090# 运行 Spring Boot 应用程序ENTRYPOINT ["java", "-jar", "app.jar"]
将jar包和Dockerfile文件拷贝到linux下的某个目录下,例如
12root@ubuntu:/home/xlh/estimate_code# lsdemo-0.0.1-SNAPSHOT.jar Dockerfile
在该 ...
Docker部署Flask项目
导出依赖正常情况
激活虚拟环境
1conda activate target_detect
导出依赖包
1234# 第一种(推荐),不包括那些未被安装但已在系统路径中的包pip list --format=freeze > requirements.txt# 第二种,包括那些未被显式安装但已在系统路径中的包pip freeze > requirements.txt
异常情况
大量出现依赖冲突时,可以在linux中用个docker实例来让项目能在虚拟环境中运行,再按正常情况导出依赖
123456# 搜索镜像docker search anaconda# 拉取镜像docker pull continuumio/anaconda3# 查看镜像docker images
12345678# 实例化镜像并启动# -i: 以交互模式运行容器,通常与 -t 同时使用;# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口# -d: 让Docker容器以守护形式在后台运行。并且容器所运行的程序不能结束。d ...
Docker安装Mysql并导入数据
导出数据进入MySQL安装目录下的bin文件夹,并进入cmd中。接着输入指令如下,即可导出某个数据库的所有数据:
1E:\MySQL Server 5.7\bin>mysqldump -u root -p my_database > D:\backUp.sql
其中,root为用户名,my_database为数据库名,D:\backUp.sql为导出的sql文件
若只导出单张表数据及结构,则可:
1E:\MySQL Server 5.7\bin>mysqldump -u root -p my_database user > D:\one.sql
其中,user为表名
安装镜像
这里安装mysql5.7的版本,如下:
1docker pull mysql:5.7
创建实例
执行指令如下
1docker run -itd --name estimate_mysql5.7 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
-itd: 这是三个选项的结合:
-i 表示交互式操作,通常与 -t(终 ...
Anaconda手动安装第三方包
查找并下载
进入网站:https://pypi.org/
搜索对应的包并下载tar压缩包或whl文件
导入tar格式
找到虚拟环境并激活,将tar文件解压到任意目录下(如/pyds2021-0.9)
使用conda命令工具进入该目录
执行命令:python setup.py install
执行命令:python setup.py build
如果提示缺失部分包,最终没有安装成功,则需要打开setup.py查看其所需要的依赖,并安装;
whl格式
找到虚拟环境并激活,找到该文件位置
执行命令:pip install xxx.whl
部分包手动安装失败
找到该包中的setup.py文件,找到其中所依赖的包,下载这些包满足条件后,再手动安装本python包