论坛

Google Kubernetes E ...
 
通知事项
全部清除

Google Kubernetes引擎快速入门-部署预构建的Docker容器映像  


太极
帖子:83
主持人
(@太极)
会员
已加入:8个月前

本快速入门介绍了如何启动虚拟机集群并部署预构建的虚拟机。 带有简单Node.js示例应用程序的Docker容器映像。

项目设置

GCP将资源组织到项目中。这使您能够 在一个地方收集单个应用程序的所有相关资源。

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

导航到Kubernetes引擎

打开  在控制台的左上角, 然后选择 Kubernetes引擎.

创建一个Kubernetes集群

一个集群至少由一个集群主计算机和多个工作服务器组成 机器叫 节点。您将应用程序部署到群集,然后将应用程序 在节点上运行。

  1. 点击  按钮。

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

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

  4. 请点击  创造集群

获取示例应用程序代码

云 Shell是控制台的内置命令行工具。在这个部分, 您将启动Cloud Shell并将其用于获取示例应用程序代码。后来, 您将使用Cloud Shell通过预构建的容器映像运行示例应用程序。

开放云壳

通过单击打开Cloud Shell   控制台右上角导航栏中的按钮。

获取示例代码

克隆示例代码:

 
导航到包含示例代码的目录:
cd \ kubernetes-engine-samples / hello-ap
 
 
[电子邮件 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
 
 

main.go 是使用Go编程语言编写的Web服务器实现。 服务器使用以下命令响应任何HTTP请求: 'Hello, world!' 信息。

探索映像配置

查看图像配置:

猫Dockerfile
 

码头工人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凭据:

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
 

[电子邮件 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

 

查看申请

暴露集群

使集群对公众可用:

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

查找您的外部IP

列出服务,然后查找 hello-app 服务:

kubectl获取服务hello-app \ --watch
 
 

等到您在 External IP 柱。这可能需要一个 分钟。要停止监视服务,请按Ctrl + C。

访问您正在运行的应用

从以下地址复制IP地址 External IP 柱。

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

http://[external-IP]:8080

将[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允许您轻松扩展或升级您的应用程序。

扩展您的应用程序

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

kubectl规模部署hello-app \ --replicas = 4
 
 

每个副本在群集上独立运行,负载均衡器将流量提供给 他们全部。

查看您的应用程序设置

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

kubectl进行部署
 
kubectl得到豆荚

 

更新应用程序

在本节中,您将修改您的本地副本 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设置映像\ Deployment / hello-app \ hello-app = gcr.io / jyan-51sec-org-test1 / hello-app:v2 \&&回显“图像已更新”
 
 
 
 

查看修改后的应用程序

等待一分钟,让应用程序映像有时间更新,并且 然后在与以前相同的地址查看修改后的应用程序:

http://[external-IP]:8080

 

 

检查您的集群

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

查看集群详细信息

点击  您创建的。这个 打开集群详细信息页面。

删除集群

您可以继续使用您的应用,也可以关闭整个集群以关闭 避免后续收费。

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

结论

恭喜你!您已经使用Google部署了一个简单的“ Hello,World”应用程序 Kubernetes引擎。

 

1 回复
太极
帖子:83
主持人
(@太极)
会员
已加入:8个月前

rGb1sxK.png(1321×622)

回复
分享: