zoukankan      html  css  js  c++  java
  • Google Computer Engine入门

    下面的例子用4个节点虚拟机和1个主虚拟机(也就是说集群中使用了5个虚拟机)创建了一个Kubernetes集群。您可以在您的工作站(或是任何您觉得合适的地方)安装和控制这个集群。

    开始之前

    如果您想要一个简化的入门体验和图形用户界面来管理集群,请考虑尝试使用谷歌容器引擎(GKE)安装和管理托管集群。 如果您想使用自定义的二进制文件或者原生的开源Kubernetes,请看下面的说明。

    前提条件

    1.您需要一个可以结算费用的Google云平台账户,更多细节详见Google开发者控制台。

    2.安装gcloud是必要的。 gcloud可以作为谷歌云SDK的一部分来安装。

    3.然后,确保您已经安装了gcloud preview命令行组件。在命令行中运行gcloud preview。如果它要求安装任何组件,就按照提示安装。如果它只是显示帮助文本,那就大功告成了。这是必需的因为集群安装脚本使用gcloud preview命名空间中的GCE实例组,所以这一步是必要的。您还需要在开发控制台中启用计算引擎实例组管理器API。

    4.确保gcloud被设定使用您想使用的谷歌云平台项目。您可以使用gcloud配置清单项目检查当前的项目,并通过 gcloud config set project <project-id> 来更改它。

    5.确保您拥有基于gcloud身份验证登录的GCloud凭据。

    6.确保您可以通过命令行启动一个GCE虚拟机。至少确保您可以实践GCE快速入门的创建实例部分。

    7.确保您在没有交互式提示符的情况下可以ssh连接到VM。参阅GCE快速入门登录实例部分。

    启动集群

    您可以使用下面任意一条命令(以防万一。我们列出了两个,以防您的机器上只安装了某一个)来安装客户端并启动集群:

    curl -sS https://get.k8s.io | bash

    或者

    wget -q -O - https://get.k8s.io | bash

    此命令完成后,会有一个master虚拟机和四个worker虚拟机作为Kubernetes集群来运行。

    默认情况下,一些容器已经运行在集群上。一些容器如kibana和elasticsearch提供日志记录,而heapster提供监控服务。

    上面提到的命令运行脚本创建一个名为或者前缀为“kubernetes”的集群。它定义了一个特定的集群配置,所以只能运行一次。

    或者,您可以从这个页面下载并安装最新的Kubernetes 发行版,然后运行/cluster/kube-up.sh脚本来启动集群:

    cd kubernetescluster/kube-up.sh

    如果您想在项目中运行不止一个集群,想使用不同的名字或者不同数量的工作节点,在启动集群之前参见 /cluster/gce/config-default.sh文件来进行更细粒度的配置。

    如果您遇到问题,请参见故障排除章节,给Google容器组发邮件或者在IRC freenode的

    #google-containers频道提问。

    接下来的几个步骤将向您展示:

    1.如何在您的工作站上安装命令行客户端来管理集群

    2.如何使用集群的一些示例

    3.如何删除群集

    4.如何启动使用非默认选项的集群(如更大的集群)

    在您的工作站中安装Kubernetes命令行工具

    集群启动脚本会在工作站中留下一个正在运行的集群和一个kubernetes目录。下一步是要确保kubectl工具是在您的path中。

    该kubectl工具控制Kubernetes集群管理器。它可以让您检查集群资源,创建、删除和更新组件以及更多功能。您会用它来查看新集群并生成示例应用程序。 添加适当的二进制文件夹到您的path中以便可以访问kubectl:

    # OS X
    export PATH=<path/to/kubernetes-directory>/platforms/darwin/amd64:$PATH#
    Linux
    export PATH=<path/to/kubernetes-directory>/platforms/linux/amd64:$PATH

    注:gcloud还附带kubectl,默认情况下被添加到您的path中。然而,gcloud所捆绑的kubectl版本可能会比通过get.k8s.io安装脚本下载的版本旧。我们建议您使用下载的二进制文件,以避免与客户机/服务器版本偏差所带来的潜在问题。

    为bash配备Kubernetes命令行工具自动补全

    您会发现让kubectl自动补全非常有用:

    $ source ./contrib/completions/bash/kubectl

    注:这种补全会在您的bash会话一直有效,如果您想要它永久有效,您需要在bash profile中添加这一行。 另外的一个选择,在大多数linux发行版中,您也可以像下面这样复制完整的文件到您的 bash_completions.d :

    $ cp ./contrib/completions/bash/kubectl /etc/bash_completion.d/

    但是,你在更新kubectl的时候也要更新它。

    启动您的集群

    监控您的集群

    一旦kubectl在您的path中,您就可以用它来查看您的集群。也就是运行:

    $ kubectl get --all-namespaces services

    应该会显示一组服务,看起来像这样:

    同样,您可以查看在集群启动时创建的pod。您可以这样做:

    $ kubectl get --all-namespaces pods

    您会看到如下所示的pod列表(名字细节会有所不同):

    NAMESPACE NAME READY STATUS RESTARTS AGE
    kube-system fluentd-cloud-logging-kubernetes-minion-63uo 1/1 Running 0 14m
    kube-system fluentd-cloud-logging-kubernetes-minion-c1n9 1/1 Running 0 14m
    kube-system fluentd-cloud-logging-kubernetes-minion-c4og 1/1 Running 0 14m
    kube-system fluentd-cloud-logging-kubernetes-minion-ngua 1/1 Running 0 14m
    kube-system kube-dns-v5-7ztia 3/3 Running 0 15m
    kube-system kube-ui-v1-curt1 1/1 Running 0 15m
    kube-system monitoring-heapster-v5-ex4u3 1/1 Running 1 15m
    kube-system monitoring-influx-grafana-v1-piled 2/2 Running 0 15m

    一些pod启动时可能会花费数秒(在此期间,它们会显示为挂起状态),但是在一小段时间后再次检查,它们就都是运行状态了。

    运行一些例子

    然后,通过一个简单的nginx示例来拿新的集群练练手。 想要了解更多完整的应用程序,请查看示例目录。该Guestbook示例就是一个很好的“入门”演练。

    拆除集群

    使用kube-down.sh脚本来移除/删除/拆除集群:

    cd kubernetes
    cluster/kube-down.sh

    同样地,同一目录下的kube-up.sh会做好备份。您无需重新运行curl或wget命令:安装Kubernetes集群所需要的一切都已在您的工作站中就绪。

    定制集群

    上面的脚本依赖于Google存储来暂存Kubernetes发行版。然后,它会启动(默认)单个master虚拟机以及4个worker虚拟机。您可以通过编辑kubernetes/cluster/gce/configdefault.sh来调整一些参数,您可以在这里查看集群创建成功的记录。

    故障排除

    项目设置

    您需要启用谷歌云存储API和谷歌云存储JSON API,新项目是默认启用的。如果没有启用,可以在谷歌云控制台完成。更多详情请参阅谷歌云存储JSON API

    正如前提条件部分所列那样,还要确保地是,您已经启用计算引擎实例组管理器API,并且能够根据GCE快速入门中的指导那样,从命令行中启动一个GCE虚拟机。

    集群初始化挂起

    如果Kubernetes启动脚本挂起并等待API可用,您可以通过ssh方式连接到主虚拟机和节点虚

    拟机来查看日志如:

    /var/log/startupscript.log

    一旦您解决了这个问题,在再次尝试运行kube-up.sh之前 ,您应该在部分集群创建后运行kube-down.sh来做一下清理。

    SSH

    如果您无法通过SSH连接到您的实例,请确保GCE防火墙没有屏蔽虚拟机的22端口。默认情况下,是可以正常连接到实例的,但是,如果您编辑了防火墙规则或者创建了一个新的非默认的网络,您需要将其暴露:

    gcloud compute firewall-rules create default-ssh --network=<network-name> --description "SSH allowed

    此外,您的GCE SSH密钥必须要么没有密码,要么需要使用ssh-agent。

    网络通信

    该实例必须能够使用自己的私有IP连接到对方。该脚本使用“默认”网络,该网络有一个被称为“default-allow-internal”的防火墙规则,它允许私有IP地址上的任何端口跑流量。如果这个规则在默认网络中缺失或者您修改了在cluster/config-default.sh中正在使用的网络,那么使用下面的字段值创建一个新的规则:

    • Source Ranges:10.0.0.0/8
    • Allowed Protocols and Port:tcp:1-65535;udp:1-65535;icmp
  • 相关阅读:
    [转]WordPress 主题教程 #2:模板文件和模板
    [转]经验分享:微信小程序外包接单常见问题及流程
    [转]为什么软件开发,人多,事少,还会工作量大?
    [转]Reporting Service部署之访问权限
    [转]SQL Server 2008 如何配置报表管理器
    [转]Reporting Services 中的身份验证类型
    [转]Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录
    [转]EasyUI 日期格式
    chartjs
    [转]分布式中Redis实现Session终结篇
  • 原文地址:https://www.cnblogs.com/guarderming/p/12876775.html
Copyright © 2011-2022 走看看