创建你的第一个GKE集群
创建你的第一个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集群。
准备工作
- 创建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平台。让我们不需要把精力放在部署和维护上面。让用户更专注业务本身的事情,而非维护上面。两种维护模式,让我们更快、更便捷地体验云原生应用。