[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

6-6 传统dubbo服务迁移kubernetes(下)

修改 target/ROOT/bin/start.sh 

#!/bin/bash


cd `dirname $0`
BIN_DIR=`pwd`
cd ..


DEPLOY_DIR=`pwd`
CONF_DIR=${DEPLOY_DIR}/conf


SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
SERVER_PORT=`sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`


if [ -z "${SERVER_NAME}" ]; then
    echo "ERROR: can not found 'dubbo.application.name' config in 'dubbo.properties' !"
	exit 1
fi


# 此处用于调整DUBBO_PORT 避免host port冲突
if [ ! -z "${DUBBO_PORT}" ];then
    sed -i "s/dubbo.protocol.port=${SERVER_PORT}/dubbo.protocol.port=${DUBBO_PORT}/g" conf/dubbo.properties
    SERVER_PORT=${DUBBO_PORT}
fi




if [ -n "${SERVER_PORT}" ]; then
	SERVER_PORT_COUNT=`netstat -ntl | grep ${SERVER_PORT} | wc -l`
	if [ ${SERVER_PORT_COUNT} -gt 0 ]; then
		echo "ERROR: The ${SERVER_NAME} port ${SERVER_PORT} already used!"
		exit 1
	fi
fi


LOGS_DIR=""
if [ -n "${LOGS_FILE}" ]; then
	LOGS_DIR=`dirname ${LOGS_FILE}`
else
	LOGS_DIR=${DEPLOY_DIR}/logs
fi
if [ ! -d ${LOGS_DIR} ]; then
	mkdir ${LOGS_DIR}
fi
STDOUT_FILE=${LOGS_DIR}/stdout.log


LIB_DIR=${DEPLOY_DIR}/lib
LIB_JARS=`ls ${LIB_DIR} | grep .jar | awk '{print "'${LIB_DIR}'/"$0}'|tr "\n" ":"`


JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
JAVA_DEBUG_OPTS=""
if [ "$1" = "debug" ]; then
    JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi


echo -e "Starting the ${SERVER_NAME} ...\c"


${JAVA_HOME}/bin/java -Dapp.name=${SERVER_NAME} ${JAVA_OPTS} ${JAVA_DEBUG_OPTS} ${JAVA_JMX_OPTS} -classpath ${CONF_DIR}:${LIB_JARS} com.alibaba.dubbo.conta

 

重新构建

docker build -t dubbo:v1 .

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

docker tag dubbo:v1 harbor.pdabc.com/kubernetes/dubbo:v1

docker push  harbor.pdabc.com/kubernetes/dubbo:v1

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

创建dubbo.yaml

#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dubb-demo
spec:
  selector:
    matchLabels:
      app: dubb-demo
  replicas: 1
  template:
    metadata:
      labels:
        app: dubb-demo
    spec:
      hostNetwork: true
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - dubb-demo
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: dubb-demo
        image: harbor.pdabc.com/kubernetes/dubbo:v1
        ports:
        - containerPort: 20880

 

运行

kubectl  apply -f dubbo.yaml 

查看dubbo运行在哪一台服务器上

 kubectl  get pods -o wide

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

的确是在node03上面启动了20880端口

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

测试服务 没有问题

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

测试端口是否可以任意指定

修改dubbo.yaml如下

#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dubb-demo
spec:
  selector:
    matchLabels:
      app: dubb-demo
  replicas: 1
  template:
    metadata:
      labels:
        app: dubb-demo
    spec:
      hostNetwork: true
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - dubb-demo
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: dubb-demo
        image: harbor.pdabc.com/kubernetes/dubbo:v1
        ports:
        - containerPort: 20881
        env:
        - name: DUBBO_PORT
          value: "20881"


 

这里重新打了v3版本,start.sh脚本参数SERVER写成了SERVIER 导致报错 sed的时候没有端口替换掉 最后端口变成了2088120880

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)

 

[kubernetes]6-6 传统dubbo服务迁移kubernetes(下)