论坛

谷歌kubernetes e ...
 
Notifications
清除所有

Google Kubernetes Engine QuickStart - 部署预设的Docker容器图像


帖子:84
主持人
Topic starter
(@太极)
成员
Joined: 1 year ago

此QuickStart向您展示如何启动虚拟机群集并部署预构建 与一个简单的node.js示例应用程序的Docker容器图像。

项目设置

GCP.将资源组织成项目。这允许您 在一个地方收集单个应用程序的所有相关资源。

首先创建新项目或为本教程选择现有项目。选择一个项目,或 

导航到Kubernetes引擎

打开  在控制台的左上角, 然后选择 Kubernetes.发动机.

创建Kubernetes集群

群集由至少一个群集主机和多个工作人员组成 机器叫做 节点。您将应用程序部署到群集,以及应用程序 在节点上运行。

  1. 点击  按钮。

  2. 进入一个  对于此群集。

  3. 选择一个  对于此群集。

  4. 点击  创建群集

获取示例应用程序代码

云 shell是控制台的内置命令行工具。在这个部分, 你'll启动云shell并使用它来获取示例应用程序代码。之后, 你'LL使用Cloud shell使用预构建的容器图像运行示例应用程序。

打开云壳

单击打开云shell   在控制台右上角的导航栏中按钮。

获取示例代码

克隆示例代码:

 
导航到包含示例代码的目录:
CD \ Kubernetes-Engine-Samples / Hello-AP
 
 
[email 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.
[email protected]:~/examples/guestbook (jyan-51sec-org-test1)$ cd \
>     kubernetes-engine-samples/hello-app
Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$

 

探索部署

您现在位于示例代码的主目录中。

探索应用程序

查看应用程序代码:

Cat Main.Go.
 
 

main.go 是一种以去编程语言编写的Web服务器实现。 服务器使用a响应任何HTTP请求 'Hello, world!' 信息。

探索图像配置

查看图像配置:

猫dockerfile.
 

Docker.file 描述您希望Docker建立的图像,包括所有 其资源和依赖项,并指定应用程序应该的网络端口 暴露。

要了解有关此文件如何工作的更多信息,请参阅DockerFile参考 Docker.文件.

 

jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-samples / hello-app(jyan-51sec-org-test1)$ cat main.go |更多的
/ **
*版权所有2017谷歌公司
*
*在Apache许可证下许可,版本2.0()"License");
*除非符合许可证,您可能无法使用此文件。
*您可以获得许可证的副本
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或商品书籍,否则软件
*在许可证下分发是分发的"AS IS" BASIS,
*没有任何形式的保证或条件,无论是表达还是暗示。
*请参阅管理权限的特定语言许可证
*许可证下的限制。
* /

// [start container_hello_app]
包裹主要

进口 (
"fmt"
"log"
"net/http"
"os"
)

func main(){
//注册Hello函数来处理所有请求
mux:= http.newservemux()

mux.handlefunc("/", hello)

//使用端口环境变量,或默认为8080
端口:= os.getenv("PORT")
如果端口==."" {
端口="8080"
}

//在端口上启动Web服务器并接受请求
日志.printf("服务器侦听端口%s", port)
日志.fatal(http.listenandserve(":"+port, mux))
}

// hello用纯文本响应请求"Hello, world" message.
Func Hello(W http.ResponseWriter,R * http.Request){
日志.printf("Serving request: %s", r.URL.Path)
主机,_:= os.hostname()
FMT..fprintf(w,"Hello, world!\n")
FMT..fprintf(w,"Version: 1.0.0\n")
FMT..fprintf(w,"Hostname: %s\n", host)
}

// [结束container_hello_app]
Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$

jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-samples / hello-app(jyan-51sec-org-test1)$ cat dockerfile
来自Golang:1.8-高山
添加 。 / go / src / hello-app
运行go安装hello-app

来自Alpine:最新
复制 - 从= 0 / go / bin / hello-app。
ENV端口8080.
cmd ["./hello-app"]
Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$

 

部署应用程序

等待群集创建完成

在教程继续之前,群集创建需要完成。跟踪 此活动和其他活动的进度,点击  在控制台右上角的导航栏中按钮。

设置GCLOUD和KUBECTL凭据

获取您创建的群集的GCLoud凭据:

gcloud容器群\ get-credentials [cluster-name] \ - zone [cluster-zone]
 
 

代替 [cluster-name]  [cluster-zone] 使用您创建的实例的名称和区域。

建立并推动容器

构建图像:

docker build -t \gcr.io/jyan-51sec-org-test1/hello-app:v1 \ $ $ pwd
 

推映像:

gcloud docker - push \gcr.io/jyan-51sec-org-test1/hello-app:v1.
 
 

运行应用程序

在Kubernetes集群上运行应用程序:

kubectl创建部署\ hello-app \ --image = gcr.io / jyan-51sec-org-test1 / hello-app:v1
 

Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$ GCloud容器群集Get-Credentials Cluster-1 - 中Central1-C
获取群集端点和AUTH数据。
KubeConfig输入为Cluster-1生成。
jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-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-高山
1.8-阿尔卑斯山:从图书馆/戈兰拉动
550FE1BEA624:拉完整
CBC8DA23026A:完整
9B35AAA06D7A:完整
46CA6CE0FFD1:拉完全
7a270aebe80a:拉完全
8695117C367E:拉完整
摘要:SHA256:693568F2AB0DAE1E19F44B41628D2AEA148FAC65974CFD18F83CB9863AB1A177
状态:为golang下载较新图像:1.8-高山
---> 4cb86d3661bf
第2/7步:
---> 612555011cce
步骤3/7:运行Go安装Hello-app
--->在25A1D115DE11中运行
去除中间容器25a1d115de11
---> 7c9fecbfa150
第4/7步:来自Alpine:最新
最新消息:从图书馆/高山拉
DF20FA9351A1:拉完全
摘要:SHA256:A15790640A6690AA1730C38CF0A440E2AA44AACA9B0E8931A9F2B0D7CC90FD65
状态:为Alpine下载较新图像:最新
---> a24bb4013296
步骤5/7:复制 - 从= 0 / Go / bin / hello-app。
---> 77ee4c6b5ed2
步骤6/7:ENV端口8080
--->在D02738DDC512运行
卸下中间容器D02738DDC512
---> f1c84a77996a
第7/7步:cmd ["./hello-app"]
--->在3670D034EB56中运行
卸下中间容器3670d034eb56
---> 98b79e8fa949
成功建于98B79E8FA949.
成功标记了gcr.io/jyan-51sec-org-test1/hello-app:v1.
Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$

jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-maill-samples / hello-app(jyan-51sec-org-test1)$ gcloud docker - push \
>gcr.io/jyan-51sec-org-test1/hello-app:v1.
警告:在18.03以上的Docker客户端版本,不会支持GCloud Docker`。

作为替代方案,使用`gcloud auth配置-cocker`配置Docker`
使用“gcloud”作为凭证助手,然后使用“Docker”否则适用于非GCR
注册管理机构,例如`docker拉gcr.io / project-id / my-icilic`。添加
`--verventy =错误沉默这个警告:`gcloud docker
- verbosity =错误 - 拉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:3D99EECD2AE16E5D85BE8FE5FB2D0DA50BC867B824D07F3494BE51C5635FAA7尺寸:739
Jyan @ CloudShell:〜/示例/留言簿/ Kubernetes-Engine-Samples / Hello-App(Jyan-51Sec-Org-Test1)$

jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-samples / hello-app(jyan-51sec-org-test1)$ kubectl创建部署\
> hello-app \
> - image = gcr.io / jyan-51sec-org-test1 / hello-app:v1
Deployment.apps / hello-应用程序创建

 

查看应用程序

暴露群集

使集群提供给公众:

kubectl公开部署\ hello-app \ - type ="LoadBalancer" --port \ 8080
 
 

找到外部IP

列出服务,寻找 hello-app 服务:

Kubectl获取服务Hello-app \ --watt
 
 

等到你看到IP地址 External IP 柱子。这可能需要一个 分钟。要停止监控服务,请按Ctrl + C.

访问您的运行应用程序

从中复制IP地址 External IP 柱子。

打开新的Web浏览器选项卡,然后通过连接到端口8080上的IP地址访问您的应用程序:

http://[external-IP]:8080

用上一步中复制的外部IP地址替换[外部IP]。

 

jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-samples / hello-app(jyan-51sec-org-test1)$ kubectl公开部署\
> hello-app \
> --type="LoadBalancer" --port \
> 8080
Service / Hello-App暴露
jyan @ cloudshell:〜/ examples /留言簿/ kubernetes-megine-samples / hello-app(jyan-51sec-org-test1)$ kubectl get service hello-app \
> --watch
名称类型Cluster-IP外部IP端口(S)年龄
Hello-App LoadBalancer 10.8.1.133<pending> 8080:30593/TCP 18s
姓名年龄
Hello-App 29s

 

修改您的群集

Kubernetes.允许您轻松扩展或升级您的应用程序。

缩放您的应用程序

使用以下命令将应用程序扩展到四个副本:

kubectl秤部署Hello-app \ --replicas = 4
 
 

每个副本在群集中独立运行,负载均衡器服务流量 他们都是。

查看您的应用程序设置

使用以下命令查看群集的部署设置:

熊掌获得部署
 
kubectl得到豆荚

 

更新应用程序

在本节中,您'll修改您的本地副本  main.go,重建 应用程序并推送新版本。

修改应用程序

使用此命令在本地副本中进行文本替换 main.go 要使它返回其输出中的不同版本号:

SED -I -E.'s/1.0.0/2.0.0/g' main.go
 
 
您还可以使用文本编辑器修改文件而不是使用此命令。

重建应用程序

docker build -t \ gcr.io/jyan-51sec-org-test1/hello-app:v2 \ $ pwd
 
 
 

发布应用程序

gcloud docker - push \ gcr.io/jyan-51sec-org-test1/hello-app:v2
 
 
 
kubectl设置图像\部署/ hello-app \ hello-app = gcr.io / jyan-51sec-org-test1 / hello-app:v2 \&& echo 'image updated'
 
 
 
 

查看修改后的应用程序

等待一分钟以使应用程序图像时间更新,以及 然后在与以前相同的地址查看修改后的应用程序:

http://[external-IP]:8080

 

 

检查你的群集

您可以通过GCP控制台检查群集的属性。

查看群集详细信息

点击  你创造的。这 打开群集详细信息页面。

删除群集

您可以继续使用您的应用程序,或者您可以关闭整个群集 避免后续费用。

要删除群集,请选择  下一页 到群集名称,然后单击  按钮。

结论

恭喜!你已经部署了一个简单的'Hello, World'应用使用谷歌 Kubernetes.引擎。

 

1 回复
帖子:84
主持人
Topic starter
(@太极)
成员
Joined: 1 year ago

RGB1SXK.PNG(1321×622)

回复
分享: