gcp链接实例
gcloud compute --project gcp-docker-kubernetes-xxxxxx ssh --zone us-east1-b clouduser@student-vm
如果想用scp交互,可以从以下地方找到密钥对
task1Linux and macOS Public key: $HOME/.ssh/google_compute_engine.pub
Private key: $HOME/.ssh/google_compute_engine Windows: Public key:
C:Users[USERNAME].sshgoogle_compute_engine.pub Private key:
C:Users[USERNAME].sshgoogle_compute_engine
在项目目录下执行该命令,生成jar包
mvn clean package
在main下创建docker文件夹 并写好dockerfile
因为在pom.xml中已经添加了docker相关内容。所以可以直接运行 创建容器
mvn clean install
使用 docker images查看images
使用下面命令启动容器 主机端口8000->8080
docker run -d -p 8000:8080 task1/spring-profile-embedded:0.1.0
可以通过 对本地端口进行测试
curl http://localhost:8000/profile?username=majd
在gcp上,可能需要
gcloud auth application-default login gcloud config set project gcp-docker-kubernetes-xxxxxx gcloud config set compute/region us-east1 gcloud config set compute/zone us-east1-b
出现的问题:
docker立马停止 无法用docker ps查看到
使用docker ps -a 发现已经停止
问题的原因:
dockerfile写错 使用jar包语法错误
一、如果java定义了jar包的main class入口,则使用如下命令
$ java -jar myjar.jar
概述: 整个项目简单来说就是用docker创建一个新的镜像,然后推到gcr上,之后用gcr自带的kubernetes引擎在本地使用kubernetes yaml文件对集群进行控制。
Google Kubernetes Engine创建好docker images之后 推送到google gcp上,然后google自带的Kubernetes Engine 可以实现自动的kubernetes
构建容器和上传gcp部分
#下载源码 git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app # docker构建 export PROJECT_ID=docker build -t us.gcr.io/${PROJECT_ID}/hello-app:v1 . #本地运行测试 docker run -d -p 8080:8080 us.gcr.io/${PROJECT_ID}/hello-app:v1 curl http://localhost:8080 docker ps docker stop CONTAINER_ID 停止 #将容器上传到GCP gcloud auth configure-docker docker push us.gcr.io/${PROJECT_ID}/hello-app:v1
构建GKE集群部分
以下命令均在cloud shell中:
# Set your project ID and Compute Engine zone options for the gcloud tool:
gcloud config set project ${PROJECT_ID}
gcloud config set compute/zone us-east1-d
CLUSTER_NAME=gke-demo-cluster
gcloud container clusters create ${CLUSTER_NAME} --num-nodes=3
#部署
kubectl create deployment hello-web --image=us.gcr.io/${PROJECT_ID}/hello-app:v1
#查看是否正常工作
kubectl get deployments
#查看创建的pods
kubectl get pods
# 默认情况下,您在 GKE 上运行的容器无法从 Internet 访问。您必须明确地将您的应用程序暴露给来自 Internet 的流量 创建了一个负载均衡器
kubectl expose deployment hello-web --type=LoadBalancer --port 80 --target-port 8080
kubectl get service
# 通过外网访问 http://
扩展应用程序部分
# 将两个新的副本添加到集群内 kubectl scale deployment hello-web --replicas=3 # 查看新添加副本 kubectl get deployments kubectl get podstask3
通过helm控制kubernetes
更新图表
helm repo add stable https://charts.helm.sh/stable helm repo update
使用mvn生成docker镜像
mvn clean install
用docker贴标签
docker tag task3/spring-profile:0.1.0 us.gcr.io/gcp-docker-kubernetes-327022/spring-profile:0.1.0
并推送到gcr
docker push us.gcr.io/gcp-docker-kubernetes-327022/spring-profile:0.1.0
开启mysql服务
export MYSQL_ROOT_PWD="task4" export MYSQL_PWD=" " export MYSQL_USERNAME=" " helm install mysql-instance --set mysqlRootPassword=$MYSQL_ROOT_PWD,mysqlUser=$MYSQL_USERNAME,mysqlPassword=$MYSQL_PWD,mysqlDatabase=test stable/mysql
完成构架
主要写helm文件 kubernetes文件 以及运维



