使用GKE集群:实用指南

什么是GKE集群?

谷歌Kubernetes引擎(GKE)集群管理Kubernetes环境由谷歌提供云平台(GCP),允许您部署、管理和使用Kubernetes规模集装箱应用程序。GKE集群由一个主节点和多个工作节点上运行Google云计算实例。

这是一个系列文章的一部分关于谷歌Kubernetes引擎。
本文简介:

  • GKE集群架构
  • 如何创建一个GKE集群
    • 步骤1:选择一个壳
    • 步骤2:创建集群
    • 步骤3:集群的身份验证凭证
  • 如何升级GKE集群
    • 选项1:滚动更新
    • 选项2:迁移与节点池

GKE集群架构

GKE集群的体系结构包括控制平面、节点,连接谷歌云服务。

控制飞机是集中管理系统,提供了API服务器、资源控制、调度程序和存储服务。的前端API服务器充当Kubernetes API,允许用户与集群交互。资源控制管理Kubernetes资源(如豆荚和服务,并确保集群的期望状态。雷竞技rabet官网调度器调度豆荚在节点基于资源可用性和约束。存储服务提供持久性存储的集群。

节点是工人的机器运行的应用用户的集装箱作为豆荚。这些节点可以是虚拟机或物理机器,根据用户的配置。每个节点运行容器运行时和kubelet代理,这与控制平面管理节点的通信资源。雷竞技rabet官网

连接谷歌云服务包括VPC网络、持久的磁盘,负载均衡器,谷歌云操作。VPC网络提供安全及私人集群中的节点和服务之间的通信。持续的磁盘提供持久性存储集群的节点和豆荚。负载平衡器分配流量的节点,并为应用程序提供高可用性。谷歌云业务为集群提供了集成的监控和日志记录。

图片来源:谷歌云

GKE自动处理的基础设施管理,这意味着谷歌云负责底层基础设施,如计算实例和负载平衡器,并允许开发人员专注于部署他们的应用程序和服务。这个特性也保证了集群的高可用性,安全,和成本效益。

如何创建一个GKE集群

您可以创建一个GKE集群之前,您需要确保Kubernetes引擎API启用。你可以在谷歌云控制台中,Kubernetes引擎。您选择或创建你的谷歌云项目和检查账单是否支持该项目。

步骤1:选择一个壳

您可以使用一个本地shell或云壳,这是一个Google-hosted shell环境,让它更容易管理资源。雷竞技rabet官网它有两个内置命令行工具:gcloudkubectl。第一个CLI是谷歌的云,而第二个是Kubernetes。如果你选择使用一个本地shell,您需要安装这些CLI工具在这个环境。

步骤2:创建集群

GKE集群必须至少有一个主和几个工人(节点),这是计算引擎VM实例用于运行Kubernetes流程。你可以将应用程序部署到集群,他们将在节点上运行。

你可以使用这个命令创建一个单节点集群:
gcloud容器集群创建示例集群——num-nodes = 1

步骤3:集群的身份验证凭证

一旦您创建了集群,需要身份验证凭证,使交互。使用下面的命令来配置kubectl使用指定的集群,在这种情况下,示例集群:
us-central1 gcloud容器集群将凭证autopilot-cluster-1——区域

如何升级GKE集群

您需要更新主节点(或主人)和节点集群升级GKE时。主人必须更新才能更新节点。您可以使用Kubernetes引擎自动升级主机只要有一个发布点,但它通常不会执行自动升级版本(例如,从1.7到1.8)。如果你想集群升级到新版本,去Kubernetes引擎控制台和选择升级主

然而,这将打开一个警告,改变主机的版本可能会导致几分钟的停机时间,当你无法编辑的集群控制飞机。在主升级,服务和部署将继续正常运行,但操作需要Kubernetes API——包括kubectl——将停止工作。同样,它不可能通过API应用程序检索信息。

可以升级的工人不会造成停机时间节点控制飞机。有两种方法:使用节点池滚动更新和迁移。

选项1:滚动更新

最简单的方法与滚动更新更新Kubernetes节点。这是Kubernetes引擎的默认更新机制。它通过排水和快刀斩乱麻节点一次。只有一次没有更多的在一个节点上运行豆荚并更新滚动到下一个节点。Kubernetes创建一个新的、更新节点每个节点后删除。滚动更新仍在继续,直到所有节点升级到新版本。

Kubernetes引擎可以自动管理这个过程如果你启用自动节点更新节点池。否则,您将看到仪表盘上Kubernetes引擎警报警报升级时是可用的。

图片来源:谷歌

推出滚动更新,点击链接,按照提示。重要的是要确保pods不是独立的,因为Kubernetes引擎会注意安排这些。您可以使用部署、StatefulSet或ReplicaSet来管理这些豆荚。

滚动更新的缺点

尽管实现滚动更新的缓解与Kubernetes引擎,它可能不是最优的选择,因为你失去了一个节点的能力在更新。您可以通过扩大解决这个节点池升级完成时再还原能力。

一个完全自动化的滚动更新的另一个缺点是你放弃一些控制升级过程。它可以花时间回滚到一个旧版本,当你遇到一个问题,因为你必须停下来撤销滚动更新。

选项2:迁移与节点池

或者,您可以建立一个新的节点池更新GKE集群没有还原能力或造成停机时间。这种方法并不能阻止活跃节点同时更新它们。相反,你等到所有节点在一个新节点池运行工作负载迁移之前。

例如,Kubernetes集群可能有四个活跃的vm。使用kubectl得到节点命令查看:

姓名身份年龄gke-cluster-1-original-pool-5b4f78de-0a6b准备2 h gke-cluster-1-original-pool-5b4f78de-9zxm准备2 h gke-cluster-1-original-pool-5b4f78de-y6gt准备2 h gke-cluster-1-original-pool-5b4f78de-h2b1准备2 h

步骤1:创建一个新节点池

您可以使用下面的命令来创建一个新节点池新游泳池:

gcloud容器node-pools创建新游泳池——地区us-central1-c集群示例集群

接下来,您可以查看节点再次看到四个节点与新名称:

姓名身份年龄gke-cluster-1-new-pool-8ca14ab7-3nma准备2 m gke-cluster-1-new-pool-8ca14ab7-6v5x准备2 m gke-cluster-1-new-pool-8ca14ab7-4gg2准备2 m gke-cluster-1-new-pool-8ca14ab7-v9c1准备2 m gke-cluster-1-original-pool-5b4f78de-0a6b准备2 h gke-cluster-1-original-pool-5b4f78de-9zxm准备2 h gke-cluster-1-original-pool-5b4f78de-y6gt准备2 h gke-cluster-1-original-pool-5b4f78de-h2b1准备2 h

注意,豆荚保持最初的节点上,所以你必须转移。

步骤2:把豆荚新池

你可以移动的节点一次拨打电话和删除吊舱从旧的节点。一旦封锁了一个节点,Kubernetes不能安排新豆荚。使用这个命令:

kubectl警戒线

当你拉起警戒线,把所有的原始节点,您可以删除的豆荚Kubernetes将自动重新安排他们到你的新节点。拉起警戒线,豆荚只能安排在新节点上。同样,您必须确保pods管理ReplicaSet, StatefulSet,或部署等。

删除节点的豆荚,使用以下命令:

kubectl排水 ——力ignore-daemonsets

你应该检查新豆荚在新节点上运行一旦你旧的节点。走你可以继续下一个节点,直到你全部覆盖。

第三步:回滚更改(可选)

迁移过程中如果有问题,你可以uncordon老池中的节点允许Kubernetes时间表豆荚回他们。然后您可以移动吊舱被隔离和排水新节点;pods将改期在旧的节点池。一旦你确认问题的原因,你可以再试一次。

第四步:删除旧的节点池

当你有新节点上重新安排你所有的豆荚池和没有问题,您可以安全地删除旧的。一旦他们安全地改期,是时候删除旧的池。例如:

gcloud容器node-pools删除original-pool——美国中央区域集群示例集群

现在所有节点成功更新!

运行您的GKE集群由NetApp现货

的来龙去脉Kubernetes可能是复杂的,但操作GKE和其他Kubernetes引擎不一定是困难的。有一个清晰的理解Kubernetes架构和成本在任何时候为你的组织带来成功和更少的头痛为你的工程技术人员,这样你就可以专注于你的工作负载,而不是你的基础设施。

确保可用性和优化Kubernetes成本与海洋。演示或注册一个免费试用

Baidu
map