本快速入门向您展示如何启动虚拟机集群并部署预构建的虚拟机。 带有简单Node.js示例应用程序的Docker容器映像。
项目设置
GCP将资源组织到项目中。这使您能够 在一个地方收集单个应用程序的所有相关资源。
首先,为本教程创建一个新项目或选择一个现有项目。选择一个项目,或
导航到Kubernetes引擎
打开 在控制台的左上角, 然后选择 Kubernetes引擎.
创建一个Kubernetes集群
一个集群至少由一个集群主计算机和多个工作服务器组成 机器叫 节点。您将应用程序部署到群集,然后将应用程序部署 在节点上运行。
-
点击 按钮。
-
进入一个 对于这个集群。
-
选择一个 对于这个集群。
-
请点击 创造集群
获取示例应用程序代码
云 Shell是控制台的内置命令行工具。在这个部分, 您将启动Cloud Shell并将其用于获取示例应用程序代码。后来, 您将使用Cloud Shell通过预构建的容器映像运行示例应用程序。
开放云壳
通过单击打开Cloud Shell 控制台右上角导航栏中的按钮。
获取示例代码
克隆示例代码:
[电子邮件 protected]:~/examples/guestbook (jyan-51sec-org-test1)$ git clone \ > //github.com/GoogleCloudPlatform/kubernetes-engine-samples Cloning into 'kubernetes-engine-samples'... remote: Enumerating objects: 25, done. remote: Counting objects: 100% (25/25), done. remote: Compressing objects: 100% (22/22), done. remote: Total 703 (delta 10), reused 10 (delta 3), pack-reused 678 Receiving objects: 100% (703/703), 438.05 KiB | 10.68 MiB/s, done. Resolving deltas: 100% (316/316), done. [电子邮件 protected]:~/examples/guestbook (jyan-51sec-org-test1)$ cd \ > kubernetes-engine-samples/hello-app [电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$
探索部署
您现在位于示例代码的主目录中。
探索应用程序
查看应用程序代码:
main.go
是使用Go编程语言编写的Web服务器实现。 服务器使用以下命令响应任何HTTP请求: 'Hello, world!'
信息。
探索映像配置
查看图像配置:
码头工人file
描述您要Docker构建的映像,包括所有 其资源和依赖性,并指定应用程序应使用哪个网络端口 暴露。
要了解有关此文件如何工作的更多信息,请参阅 码头工人文档 .
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ 猫main.go |更多
/ **
*版权所有2017 Google Inc.。
*
*根据Apache许可2.0版(“许可”)获得许可;
*未经许可,您不得使用此文件。
*您可以在以下位置获得许可证的副本:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,否则软件
*根据许可协议分发的内容是按“原样”分发的,
*不作任何明示或暗示的保证或条件。
*有关特定语言的管理权限,请参阅许可证
*许可中的限制。
* /
// [START container_hello_app]
包主
导入(
“ fmt”
“日志”
“ net / http”
“ os”
)
func main(){
//注册hello函数以处理所有请求
多路复用器:= http.NewServeMux()
mux.HandleFunc(“ /”,你好)
//使用PORT环境变量,或默认为8080
端口:= os.Getenv(“ PORT”)
如果端口==“” {
端口=“ 8080”
}
//在端口上启动Web服务器并接受请求
log.Printf(“服务器正在侦听端口%s”,端口)
log.Fatal(http.ListenAndServe(“:” + port,mux))
}
// hello以纯文本“ Hello,world”消息响应请求。
func hello(w http.ResponseWriter,r * http.Request){
log.Printf(“服务请求:%s”,r.URL.Path)
主机_:= os.Hostname()
fmt.Fprintf(w,“你好,世界!\ n”)
fmt.Fprintf(w,“版本:1.0.0 \ n”)
fmt.Fprintf(w,“主机名:%s \ n”,主机)
}
// [END container_hello_app]
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ 猫Dockerfile
来自golang:1.8-alpine
添加。 / go / src / hello-app
跑去安装hello-app
来自高山:最新
COPY --from = 0 / go / bin / hello-app。
ENV端口8080
CMD [“ ./hello-app”]
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$
部署应用
等待集群创建完成
在完成本教程之前,需要完成集群的创建。追踪 活动进度以及其他活动,请点击 控制台右上角导航栏中的按钮。
设置gcloud和kubectl凭据
获取您创建的集群的gcloud凭据:
更换 [cluster-name]
和 [cluster-zone]
以及您创建的实例的名称和区域。
建立并推动容器
构建图像:
推送图片:
运行应用程序
在您的Kubernetes集群上运行该应用程序:
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ gcloud容器集群get-credentials cluster-1 --zone us-central1-c
正在获取群集端点和身份验证数据。
为cluster-1生成的kubeconfig条目。
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ docker build -t \
>gcr.io/jyan-51sec-org-test1/hello-app:v1 \
> $PWD
将构建上下文发送到Docker守护程序13.82kB
第1/7步:从golang:1.8-alpine
1.8-alpine:从库/ golang中提取
550fe1bea624:拉完整
cbc8da23026a:拉出完成
9b35aaa06d7a:拉出完成
46ca6ce0ffd1:提取完成
7a270aebe80a:拉出完成
8695117c367e:拉完整
摘要:sha256:693568f2ab0dae1e19f44b41628d2aea148fac65974cfd18f83cb9863ab1a177
状态:为golang:1.8-alpine下载了较新的图像
---> 4cb86d3661bf
第2/7步:添加。 / go / src / hello-app
---> 612555011cce
步骤3/7:运行go install hello-app
--->在25a1d115de11中运行
卸下中间容器25a1d115de11
---> 7c9fecbfa150
步骤4/7:从高山:最新
最新:从图书馆/高山撤离
df20fa9351a1:拉出完成
摘要:sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65
状态:已下载高山更新图片:最新
---> a24bb4013296
步骤5/7:复制--from = 0 / go / bin / hello-app。
---> 77ee4c6b5ed2
步骤6/7:ENV PORT 8080
--->在d02738ddc512中运行
卸下中间容器d02738ddc512
---> f1c84a77996a
步骤7/7:CMD [“ ./hello-app”]
--->在3670d034eb56中运行
卸下中间容器3670d034eb56
---> 98b79e8fa949
成功建造98b79e8fa949
已成功标记gcr.io/jyan-51sec-org-test1/hello-app:v1
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ gcloud docker-push \
>gcr.io/jyan-51sec-org-test1/hello-app:v1
警告:`gcloud docker`不适用于高于18.03的Docker客户端版本。
或者,使用`gcloud auth configure-docker`将`docker`配置为
使用`gcloud`作为凭据助手,然后像使用非GCR一样使用`docker`
注册表,例如`docker pull gcr.io / project-id / my-image`加
--verbosity = error可以使警告消失:gcloud docker
--verbosity = error-拉出gcr.io / project-id / my-image`
看到: //cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker
推送指向存储库[gcr.io/jyan-51sec-org-test1/hello-app]
0ccc2168dd82:已推送
50644c29ef5a:层已存在
v1:摘要:sha256:3d99eecd2ae16e5d85be8fe5fb2d0da50bc867b824d07ef3494be51c5635faa7大小:739
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ kubectl创建部署\
> hello-app \
>--image = gcr.io / jyan-51sec-org-test1 / hello-app:v1
创建deployment.apps / hello-app
查看申请
暴露集群
使集群对公众可用:
查找您的外部IP
列出服务,然后查找 hello-app
服务:
等待直到您在 External IP
柱。这可能需要一个 分钟。要停止监视服务,请按Ctrl + C。
访问您正在运行的应用
从以下地址复制IP地址 External IP
柱。
打开一个新的Web浏览器选项卡,并通过连接端口8080上的IP地址来访问您的应用程序:
将[external-IP]替换为上一步中复制的外部IP地址。
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ kubectl公开部署\
> hello-app \
>--type =“ LoadBalancer”-端口\
> 8080
服务/您好应用暴露
[电子邮件 protected]:〜/ examples / guestbook / kubernetes-engine-samples / hello-app(jyan-51sec-org-test1)$ kubectl获取服务hello-app \
> --watch
名称类型集群IP外部IP端口的年龄
hello-app LoadBalancer 10.8.1.133<pending> 8080:30593/TCP 18s
姓名年龄
hello-app 29s
修改集群
Kubernetes允许您轻松扩展或升级您的应用程序。
扩展您的应用程序
使用以下命令将您的应用程序最多扩展到四个副本:
每个副本在群集上独立运行,负载均衡器将流量提供给 他们全部。
查看您的应用程序设置
使用以下命令查看集群的部署设置:
更新应用程序
在本节中,您将修改您的本地副本 main.go
,重建 应用程序并推送新版本。
修改应用
使用此命令在您的本地副本中替换文本 main.go
使它在输出中返回不同的版本号:
重建应用程序
发布应用
查看修改后的应用程序
等待一分钟,让应用程序映像有时间更新,并且 然后在与以前相同的地址查看修改后的应用程序:
检查您的集群
您可以通过GCP控制台检查群集的属性。
查看集群详细信息
点击 您创建的。这个 打开集群详细信息页面。
删除集群
您可以继续使用您的应用,也可以关闭整个集群以关闭 避免后续收费。
要删除集群,请选择 下一页 到群集名称,然后单击 按钮。
结论
恭喜你!您已经使用Google部署了一个简单的“ Hello,World”应用程序 Kubernetes引擎。