1. 程式人生 > >基於Kubernetes的機器學習微服務系統設計

基於Kubernetes的機器學習微服務系統設計

本篇主要介紹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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Dockerfile檔案:

From hub.c.163.com/public/ubuntu:14.04-common MAINTAINER robin [email protected]

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/ 1 2 3 4 5 6 7 8 9 10 11 12 映象製作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 [email protected]$NODE2_ADDRESS "docker rmi $IMAGE_TAG" ssh [email protected]$NODE2_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME"

scp $IMAGE_TAR_NAME $NODE3_ADDRESS:/home/dockerImg ssh [email protected]$NODE3_ADDRESS "docker rmi $IMAGE_TAG" ssh [email protected]$NODE3_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME"

scp $IMAGE_TAR_NAME $NODE4_ADDRESS:/home/dockerImg ssh [email protected]$NODE4_ADDRESS "docker rmi $IMAGE_TAG" ssh [email protected]$NODE4_ADDRESS "cd /home/dockerImg; docker load --input $IMAGE_TAR_NAME" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 本地映象檢視:

[[email protected] 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 1 2 3 4 5 6 7 8 Docker映象私倉映象查詢:

[[email protected] home]# curl http://docker.robin.com/v2/_catalog {"repositories":["robin/ubuntu-classifier","robin/ubuntu-feature-select","robin/ubuntu-pretreatment","robin/ubuntu-segment"]} 1 2 K8S 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 建立RC:

kubectl create -f classifier-rc.yaml 1 查詢RC:

[[email protected] 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 1 2 3 4 5 6 查詢endpoints

[[email protected] 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 1 2 3 4 5 6 7 K8S 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 1 2 3 4 5 6 7 8 9 10 11 12 Service建立:

kubectl create -f classifier-svc.yam 1 Service查詢:

---------------------  作者:xsdjj  來源:CSDN  原文:https://blog.csdn.net/xsdjj/article/details/83927975  版權宣告:本文為博主原創文章,轉載請附上博文連結!