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