百道数据招聘: 运维工程师、架构师、商务。请发简历至 contact@baiadoadata.com

Blog

创建你的第一个GKE集群

Uncategorized

创建你的第一个GKE集群

【GKE简介】

GKE是谷歌推出的K8S的集群管理平台。目前推出了两种管理模式,分别是:

  • 标准模式
  • Autopilot模式

标准集群架构图如下:

其中蓝色部分为GKE为我们管理的部分,用户无需关注,在标准模式下,用户只需要管理node节点和pod。也就是黄色部分的内容。

Autopilot模式

对于 AutoPilot 模式的集群,GKE会管理集群的整个底层基础架构,包括控制层面、节点和所有系统组件。用户只需要管理自己的业务pod。

【概念回顾】

在我们使用GKE平台之前,我们先简单回顾一下几个概念,这样可以帮助我们更快地上手GKE平台。

pod

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。这些容器共享存储、网络、以及怎样运行这些容器的声明。

每一个 Pod 被分配一个独立的 IP 地址。Pod 中的所有容器共享一个网络名称空间

  • 同一个 Pod 中的所有容器 IP 地址都相同
  • 同一个 Pod 中的不同容器不能使用相同的端口,否则会导致端口冲突
  • 同一个 Pod 中的不同容器可以通过 localhost:port 进行通信

deployment

Deployment(简称deploy) 是最常用的用于部署无状态服务的方式。Deployment 控制器使得您能够以声明的方式更新 Pod(容器组)和 ReplicaSet(副本集)。

ReplicaSet

ReplicaSet(简称rs)的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的Pod 的可用性。

service

service是一组具有相同功能pod的集合。

Kubernetes 中 Pod 是随时可以消亡的(节点故障、容器内应用程序错误等原因)。如果使用 Deployment 运行您的应用程序,Deployment 将会在 Pod 消亡后再创建一个新的 Pod 以维持所需要的副本数。每一个 Pod 有自己的 IP 地址,然而,对于 Deployment 而言,对应 Pod 集合是动态变化的。

这个现象导致了如下问题:

  • 如果某些 Pod为另外一些Pod提供接口,由于Pod 集合不断变化(IP 地址也跟着变化)的情况下,调用接口的Pod如何才能知道应该将请求发送到哪个 IP 地址?

Service 存在的意义,就是为了解决这个问题。

ingress

Ingress 可为 Service 提供外部可访问的 URL、负载均衡流量、终止 SSL/TLS,以及基于名称的虚拟托管。Ingress 控制器 通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置边缘路由器或其他前端来帮助处理流量。

Ingress 不会公开任意端口或协议。将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的 Service。

下面是一个将所有流量都发送到同一 Service 的简单 Ingress 示例:

【创建集群】

这里开始将为大家介绍如何创建GKE集群。

准备工作

  1. 创建VPC

提前创建好所在地域的VPC。过程就不再详解。

创建集群

  • 进入到Kubenetes Engine控制台,点击【创建】-【选择GKE Autopilot】-【配置】。如下图所示:
  • 配置集群信息

【名称】—first-gke

【区域】—asia-east2

【网络访问】 —公共集群

【网络】—gke-hk-vpc1

配置如上图,最后点击创建。整个集群的创建大概需要5-7分钟的样子。出现这样的界面,我们的集群就创建成功了。

【部署deployment】

点击【工作负载】—【部署】

选择默认【nginx镜像】,点击【完成】

【应用名称】—nginx-1

【命名空间】—demo

【集群】 —first-gke

最后点击【部署】

稍等几分钟即可完成部署。如下图所示:

【创建service】

点击【操作】—【公开】

端口映射

端口1:映射出去的端口

目标端口1:容器服务的端口。如果容器端口和映射端口一致,那么我们这里可以不用填写。由于我们使用的是nginx镜像,都是跑在80端口的,所以这里不用填写。

服务公开类型

-集群IP(Cluster IP)

-节点端口(NodePort)

-负载均衡器(LoadBlancer)—GKE默认service类型

这里我们选择【节点端口】,点击【公开】即可创建service。新创建好的service如下图:

现在服务创建好,我们还是不能访问我们部署的容器的。需要再创建ingress才可以。

创建ingress

点击【Service和Ingress】,选中创建的service,点击【创建INGRESS】

配置ingress如下图

在【Host and path rules】里面,填上我们的域名【demo.baidaodata.com】,path2填上【/*】,Backends2选上我们创建的service名称【nginx-1-xfb8r】。最后点击【CREATE】,稍等片刻即可创建成功。

创建成功之后,可以看到这里有个外网IP。这个ip就是刚刚创建的ingress的外网ip。我们把刚好配置的域名【demo.baidaodata.com】解析到这个ip,即可访问我们部署好的pod。

【测试】

浏览器输入域名【demo.baidaodata.com】,访问页面如下

【结语】

GKE给我们提供了一个开箱即用的k8s平台。让我们不需要把精力放在部署和维护上面。让用户更专注业务本身的事情,而非维护上面。两种维护模式,让我们更快、更便捷地体验云原生应用。

Leave your thought here

您的电子邮箱地址不会被公开。 必填项已用*标注