[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 .
docker tag dubbo:v1 harbor.pdabc.com/kubernetes/dubbo:v1
docker push harbor.pdabc.com/kubernetes/dubbo:v1
创建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
的确是在node03上面启动了20880端口
测试服务 没有问题
测试端口是否可以任意指定
修改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