demo for running services in Kubernetes.
-
install
kubectlandhelm, runhelm initto init both server (install tiller) and client. -
Optional: build and push Docker images (if you need) under
mysql/master,mysql/slave,archlinux-php,backend-service,backend-www. If you build and push images yourself, you need to change container image in the corresponding yaml files. -
Deploy MySQL master:
kubectl apply -f mysql/master/mysql-master-local.yaml- Deploy MySQL slave:
kubectl apply -f mysql/slave/mysql-slave-local.yaml- Deploy consul:
Change server.storage and server.storageClass to fit your requirement.
git submodule update --init
cd consul/consul-helm && helm install --name consul --set server.storage=20Gi,server.storageClass=alicloud-disk-ssd ./- Deploy backend-service, which provides jsonrpc service for backend-www:
kubectl apply -f backend-service/backend-service.yaml- Deploy backend-www, which calls backend-service and provides HTTP web access:
kubectl apply -f backend-www/backend-www.yaml- Test if all are ok:
# get backend-www's EXTERNAL-IP
kubectl get svc
# If you have EXTERNAL-IP
curl -i -XPOST "EXTERNAL-IP/user?name=fatcat"
# If you have no EXTERNAL-IP
# Change xxxx to your Pod name
kubectl exec backend-www-xxxx -- curl -i -XPOST "backend-www/user?name=fatcat"
# Check fatcat_db.user table in mysql master or slave if data inserted
...- Maybe the most exciting features of Kubernetes:
# scaling
kubectl scale --replicas 6 deployment/backend-service
kubectl scale --replicas 6 deployment/backend-www
kubectl scale --replicas 4 deployment/mysql-slave
# autoscaler
kubectl autoscale deployment/backend-service --min=2 --max=20 --cpu-percent=50
# graceful upgrading
kubectl set image deployment/backend-service backend-service=ideal/backend-service:0.0.1
# graceful restarting
kubectl rollout restart deployment/backend-www