Switched vtgate from controller to pod template to force them to specific nodes

This commit is contained in:
Joshua Thompson 2015-04-27 12:59:11 -07:00
Родитель 297bbda2fc
Коммит bbeef74751
9 изменённых файлов: 98 добавлений и 148 удалений

Просмотреть файл

@ -17,7 +17,6 @@ GKE_ZONE=${GKE_ZONE:-'us-central1-b'}
GKE_MACHINE_TYPE=${GKE_MACHINE_TYPE:-'n1-standard-1'}
GKE_CLUSTER_NAME=${GKE_CLUSTER_NAME:-'example'}
GKE_SSD_SIZE_GB=${GKE_SSD_SIZE_GB:-0}
GKE_NUM_NODES=${GKE_NUM_NODES:-0}
SHARDS=${SHARDS:-'-80,80-'}
TABLETS_PER_SHARD=${TABLETS_PER_SHARD:-3}
MAX_TASK_WAIT_RETRIES=${MAX_TASK_WAIT_RETRIES:-300}
@ -26,10 +25,10 @@ BENCHMARK_CLUSTER=${BENCHMARK_CLUSTER:-true}
VTGATE_COUNT=${VTGATE_COUNT:-0}
vttablet_template='vttablet-pod-template.yaml'
vtgate_template='vtgate-controller-template.yaml'
vtgate_template='vtgate-pod-template.yaml'
if $BENCHMARK_CLUSTER; then
vttablet_template='vttablet-pod-benchmarking-template.yaml'
vtgate_template='vtgate-controller-benchmarking-template.yaml'
vtgate_template='vtgate-pod-benchmarking-template.yaml'
fi
# export for vttablet scripts
@ -94,15 +93,11 @@ gcloud config set compute/zone $GKE_ZONE
project_id=`gcloud config list project | sed -n 2p | cut -d " " -f 3`
num_shards=`echo $SHARDS | tr "," " " | wc -w`
total_tablet_count=$(($num_shards*$TABLETS_PER_SHARD))
num_nodes=$GKE_NUM_NODES
if [ $num_nodes -eq 0 ]; then
num_nodes=$(($total_tablet_count>3?$total_tablet_count:3))
fi
vtgate_count=$VTGATE_COUNT
if [ $vtgate_count -eq 0 ]; then
vtgate_count=$(($total_tablet_count/4>3?$total_tablet_count/4:3))
fi
num_nodes=$(($total_tablet_count+$vtgate_count))
echo "****************************"
echo "*Creating cluster:"
@ -149,7 +144,7 @@ wait_for_running_tasks etcd 6
run_script vtctld-up.sh
run_script vttablet-up.sh FORCE_NODE=true VTTABLET_TEMPLATE=$vttablet_template
run_script vtgate-up.sh VTGATE_REPLICAS=$vtgate_count VTGATE_TEMPLATE=$vtgate_template
run_script vtgate-up.sh STARTING_INDEX=$total_tablet_count VTGATE_REPLICAS=$vtgate_count VTGATE_TEMPLATE=$vtgate_template
wait_for_running_tasks vtctld 1
wait_for_running_tasks vttablet $total_tablet_count
@ -216,7 +211,7 @@ else
vtgate_server="$vtgate_ip:$vtgate_port"
fi
if ! [ -z $NEWRELIC_LICENSE_KEY ]; then
if [ -n "$NEWRELIC_LICENSE_KEY" -a $GKE_SSD_SIZE_GB -gt 0 ]; then
for i in `seq 1 $num_nodes`; do
nodename=k8s-$GKE_CLUSTER_NAME-node-${i}
gcloud compute copy-files newrelic.sh $nodename:~/

Просмотреть файл

@ -1,44 +0,0 @@
apiVersion: v1beta1
kind: ReplicationController
id: vtgate
desiredState:
replicas: {{replicas}}
replicaSelector: {name: vtgate}
podTemplate:
desiredState:
manifest:
version: v1beta1
id: vtgate
containers:
- name: vtgate
image: vitess/root
volumeMounts:
- name: syslog
mountPath: /dev/log
- name: vtdataroot
mountPath: /vt/vtdataroot
command:
- sh
- "-c"
- >-
mkdir -p $VTDATAROOT/tmp &&
chown -R vitess /vt &&
su -p -c "/vt/bin/vtgate
-topo_implementation etcd
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
-log_dir $VTDATAROOT/tmp
-alsologtostderr
-port 15001
-cell test" vitess
env:
- name: GOMAXPROCS
value: 16
volumes:
- name: syslog
source: {hostDir: {path: /dev/log}}
- name: vtdataroot
source: {{vtdataroot_volume}}
labels:
name: vtgate
labels:
name: vtgate

Просмотреть файл

@ -1,41 +0,0 @@
apiVersion: v1beta1
kind: ReplicationController
id: vtgate
desiredState:
replicas: {{replicas}}
replicaSelector: {name: vtgate}
podTemplate:
desiredState:
manifest:
version: v1beta1
id: vtgate
containers:
- name: vtgate
image: vitess/root
volumeMounts:
- name: syslog
mountPath: /dev/log
- name: vtdataroot
mountPath: /vt/vtdataroot
command:
- sh
- "-c"
- >-
mkdir -p $VTDATAROOT/tmp &&
chown -R vitess /vt &&
su -p -c "/vt/bin/vtgate
-topo_implementation etcd
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
-log_dir $VTDATAROOT/tmp
-alsologtostderr
-port 15001
-cell test" vitess
volumes:
- name: syslog
source: {hostDir: {path: /dev/log}}
- name: vtdataroot
source: {emptyDir: {}}
labels:
name: vtgate
labels:
name: vtgate

Просмотреть файл

@ -1,41 +0,0 @@
apiVersion: v1beta1
kind: ReplicationController
id: vtgate
desiredState:
replicas: 3
replicaSelector: {name: vtgate}
podTemplate:
desiredState:
manifest:
version: v1beta1
id: vtgate
containers:
- name: vtgate
image: vitess/root
volumeMounts:
- name: syslog
mountPath: /dev/log
- name: vtdataroot
mountPath: /vt/vtdataroot
command:
- sh
- "-c"
- >-
mkdir -p $VTDATAROOT/tmp &&
chown -R vitess /vt &&
su -p -c "/vt/bin/vtgate
-topo_implementation etcd
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
-log_dir $VTDATAROOT/tmp
-alsologtostderr
-port 15001
-cell test" vitess
volumes:
- name: syslog
source: {hostDir: {path: /dev/log}}
- name: vtdataroot
source: {emptyDir: {}}
labels:
name: vtgate
labels:
name: vtgate

Просмотреть файл

@ -7,8 +7,12 @@ set -e
script_root=`dirname "${BASH_SOURCE}"`
source $script_root/env.sh
VTGATE_REPLICAS=${VTGATE_REPLICAS:-3}
echo "Stopping vtgate replicationController..."
$KUBECTL stop replicationController vtgate
for uid in `seq 1 $VTGATE_REPLICAS`; do
$KUBECTL stop replicationController vtgate-$uid
done
echo "Deleting vtgate service..."
$KUBECTL delete service vtgate

Просмотреть файл

@ -0,0 +1,38 @@
apiVersion: v1beta1
kind: Pod
id: vtgate-{{uid}}
desiredState:
manifest:
version: v1beta1
id: vt
containers:
- name: vtgate
image: vitess/root
volumeMounts:
- name: syslog
mountPath: /dev/log
- name: vtdataroot
mountPath: /vt/vtdataroot
command:
- sh
- "-c"
- >-
mkdir -p $VTDATAROOT/tmp &&
chown -R vitess /vt &&
su -p -c "/vt/bin/vtgate
-topo_implementation etcd
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
-log_dir $VTDATAROOT/tmp
-alsologtostderr
-port 15001
-cell test" vitess
env:
- name: GOMAXPROCS
value: "16"
volumes:
- name: syslog
source: {hostDir: {path: /dev/log}}
- name: vtdataroot
source: {{vtdataroot_volume}}
labels:
name: vtgate

Просмотреть файл

@ -0,0 +1,35 @@
apiVersion: v1beta1
kind: Pod
id: vtgate-{{uid}}
desiredState:
manifest:
version: v1beta1
id: vtgate
containers:
- name: vtgate
image: vitess/root
volumeMounts:
- name: syslog
mountPath: /dev/log
- name: vtdataroot
mountPath: /vt/vtdataroot
command:
- sh
- "-c"
- >-
mkdir -p $VTDATAROOT/tmp &&
chown -R vitess /vt &&
su -p -c "/vt/bin/vtgate
-topo_implementation etcd
-etcd_global_addrs http://$ETCD_GLOBAL_SERVICE_HOST:$ETCD_GLOBAL_SERVICE_PORT
-log_dir $VTDATAROOT/tmp
-alsologtostderr
-port 15001
-cell test" vitess
volumes:
- name: syslog
source: {hostDir: {path: /dev/log}}
- name: vtdataroot
source: {emptyDir: {}}
labels:
name: vtgate

Просмотреть файл

@ -2,29 +2,33 @@
# This is an example script that starts a vtgate replicationController.
set -e
#set -e
script_root=`dirname "${BASH_SOURCE}"`
source $script_root/env.sh
VTGATE_REPLICAS=${VTGATE_REPLICAS:-3}
VTGATE_TEMPLATE=${VTGATE_TEMPLATE:-'vtgate-controller-template.yaml'}
VTGATE_TEMPLATE=${VTGATE_TEMPLATE:-'vtgate-pod-template.yaml'}
VTDATAROOT_VOLUME=${VTDATAROOT_VOLUME:-''}
STARTING_INDEX=${STARTING_INDEX:--1}
vtdataroot_volume='{emptyDir: {}}'
if [ -n "$VTDATAROOT_VOLUME" ]; then
vtdataroot_volume="{hostDir: {path: ${VTDATAROOT_VOLUME}}}"
fi
replicas=$VTGATE_REPLICAS
echo "Creating vtgate service..."
$KUBECTL create -f vtgate-service.yaml
sed_script=""
for var in replicas vtdataroot_volume; do
sed_script+="s,{{$var}},${!var},g;"
echo "Creating vtgate pods..."
for uid in `seq 1 $VTGATE_REPLICAS`; do
sed_script=""
for var in uid vtdataroot_volume; do
sed_script+="s,{{$var}},${!var},g;"
done
if [ "$STARTING_INDEX" -gt -1 ]; then
vtgate_index=$(($STARTING_INDEX+$uid))
sed_script+="\$anodeSelector:\n id: \"$vtgate_index\""
fi
cat $VTGATE_TEMPLATE | sed -e "$sed_script" | $KUBECTL create -f -
done
echo "Creating vtgate replicationController..."
cat $VTGATE_TEMPLATE | sed -e "$sed_script" | $KUBECTL create -f -

Просмотреть файл

@ -65,7 +65,7 @@ desiredState:
-rowcache-socket $VTDATAROOT/{{tablet_subdir}}/memcache.sock" vitess
env:
- name: GOMAXPROCS
value: 16
value: "16"
- name: mysql
image: vitess/root
volumeMounts: