二. Docker/分布式部署/分布式集群
1.CentOS + JDK + Tomcat制作镜像
在制作镜像时,有若干种方法,比如通过通过Dockerfile或者是docker commit等,这里我们采用前者即通过Dockerfile来制作镜像
在这一部分,需要:①知道拉取基础镜像,②清楚维护者信息,③构建镜像时执行的命令有哪些,④运行容器后执行的命令有哪些
①准备docker镜像(空白)拉取:
docker pull centos
②维护者信息通过命令MAINTAINER
③构建镜像时执行的命令
ADD COPY ENV RUN
④运行容器后执行的命令
CMD ENTPOINT
FROM centos:latest # 拉取 MAINTAINER MYSTUID_IS_3315 # 维护者信息以学号标示 RUN mkdir _path # 构建镜像时创建目录 _path(比如/usr/local/Contest) mkdir为常用命令,其余常用命令应有所了解 RUN mkdir _path # 构建镜像时创建目录 _path(比如/usr/local/Contest) mkdir为常用命令,其余常用命令应有所了解
将本地文件 JDK复制到 _path 下
这里复制有两个命令:
ADD && COPY
ADD有时无法通过COPY来代替,但是ADD是可以替代COPY的
最好使用ADD命令,优点如下:
可以对本地文件进行提取和解压缩
可以根据URL(如果注明为http://必须使用ADD)从远程来进行拉取下载,但是注意此时不会进行提取和解压缩
ADD _sourcePath _targetPath
_sourcePath为源路径,可以是URL
_targetPath为目标路径
如果说_sourcePath是一个URL(网络文件),则不会自动解压,需要添加命令进行命令解压
RUN tar -zxvf _localPath -C _targetPath
_localPath为本地目录
_targetPath为目标路径,即要放到哪里
COPY只能是在本地进行
这时就要分两步进行:
①拷贝 ②解压缩
COPY _sourcePath _targetPath
_sourcePath为源路径
_targetPath为目标路径
RUN tar -zxvf _localPath -C _targetPath
_localPath为本地目录
_targetPath为目标路径,即要放到哪里
这里要注意,如果告知为本地当前文件即和Dockerfile在同一个目录下,则不需要添加路径,也就是_localPath为一个文件名;如果说和Dockerfile不在同一个目录下,则需要加上一个绝对路径标示源文件所在地
再加上Tomcat,和JDK思路相同(根据要求决定用COPY还是ADD)
样例项目文件放到指定路径下,(可以是自己打的jar包这里以 a.jar为例)
ADD a.jar _targetPath 这里_targetPath为指定目录以/opt为例则是:
ADD a.jar /opt
RUN chmod +x /opt/a.jar 添加可运行的权限
运行:
CMD java -jar /opt/a.jar # java -jar为基础的Java运行jar包的命令
到此,Dockerfile编辑完毕
通过命令来执行镜像的生成:
docker build -t _imageName .
其中_imageName为镜像的名字,==一定一定不要忘记最后的小点儿 == . \ \ \ \ \ . .
如果说添加的不是一个jar包,或者是说样例项目文件不是一个jar而是一个脚本(.sh),可以参考之前博客:传送门
单独记一下CMD命令的格式
CMD 系统命令
CMD [“/bin/sh”,“-c”,“targetFile.sh”]
其中/bin/sh为脚本的解释器,-c为参数,taragetFile.sh为脚本文件
2.k8s中部署已有镜像
通过上面的操作:
我们已经得到了镜像名为 _imageName的镜像
部署的命令:
kubectl create deployment 部署的名字 --image=镜像名
也就是
kubectl create deployment 部署的名字 --image=_imageName
暴露接口:
kubectl expose deploy 部署的名字 --port=80 --type=NodePort
port为指定暴露的端口
查询外部访问接口:
kubectl get service
upd:2022-06-13 20:46
三 . 云计算资源管理
1.Mesos 分布式计算资源管理框架(本身不计算)
主机名 | ip addr | Mesos | Yarn | Spark |
Slave | NodeManager | Master | ||
Master | ResourceManager | Worker |
不一定是这么对应的,只是说明了包含关系
Mesos包含Master和Slave
Yarn包含NodeManager 和 ResourceManager
Spark包含Master 和 Worker
k8s是Master Node
2. Openstack
openstack的服务架构:
这里要注意对象存储和块存储的定义区别适用场景
有哪些服务,服务又是属于哪个项目
一键部署的时候,怎么设置参数
配置文件 answer.txt参数修改
[general]
CONFIG_SSH_KEY=/localhost/.ssh/id_rsa.pub
CONFIG_DEFAULT_PASSWORD=123456
CONFIG_SERVICE_WORKERS=%{::processorcount}
CONFIG_MARIADB_INSTALL=y
CONFIG_GLANCE_INSTALL=y
CONFIG_CINDER_INSTALL=y
CONFIG_MANILA_INSTALL=n
CONFIG_NOVA_INSTALL=y
CONFIG_NEUTRON_INSTALL=y
CONFIG_HORIZON_INSTALL=y
CONFIG_SWIFT_INSTALL=y
CONFIG_CEILOMETER_INSTALL=y
CONFIG_AODH_INSTALL=y
CONFIG_GNOCCHI_INSTALL=y
CONFIG_SAHARA_INSTALL=n
CONFIG_HEAT_INSTALL=n
CONFIG_TROVE_INSTALL=n
CONFIG_IRONIC_INSTALL=n
CONFIG_CLIENT_INSTALL=y
CONFIG_NTP_SERVERS=
CONFIG_NAGIOS_INSTALL=y
EXCLUDE_SERVERS=
CONFIG_DEBUG_MODE=n
CONFIG_CONTROLLER_HOST=一个ip地址
CONFIG_COMPUTE_HOSTS=一个ip地址
CONFIG_NETWORK_HOSTS=一个ip地址
如有错误请私信或者是留言,谢谢合作