基于Kubernetes、Docker的机器学习微服务系统设计系列——(八)部署配置
内容提要Docker镜像制作K8S RC创建K8S Service创建 本篇主要介绍Docker镜像的制作、RC和Service的创建。Docker镜像制作 下面以segment微服务为例描述Docker镜像制作过程。微服务配置文件config.properties内容:#restful API configlisten.ip=0.0.0.0listen.port=8081...
·
基于Kubernetes、Docker的机器学习微服务系统设计 | |||||
---|---|---|---|---|---|
实践篇 | (1)概念与构想 | (二)架构与部署 | (三)微服务框架 | (四)中文分词 | (五)预处理 |
(六)特征选择 | (七)分类器微 | (八)部署配置 | (九)应用服务 | (十)数据可视化 | |
研究篇 | RS中文分词 | MP特征选择 | NLV文本分类 | 快速kNN | 文本分类 |
本篇主要介绍Docker镜像的制作、RC和Service的创建。
Docker镜像制作
下面以segment微服务为例描述Docker镜像制作过程。
微服务配置文件config.properties内容:
#restful API config
listen.ip=0.0.0.0
listen.port=8081
#mirco server config
mircoServer.name=segment
jar.path=file:segment-1.0.jar
jar.actionClass=com.robin.segment.action.SegmentAction
#log config
log.path=log/
log.prefix=segment
# Level.ALL Level.FINEST Level.FINER Level.FINE Level.CONFIG
# Level.INFO Level.WARNING Level.SEVERE Level.OFF
log.level=Level.INFO
log.file.limit=1048576
log.file.count=3
#robin segment dictinary config
dic.base=dic/RS/base.dic
dic.numeral=dic/RS/numeral.dic
dic.quantifier=dic/RS/quantifier.dic
dic.encoding=UTF-8
#paoding config
paoding.analysis.properties=lib/paoding/paoding-analysis.properties
Dockerfile文件:
From hub.c.163.com/public/ubuntu:14.04-common
MAINTAINER robin xsd-jj@163.com
ADD jdk-8u162-linux-x64.tar.gz /usr/bin/
ENV JAVA_HOME /usr/bin/jdk1.8.0_162
ENV CLASSPATH ${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
COPY JerseyServer /opt/JerseyServer/
镜像制作shell脚本:
#!/bin/bash
RUN_PATH=$(readlink -f .)
INSTALL_DIR=JerseyServer
CONFIG_FILE=$RUN_PATH/../config.properties
LIB_DIR=$RUN_PATH/../lib
START_DATA=$RUN_PATH/../dic
START_SCRIPT=startup.sh
JERSEY_SERVER_JAR_PATH=../../JerseyServer/target/JerseyServer-1.0.jar
MICRO_SERVICE_JAR_PATH=$RUN_PATH/../dist/segment-1.0.jar
IMAGE_TAR_NAME=ubuntu-segment-0.1.tar
IMAGE_TAG=docker.robin.com/robin/ubuntu-segment:0.1
echo "----------------Prepare project--------------------------------------"
rm -fr $INSTALL_DIR
mkdir -p $INSTALL_DIR
cp $JERSEY_SERVER_JAR_PATH $INSTALL_DIR
cp $CONFIG_FILE $MICRO_SERVICE_JAR_PATH $INSTALL_DIR
cp -r $LIB_DIR $INSTALL_DIR
cp -r $START_DATA $INSTALL_DIR
cp $START_SCRIPT $INSTALL_DIR
echo "----------------Clean images ----------------------------------------"
rm -fr $IMAGE_TAR_NAME
docker rmi $IMAGE_TAG
echo "----------------Build images ----------------------------------------"
docker build -t $IMAGE_TAG .
echo "----------------Save images: ${IMAGE_TAR_NAME}----------------------------"
docker save $IMAGE_TAG > $IMAGE_TAR_NAME
echo "----------------Copy images: ${IMAGE_TAR_NAME}----------------------------"
NODE2_ADDRESS=192.168.1.12
NODE3_ADDRESS=192.168.1.13
NODE4_ADDRESS=192.168.1.14
scp $IMAGE_TAR_NAME $NODE2_ADDRESS:/home/dockerImg
ssh root@$NODE2_ADDRESS "docker rmi $IMAGE_TAG"
ssh root@$NODE2_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME"
scp $IMAGE_TAR_NAME $NODE3_ADDRESS:/home/dockerImg
ssh root@$NODE3_ADDRESS "docker rmi $IMAGE_TAG"
ssh root@$NODE3_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME"
scp $IMAGE_TAR_NAME $NODE4_ADDRESS:/home/dockerImg
ssh root@$NODE4_ADDRESS "docker rmi $IMAGE_TAG"
ssh root@$NODE4_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME"
本地镜像查看:
[root@localhost home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.robin.com/robin/ubuntu-pretreatment 0.1 7da0704a794b 22 hours ago 761.3 MB
docker.robin.com/robin/ubuntu-classifier 0.1 4b39c146e6c0 4 days ago 761.6 MB
docker.robin.com/robin/ubuntu-feature-select 0.1 4d6ca3e5e6db 4 days ago 761.4 MB
docker.robin.com/robin/ubuntu-segment 0.1 49285ef474f3 4 days ago 774.7 MB
gcr.io/google_containers/pause-amd64 3.0 99e59f495ffa 2 years ago 746.9 kB
hub.c.163.com/public/ubuntu 14.04-common 493d50b6de79 2 years ago 369.3 MB
Docker镜像私仓镜像查询:
[root@localhost home]# curl http://docker.robin.com/v2/_catalog
{"repositories":["robin/ubuntu-classifier","robin/ubuntu-feature-select","robin/ubuntu-pretreatment","robin/ubuntu-segment"]}
Kubernetes RC创建
下面以classifier微服务为例描述RC的创建。
classifier-rc.yaml配置:
apiVersion: v1
kind: ReplicationController
metadata:
name: classifier-rc
spec:
replicas: 4
selector:
app: ubuntu-classifier
template:
metadata:
labels:
app: ubuntu-classifier
spec:
containers:
- name: ubuntu-classifier
image: docker.robin.com/robin/ubuntu-classifier:0.1
command: ["/bin/sh", "-c"]
args: ["cd /opt/JerseyServer;./startup.sh"]
resources:
limits:
cpu: 1500m
memory: 1280Mi
requests:
cpu: 1000m
memory: 1024Mi
imagePullSecrets:
- name: robin-registrykey
创建RC:
kubectl create -f classifier-rc.yaml
查询RC:
[root@localhost yaml]# kubectl get rc
NAME DESIRED CURRENT READY AGE
classifier-rc 4 4 4 4d
feature-select-rc 1 1 1 4d
pretreatment-rc 1 1 1 22h
segment-rc 1 1 1 4d
查询endpoints
[root@localhost yaml]# kubectl get endpoints
NAME ENDPOINTS AGE
classifier-svc 10.0.1.2:8084,10.0.7.2:8084,10.0.8.2:8084 + 1 more... 4d
feature-select-svc 10.0.1.3:8083 4d
kubernetes 192.168.1.10:6443 172d
pretreatment-svc 10.0.7.4:8082 22h
segment-svc 10.0.7.3:8081 4d
Kubernetes Service创建
Classifier Service配置:
apiVersion: v1
kind: Service
metadata:
name: classifier-svc
spec:
type: NodePort
ports:
- port: 8004
targetPort: 8084
nodePort: 30084
selector:
app: ubuntu-classifier
Service创建:
kubectl create -f classifier-svc.yam
Service查询:
[root@localhost yaml]#
[root@localhost yaml]# kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
classifier-svc 192.168.8.56 <nodes> 8004:30084/TCP 4d
feature-select-svc 192.168.8.169 <nodes> 8003:30083/TCP 4d
kubernetes 192.168.8.1 <none> 443/TCP 172d
pretreatment-svc 192.168.8.11 <nodes> 8002:30082/TCP 22h
segment-svc 192.168.8.29 <nodes> 8001:30081/TCP 4d
知更鸟博文推荐 | |
---|---|
上一篇 | 基于Kubernetes、Docker的机器学习微服务系统设计系列——(七)分类器微服务 |
下一篇 | 基于Kubernetes、Docker的机器学习微服务系统设计系列——(九)应用服务 |
推荐篇 | 基于Kubernetes、Docker的机器学习微服务系统设计——完整版 |
研究篇 | RS中文分词 | MP特征选择 | NLV文本分类 | 快速kNN |
作者简介 | |
兴趣爱好 | 机器学习、云计算、自然语言处理、文本分类、深度学习 |
xsd-jj@163.com (欢迎交流) |
更多推荐
已为社区贡献1条内容
所有评论(0)